Hallo an alle,
ich habe eine externe 2TB Festplatte mit defekten Sektoren hier. Die Daten sind alle bereits gerettet und die Festplatte lag schon länger in der Schublade.
Nun würde ich gerne etwas damit experimentieren. Unter anderem würde ich gerne sehen, ob man die Festplatte tatsächlich noch nutzen kann, wenn man die badblocks für die Partition bestimmen lässt und bei der Erstellung des ext4-Dateisystems angibt. Bzw. das eleganterweise direkt von mkfs.ext4 erledigen lässt:
# ext4 anlegen mit badblocks (nur lesen)
mkfs.ext4 -c /dev/sdb1
# ext4 anlegen mit badblocks (destruktiver Test)
mkfs.ext4 -cc /dev/sdb1
Das Ganze ruft im Prinzip badblocks auf, und zwar mit 4k-Blöcken (in diesem Fall). So ungefähr würde ich es direkt aufrufen:
badblocks -b 4096 -o sdb1.badblocks /dev/sdb1 # nur lesen
badblocks -n -b 4096 -o sdb1.badblocks /dev/sdb1 # auch schreiben (nicht-destruktiv)
badblocks -w -b 4096 -o sdb1.badblocks /dev/sdb1 # schreiben (destruktiv), mehrere Checks
Aber das dauert alles sehr lange. *Ewig*. Ich vermute bei einem solchen Gerät kann das schon mal mehrere Tage dauern.
Meine Frage ist also: Kennt ihr eine schnellere Lösung, die badblocks des Gerätes zu ermitteln?
Der Clou: Ich bin bereit, einen Kompromiss einzugehen. Ich hätte kein Problem damit, von badblocks ganze 256k oder 1024k Blöcke aufzuspüren und als defekt zu markieren - selbst wenn dort nur ein paar 4k Blöcke defekt sind. Die defekten Blöcke treten ja in Gruppen auf, also wäre es nicht schlimm ein paar Blöcke zu verlieren.
So etwas Ähnliches habe ich damals schon mit dd_rescue gemacht. Hier konnte man einfach 2 Sektorgrößen angeben – eine für den Erfolgsfall und eine für den Fehlerfall. Und da kann man tatsächlich auch eine badblocks-Datei schreiben lassen!
dd_rescue -o sdb1.badblocks -b 256k -B 256k /dev/sdb1 /dev/null
Allerdings sind die Zahlen etwas unterschiedlich zu denen die ich mit badblocks ermittelt habe. Und obwohl der Umrechungsfaktor zwischen 4k und 256k gleich 64 ist, komme ich damit nicht auf die gleichen Zahlen.
Nun seid ihr gefragt: wie geht's am schnellsten? Am besten?
Ich denke dem einen oder anderen könnte die Antwort in der Zukunft auch mal weiterhelfen. :-)
Vielen Dank im Voraus & beste Grüße
Marc Reichelt || http://www.marcreichelt.de/
DPRINTK("Last time you were disconnected, how about now?");
linux-2.6.6/drivers/net/tokenring/ibmtr.c