fsck: Optionen für die gründlichste Festplattenprüfung

12

Ich habe eine Festplatte mit einem bekannten Problem (ich weiß, weil dd Gags, wenn ich versuche, sie zu klonen). Aber wenn ich mit einer Live-CD boote und fsck auf der nicht gemounteten Partition ausführe, erhalte ich Folgendes:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf1
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
/dev/sdf1: clean, 227091/9625600 files, 12789815/38497756 blocks

eine Millisekunde später. Es ist kaum zu glauben, dass die gesamte Festplatte in einer ms ausgecheckt wurde.

Ich bin mir auch nicht sicher, ob ich sdf1 oder die gesamte physische Festplatte sdf fscken soll. Wenn ich das gesamte Laufwerk ausprobiere:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext2: Device or resource busy while trying to open /dev/sdf
Filesystem mounted or opened exclusively by another program?

Was ich nicht verstehe, weil keine der Partitionen gemountet zu sein scheint (ich habe gerade von einer Live-CD gebootet und den Befehl ausgeführt).

Meine grundlegende Frage lautet also: Wie kann ich fsck (oder ein anderes Tool, das möglicherweise besser funktioniert) dazu bringen, mehr als eine Millisekunde mit der Analyse meiner Problemdiskette zu verbringen?

Fred Hamilton
quelle

Antworten:

14

Zunächst einmal haben Sie Recht, wenn Sie fsck auf der Partition ausführen - fsck funktioniert nur auf Dateisystemen, nicht auf ganzen Festplatten. Sie können eine Liste aller Partitionen auf der Festplatte mit abrufen fdisk -l /dev/sdd.

Ihr Dateisystemtyp ist wahrscheinlich ext3 (die Standardeinstellung in den meisten Linux-Distributionen), was bedeutet, dass normalerweise ein fsck übergeben wird, solange das Journal sauber ist. fsck -fwird, wie oben erwähnt, eine vollständige Überprüfung erzwingen.

Wenn Sie jedoch Lesefehler auf der Festplatte haben, hilft keine Menge fsck dd - da sich dd wirklich nicht um den Inhalt der Festplatte kümmert.

Verwenden Sie diese Option, um dd zum Lesen der Festplatte und zum Fortfahren bei Lesefehlern dd conv=noerror,synczu bewegen. Bei Lesefehlern werden Nullbytes an jeden Block angehängt.

Nachdem Sie die Sicherung abgeschlossen haben, sollten Sie fsck -fden Klon ausführen , um ihn wieder zum Laufen zu bringen.

Ein weiterer Tipp: Wenn Sie die Partition in einer Datei sichern, können Sie sie mit einem Loopback bereitstellen mount -o loop filename.ext3 /mountpoint. Angenommen, Sie klonen eine 200G-Partition auf ein 500G-Laufwerk. Anschließend können Sie ausführen resize2fs /dev/sdx1(wobei sdx Ihr neues Laufwerk ist, das mit einer einzelnen 500G-Partition partitioniert ist), und die Größe des Dateisystems wird auf 500G geändert.

Wenn die Festplatte so geformt ist, dass Sie Lesefehler erhalten, sollten Sie das Aus- und Einschalten der Festplatte vermeiden, bis Sie mit der Wiederherstellung der Daten fertig sind. In einigen Fehlermodi wird die Festplatte irgendwann einfach nicht mehr hochgefahren oder vom Betriebssystem nicht mehr erkannt, und zu diesem Zeitpunkt wird das Abrufen von Daten aus dem Laufwerk recht teuer.

