Das WD15EARS-Laufwerk (und die meisten anderen kürzlich produzierten Laufwerke) verwendet das Advanced Format. Dies bedeutet, dass die tatsächliche physische Sektorgröße dieses Laufwerks 4 KiB beträgt und die herkömmliche 512-Byte-Sektorgröße nur emuliert wird. Wenn ein physischer 4-KiB-Sektor fehlerhaft wird, werden alle 8 entsprechenden emulierten 512-Byte-Sektoren auf einmal unlesbar.
(Die Sector Size: 512 bytes logical/physical
Ausgabe von smartctl
ist nicht korrekt, da einige WD15EARS-Laufwerke falsche physikalische Sektorgröße melden - anscheinend hat Ihr Laufwerk eine Firmware-Version, die in dieser Hinsicht defekt ist.)
Wenn ein einzelner emulierter 512-Byte-Sektor geschrieben wird, muss das Advanced-Format-Laufwerk außerdem den gesamten physischen 4-KiB-Sektor lesen, den entsprechenden 512-Byte-Teil ändern und dann den gesamten physischen Sektor auf das Medium schreiben. Wenn das Medium einwandfrei ist, führt dieser Vorgang zum Lesen, Ändern und Schreiben zu einer erheblichen Verlangsamung im Vergleich zu einem Laufwerk mit echten physischen 512-Byte-Sektoren. Wenn der physische Sektor mit 4 KiB jedoch schlecht ist und nicht gelesen werden kann, schlägt jede Schreiboperation fehl, die den Sektor nicht vollständig neu schreibt. Aus diesem Grund können Sie die Sektor-Neuzuweisung auf solchen Laufwerken nicht mit dd
mit erzwingen. bs=512 count=1
Sie müssen mindestens verwenden bs=512 count=8
und sicherstellen, dass die Sektornummer in derseek=
Option ist ein Vielfaches von 8. (Dies setzt voraus, dass der Jumper "Windows XP-kompatibel" nicht installiert ist. Andernfalls muss auch der durch diesen Jumper hinzugefügte Ausrichtungsoffset berücksichtigt werden.)
Ein weiterer Grund für das Erzwingen der Neuzuweisung mit dem dd
Versagen ist möglicherweise, dass Linux standardmäßig einen Cache in der Blockschicht verwendet, um auf Blockgeräte zuzugreifen. Dies kann Lese-, Änderungs- und Schreibvorgänge in der Software verursachen, die ebenfalls fehlschlagen, wenn ein nicht lesbarer Sektor gefunden wird. Sie können die oflag=direct
Option hinzufügen, um diesen Cache für das angegebene Gerät zu umgehen of=...
(es gibt auch die iflag=direct
Option, die für das Eingabegerät gilt).