Hdparm/Schlechte Sektoren
Schlechte Sektoren schreiben/auslagern
- --read-sector
- --write-sector
- Als schlecht erkannte Sektoren einer Festplatte, benötigen erst einen Schreibvorgang, um letztendlich ausgelagert und von Spare-Sektoren ausgetauscht zu werden, sofern sich diese nicht durch neu geschriebene ECC-Summen korrigieren lassen. Da Tools wie GNU-DD standardmäßig auf Block-Ebene agieren (außer man setzt direct-Flags), brechen sie dabei mit einem I/O-Fehler ab. Badblocks z. B. ist da etwas hartnäckiger. Ist der problematische Sektor bekannt, kann mit hdparm nun versucht werden, diesen auf "low-level"-Ebene zu überschreiben. Leider ist es nicht möglich, ein anderes Bitmuster vorzugeben. Parallel sollte man die Kernel-Meldungen im Auge behalten, um alle ATA-Fehler mitzubekommen.
Vorlage:Hinweis Beispiel: Im SMART Selftest-log:
START OF READ SMART DATA SECTION
SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
- 1 Extended offline Completed: read failure 40% 55 713318
[...]
hdparm --read-sector 713318 /dev/sdd /dev/sdd: reading sector 713318: FAILED: Input/output error
Der ist wirklich hin. Nun der Schreibversuch:
hdparm --yes-i-know-what-i-am-doing --write-sector 713318 /dev/sdd /dev/sdd: re-writing sector 713318: succeeded
Der Sektor wurde anscheinend intern ersetzt und ist nun mit dem Inhalt des letzten Schreibvorganges gefüllt: Vorlage:RootShell Anmerkung: Die SMART Attribute und vieles mehr lässt sich mit dem smartmontools auslesen. Dazu unter Festplattendiagnostik- und Überwachung mehr.
Schlechte Sektoren erzeugen
- --make-bad-sector
- Zum Test von Hardware oder Überwachungsdiensten/systemen braucht man einen praktischen und doch kontrollierten Ernstfall, also einen Lesefehler der Festplatte. Der Befehl setzt entweder ein "WRITE_LONG" oder ein neues für LBA48 taugliches "WRITE_UNCORRECTABLE_EXT" Kommando ab, um den gegebenen Sektor auf der Festplatte zu korrumpieren. Ein "f" vor der Sektorzahl würde diesen nur als schlecht markieren, nicht wirklich korrumpieren. Beim Korrumpieren werden natürlich nur die ECC Daten des Sektors verfälscht und nicht die physische Oberfläche beschädigt. Somit lässt sich dieser beim nächsten beschreiben auch wieder reparieren. Selbstverständlich nutzt man dafür keine Festplatte mit produktivem Inhalt und Funktion, eher eine ausrangierte oder wenigstens ungenutzte. Denn der betroffene Sektor wird gelöscht und bei falscher Anwendung kann mehr passieren!
hdparm --yes-i-know-what-i-am-doing --make-bad-sector 100 /dev/sdc /dev/sdc: Corrupting sector 100 (WRITE_LONG): succeeded
Erst nach einem fehlgeschlagenen Leseversuch:
hdparm --read-sector 100 /dev/sdc /dev/sdc: reading sector 100: FAILED: Input/output error
So taucht die erwartete und gewünschte Meldung im Syslog auf bzw. die betreffenden SMART Attribute erhöhen sich:
ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 ata4.00: irq_stat 0x40000001 ata4.00: failed command: READ SECTOR(S) ata4.00: cmd 20/00:01:64:00:00/00:00:00:00:00/e0 tag 0 pio 512 in res 51/40:00:64:00:00/00:00:00:00:00/e0 Emask 0x9 (media error) ata4.00: status: { DRDY ERR } ata4.00: error: { UNC } ata4.00: configured for UDMA/133 ata4: EH complete
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 1
Anmerkung: Die SMART Attribute und vieles mehr lässt sich mit dem smartmontools auslesen. Dazu unter Festplattendiagnostik- und Überwachung mehr.