Kristian
quelle
Ich habe "dd conv = noerror, sync" versucht, aber die resultierende geklonte Festplatte war nicht bootfähig. Was frustrierend ist, weil die Bootdiskette gut läuft, fscks gut, aber ich kann sie nicht auf eine andere Festplatte klonen, weil die Festplatte 1 fehlerhaften Block hat (wo anscheinend keine Daten vorhanden sind). Ich scheine festzustecken ...
Fred Hamilton
Vergessen Sie nicht, dass es andere Gründe geben kann, warum die Festplatte nicht bootfähig war (unterschiedliche Probleme mit der Festplattengeometrie und dem MBR / Bootloader). Wenn Sie zuerst bestätigen können, dass das Dateisystem auf der neuen Festplatte in Ordnung ist, können Sie das System im Rettungsmodus von der Installations-CD starten, den GRUB-Bootloader aktualisieren usw. Dh. Führen Sie zuerst fsck -f / dev / sdx1 aus und versuchen Sie dann, das Dateisystem mit mount / dev / sdx1 / mnt zu mounten. Ersetzen Sie das x durch den entsprechenden Laufwerksbuchstaben.
Kristian
Ausgezeichneter Vorschlag, aber als ich fsck -f auf der geklonten Partition ausführte, bekam ich buchstäblich Hunderte von Fehlern (unzulässige Blöcke in Inodes, auf einem Dateisystem ohne Komprimierungsunterstützung gesetzte Kompressionsbits, fehlerhafte erweiterte Attributblöcke usw.), bevor ich zugab, dass der dd Klon war total abgespritzt ... Ich bin mir nicht sicher, was ich als nächstes tun soll ... Ich nehme an, ich werde versuchen, einfach alle Dateien auf eine saubere Partition zu kopieren ... Trotzdem danke.
Fred Hamilton
4
Es ist besser, ddrescue (oder dd_rescue + dd_rhelp) als dd zu verwenden. Es ist klüger, Fehler zu behandeln und fehlerhafte Sektoren erneut zu versuchen. gnu.org/software/ddrescue/ddrescue.html kalysto.org/utilities/dd_rhelp/index.en.html garloff.de/kurt/linux/ddrescue
freiheit
1
Die gründlichste Festplattenprüfung (wobei alle Korrekturen nach Möglichkeit automatisiert werden) für die Root-Partition ext2, ext3 oder ext4 wird wie folgt ausgeführt: (1) Booten von Rettungsmedien (Root-Partition muss nicht gemountet sein), (2) Ausführen e2fsck -f -cc -D -p. Dies führt zu einer erzwungenen Überprüfung mit zerstörungsfreier Lese- / Schreibprüfung für die Medien und repariert alle gefundenen Probleme, die sicher behoben werden können. Es kann ein paar Tage dauern, bis eine 2-TB-Festplatte ...
Mikko Rantalainen
10

Dies mag in Ihrem Fall nicht relevant sein, aber ich dachte, ich würde es trotzdem erwähnen:

Für eine Überprüfung der Festplatte auf niedrigerer Ebene können Sie das badblocksDienstprogramm verwenden. Es geht durch ein Gerät und meldet fehlerhafte Blöcke (es kann natürlich nichts reparieren). Zumindest ist dies nützlich, um zu überprüfen, ob eine Festplatte physisch beschädigt ist.

Außerdem e2fsckverwenden kann , badblocksum fehlerhafte Blöcke zu vermeiden , indem ein Dateisystem verwendet werden. Aus dem e2fsckHandbuch:

  -c     This option causes e2fsck to use badblocks(8) program to do a  read-
         only scan of the device in order to find any bad blocks.  If any bad
         blocks are found, they are added to the bad block inode  to  prevent
         them from being allocated to a file or directory.  If this option is
         specified twice, then the bad block scan will be done using  a  non-
         destructive read-write test.
Jonik
quelle
Beachten Sie auch, fsck_hfs -sdass nach fehlerhaften Blöcken gesucht wird.
Awiebe
5

Sie möchten, dass die Option -f fsck (Überprüfung erzwingen, auch wenn das Dateisystem sauber erscheint.)

Sie sollten fsck im Einzelbenutzermodus ausführen. Eine einfache Möglichkeit, dies ohne einen Live-CD-ROM-Start zu tun, besteht darin, mit der Option -F neu zu starten.

shutdown -rF now 
Richard Hoskins
quelle
Danke, aber eine Frage: Wenn ich mit der Option -F unter Verwendung einer Live-CD neu starte, woher weiß die Live-CD, dass sie die Prüfung ausführen sollte? Es ist eine CD, es hat kein Gedächtnis, das mir bekannt ist ...
Fred Hamilton
Ich glaube nicht, dass Sie das von der Live-CD aus tun müssen. Booten Sie einfach von der Live-CD und führen Sie fsck auf der nicht gemounteten Partition mit der Option -f (force) aus. ODER Sie können mit shutdown -rF von Ihrer Festplatte neu starten. Dadurch wird ein fsck erzwungen, bevor das Dateisystem bereitgestellt wird.
Richard Hoskins
Tatsächlich wird das fsck im Einzelbenutzermodus ausgeführt. Ich habe meine Antwort bearbeitet.
Richard Hoskins
1
Die -FFlagge für shutdownist normalerweise nicht offiziell dokumentiert (siehe man shutdownund shutdown --helpbeachten Sie, dass sie nicht vorhanden ist), sodass Sie nicht darauf vertrauen können, dass sie funktioniert. Manchmal ist es ein No-Op. Offiziell ist die einzige Methode zum Scannen der Root-Partition das Booten von alternativen Medien.
Mikko Rantalainen