Ich habe ein Laufwerk, das meldet, dass die aktuell ausstehenden Sektoren "45" sind. Ich habe Badblocks verwendet , um die Sektoren zu identifizieren, und ich habe versucht, mit dd Nullen in sie zu schreiben .
Soweit ich weiß, sollte ein Versuch, Daten direkt in die fehlerhaften Sektoren zu schreiben, eine Neuzuweisung auslösen, die derzeit ausstehenden Sektoren um eins reduzieren und die Anzahl der neu zugewiesenen Sektoren erhöhen.
Auf dieser Festplatte sind jedoch sowohl die Rohwerte Reallocated_Sector_Ct als auch Reallocated_Event_Count 0, und dd schlägt mit E / A-Fehlern fehl, wenn ich versuche, Nullen in die fehlerhaften Sektoren zu schreiben. dd funktioniert jedoch gut, wenn ich an einen guten Sektor schreibe.
# dd if=/dev/zero of=/dev/sdb bs=512 count=1 seek=217152
dd: error writing ‘/dev/sdb’: Input/output error
Bedeutet dies, dass mein Laufwerk in irgendeiner Weise keine freien Sektoren für die Neuzuweisung hat? Ist mein Laufwerk im Allgemeinen eine schreckliche Person? (Die Fahrt gehört nicht mir, ich helfe einem Freund. Vielleicht haben sie gerade eine billige Fahrt bekommen oder so.)
Falls es relevant ist, ist hier die Ausgabe von smartctl -i :
Model Family: Western Digital Caviar Green (AF)
Device Model: WDC WD15EARS-00Z5B1
Serial Number: WD-WMAVU3027748
LU WWN Device Id: 5 0014ee 25998d213
Firmware Version: 80.00A80
User Capacity: 1,500,301,910,016 bytes [1.50 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Fri Oct 18 17:47:29 2013 CDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
UPDATE:
Ich habe shred
auf der Festplatte ausgeführt, wodurch Current_Pending_Sector auf Null gesetzt wurde. Reallocated_Sector_Ct und Reallocated_Event_Count sind jedoch immer noch Null, und dd kann jetzt Daten in die Sektoren schreiben, die zuvor nicht möglich waren. Dies führt mich zu mehreren anderen Fragen:
Warum werden die Neuzuweisungen nicht von der Festplatte wiederhergestellt? Ich gehe davon aus, dass die Neuzuweisung stattgefunden hat, da ich jetzt Daten direkt in den Sektor schreiben kann und vorher nicht konnte.
Warum hat Shred eine Neuzuweisung verursacht und nicht dd? Macht die Tatsache, dass Shred zufällige Daten anstelle von Nullen schreibt, einen Unterschied?
quelle
Uncorrectable Sector Count
mehr als null?Antworten:
Das WD15EARS-Laufwerk (und die meisten anderen kürzlich hergestellten Laufwerke) verwendet das erweiterte Format. Dies bedeutet, dass die tatsächliche physische Sektorgröße dieses Laufwerks 4 KB beträgt und die herkömmliche Sektorgröße von 512 Byte nur emuliert wird. Aus diesem Grund werden alle 8 entsprechenden emulierten 512-Byte-Sektoren auf einmal unlesbar, wenn ein einzelner physischer 4-KiB-Sektor ausfällt.
(Die
Sector Size: 512 bytes logical/physical
Ausgabe vonsmartctl
ist nicht korrekt, da einige WD15EARS-Laufwerke eine falsche Größe des physischen Sektors melden. Anscheinend verfügt Ihr Laufwerk über eine Firmware-Version, die in dieser Hinsicht fehlerhaft ist.)Wenn ein einzelner emulierter 512-Byte-Sektor geschrieben wird, muss das Advanced Format-Laufwerk tatsächlich den gesamten physischen 4-KB-Sektor lesen, den entsprechenden 512-Byte-Teil davon ändern und dann den gesamten physischen Sektor auf das Medium schreiben. Wenn das Medium gut ist, führt diese Lese-, Änderungs- und Schreiboperation nur zu einer erheblichen Verlangsamung im Vergleich zu einem Laufwerk mit echten physischen 512-Byte-Sektoren. Wenn der physische 4-KiB-Sektor jedoch fehlerhaft ist und nicht gelesen werden kann, schlägt jeder Schreibvorgang fehl, bei dem der Sektor nicht vollständig neu geschrieben wird. Aus diesem Grund können Sie nicht Sektor Neuzuteilung auf solche Antriebe zwingen Verwendung
dd
mitbs=512 count=1
- Sie mindestens verwenden müssen ,bs=512 count=8
und stellen Sie sicher , dass die Sektornummer in derseek=
Option ist ein Vielfaches von 8. (Dies setzt voraus, dass der „Windows XP-kompatible“ Jumper nicht installiert ist, andernfalls muss auch der von diesem Jumper hinzugefügte Ausrichtungsversatz berücksichtigt werden.)Ein weiterer Grund, warum das Erzwingen der Neuzuweisung mit
dd
fehlschlagen kann, besteht darin, dass Linux standardmäßig einen Cache in der Blockschicht verwendet, um auf Blockgeräte zuzugreifen. Dies kann zu Lese-, Änderungs- und Schreibvorgängen in Software führen, die auch fehlschlagen, wenn ein nicht lesbarer Sektor auftritt. Sie können dieoflag=direct
Option hinzufügen , diesen Cache für das von angegebene Gerät zu umgehenof=...
(es gibt auch dieiflag=direct
Option, die für das Eingabegerät gilt).quelle
Ich musste dies kürzlich tun und stellte fest, dass das Ausführen von Shred auf der gesamten Festplatte sehr gut funktionierte. Während Shred für seinen beabsichtigten Zweck außer auf Disketten unbrauchbar ist, tut es genau das, was erforderlich ist, um die Selbstheilung auf schlechten Blöcken in Gang zu bringen.
quelle