Zum Inhalt springen

Hdparm/Schlechte Sektoren

Aus Foxwiki
Version vom 14. Juni 2026, 00:46 Uhr von Dirkwagner (Diskussion | Beiträge) (Textersetzung - „ “ durch „ “)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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 beispielsweise 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. 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.