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

39638
Fred Hamilton

Ich habe eine Diskette mit einem bekannten Problem (ich weiß, weil dd gag, wenn ich versuche, es zu klonen). Wenn ich jedoch mit einer Live-CD boote und fsck auf der nicht gemounteten Partition starte, 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 schwer 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 sfs fsck'ing soll. Wenn ich das gesamte Laufwerk probiere:

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 ist also: Wie kann ich fsck (oder ein anderes Werkzeug, das möglicherweise besser funktioniert) dazu bringen, mehr als eine Millisekunde für die Analyse meiner Problemdiskette auszugeben?

10

3 Antworten auf die Frage

13
Kristian

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

Der Dateisystemtyp ist wahrscheinlich ext3 (die Standardeinstellung in den meisten Linux-Distributionen). Dies 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 an fsck, da dd sich wirklich nicht um den Inhalt der Festplatte kümmert.

Um zu erreichen, dass dd die Platte liest und mit Lesefehlern fortfährt, verwenden Sie dd conv=noerror,sync, die Lesefehler fortsetzt und bei einem Lesefehler Null-Bytes an jeden Block anhängt.

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

Noch ein Tipp: Wenn Sie die Partition in einer Datei sichern, können Sie sie mit Loopback einhängen mount -o loop filename.ext3 /mountpoint. Angenommen, Sie klonen eine 200G-Partition auf ein 500G-Laufwerk. Sie können dann ausführen resize2fs /dev/sdx1(wobei SDX Ihr neues Laufwerk ist, das mit einer einzelnen 500G-Partition partitioniert ist) und das Dateisystem auf 500G verkleinert wird.

Wenn sich die Festplatte in einer solchen Form befindet, dass Sie Lesefehler erhalten, wird empfohlen, dass Sie die Festplatte nicht aus- und wieder einschalten, bis Sie die Wiederherstellung der Daten abgeschlossen haben. In einigen Fehlermodi wird der Datenträger zu einem bestimmten Zeitpunkt einfach nicht mehr hochgefahren oder vom Betriebssystem nicht mehr erkannt, und an diesem Punkt wird das Abrufen von Daten aus dem Laufwerk recht teuer.

Ich habe "dd conv = noerror, sync" ausprobiert, aber die resultierende geklonte Festplatte war nicht startfähig. Was frustrierend ist, weil die Boot-Diskette gut läuft, fscks fein, aber ich kann sie nicht auf eine andere Diskette klonen, weil die Diskette 1 fehlerhaften Block hat (wo offenbar keine Daten vorhanden sind). Ich scheine festgefahren zu sein ... Fred Hamilton vor 14 Jahren 0
Vergessen Sie nicht, dass es möglicherweise andere Gründe gibt, warum die Festplatte nicht bootfähig war (andere Festplattengeometrie und MBR / Bootloader-Probleme). Wenn Sie zunächst 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 usw. aktualisieren. Führen Sie zuerst fsck -f / dev / sdx1 aus, und versuchen Sie dann, das Dateisystem mit mount / dev / sdx1 / mnt einzuhängen. Ersetzen Sie das x durch den entsprechenden Laufwerkbuchstaben. Kristian vor 14 Jahren 0
Ausgezeichneter Vorschlag, aber als ich fsck -f auf der geklonten Partition lief, bekam ich buchstäblich Hunderte von Fehlern (illegale Blöcke in Inodes, Komprimierungsbits, die ohne Komprimierungsunterstützung auf einem Dateisystem gesetzt wurden, schlechte erweiterte Attributblöcke usw.), bevor ich das DD einräumte Klon wurde total abgespritzt ... Nicht sicher, was als nächstes zu tun ist ... Ich werde versuchen, alle Dateien auf eine saubere Partition zu kopieren ... Trotzdem danke. Fred Hamilton vor 14 Jahren 0
Es ist besser, ddrescue (oder dd_rescue + dd_rhelp) als dd zu verwenden. Es ist klüger, Fehler zu behandeln und fehlerhafte Sektoren erneut auszuführen. http://www.gnu.org/software/ddrescue/ddrescue.html http://www.kalysto.org/utilities/dd_rhelp/index.en.html http://www.garloff.de/kurt/linux/ ddrescue / freiheit vor 14 Jahren 4
Die gründlichste Festplattenprüfung (wenn möglich mit allen automatisierten Korrekturen) für die root-Partitionen ext2, ext3 oder ext4 wird wie folgt ausgeführt: (1) Boot von Rettungsmedien (Root-Partition muss deaktiviert werden), (2) `e2fsck -f - ausführen cc -D -p`. Dies führt zu einer erzwungenen Prüfung mit einer zerstörungsfreien Lese- / Schreibprüfung für die Medien und behebt alle gefundenen Probleme, die sicher behoben werden können. Es kann einige Tage dauern, bis eine 2-TB-Festplatte ... Mikko Rantalainen vor 11 Jahren 1
Es ist verrückt, dass -f nicht einmal in der Manpage erwähnt wird Jeff Burdges vor 7 Jahren 0
7
Jonik

Dies ist in Ihrem Fall möglicherweise nicht relevant, aber ich dachte, ich würde es trotzdem erwähnen:

Für eine untergeordnete Festplattenprüfung können Sie das badblocksDienstprogramm verwenden. Es geht durch ein Gerät und meldet fehlerhafte Blöcke (es kann natürlich nichts repariert werden). Es ist zumindest 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. Vom 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. 
Beachten Sie auch, dass `fsck_hfs -s` nach fehlerhaften Blöcken sucht. awiebe vor 5 Jahren 0
5
Richard Hoskins

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

Sie sollten fsck im Einzelbenutzermodus ausführen. Ein einfacher Weg, dies ohne Live-CD-Boot zu tun, ist ein Neustart mit der Option -F.

shutdown -rF now 
Danke, aber eine Frage: Wenn ich mit der Option -F mit einer Live-CD einen Neustart durchführe, woher weiß die Live-CD, dass die Überprüfung durchgeführt werden sollte? Es ist eine CD, sie hat kein Gedächtnis, das mir bewusst ist ... Fred Hamilton vor 14 Jahren 0
Ich denke nicht, dass Sie das von der Live-CD aus tun müssen. Starten 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 aus einen Neustart durchführen. Dadurch wird ein Fsck erzwungen, bevor das Dateisystem eingehängt wird. Richard Hoskins vor 14 Jahren 0
Tatsächlich wird das fsck im Einzelbenutzermodus ausgeführt. Ich habe meine Antwort bearbeitet. Richard Hoskins vor 14 Jahren 0
Das `-F`-Flag für` shutdown` ist normalerweise nicht offiziell dokumentiert (siehe `man shutdown` und` shutdown --help` und beachten Sie, dass es nicht vorhanden ist). Sie können sich also nicht darauf verlassen, dass es funktioniert. Manchmal ist es ein No-Op. Offiziell ist die einzige Methode zum Scannen der Root-Partition das Booten von alternativen Medien. Mikko Rantalainen vor 11 Jahren 1