Marc Reichelt: (Linux)(ext4) badblocks für Partitionen schneller ermitteln

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
  1. Lieber Marc,

    ich hab' mich gerade einfach gefreut, von Dir zu lesen. :-)

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      ich hab' mich gerade einfach gefreut, von Dir zu lesen. :-)

      Stimmt - ist lange her! :)
      Bin mittlerweile in der Arbeitswelt angekommen. Und die ist doch schon sehr anders als die Studienzeit. Da verschieben sich einige Prioritäten, und schon geht man nur noch sehr selten ins SELFHTML Forum…

      Wie geht es dir? :)

      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