Richtiger Umgang mit beschädigten XFS-Dateisystemen

18

Ich hatte vor kurzem ein XFS-Dateisystem aufgrund eines Stromausfalls beschädigt. (CentOS 7-System). Das System konnte nicht ordnungsgemäß gestartet werden.

Ich habe von einer Rettungs-CD gebootet und versucht xfs_repair, die Partition zu mounten, um mit dem Protokoll fertig zu werden.

Ich habe die Partition gemountet und lsüberprüft, ob sie vorhanden ist. Ich habe die Partition abgemeldet und es xfs_repairerneut versucht und die gleiche Nachricht erhalten.

Was soll ich in dieser Situation tun? Stimmt etwas mit meiner Rettungs-CD (System Rescue CD, Version 4.7.1) nicht? Gibt es ein anderes Verfahren, das ich hätte anwenden sollen?

Am Ende habe ich einfach das System von Backups wiederhergestellt (in diesem Fall war es schnell und einfach), aber ich möchte gerne wissen, was ich in Zukunft tun soll.

Michael Kohne
quelle

Antworten:

19

Wenn Sie versuchen, xfs_repair auszuführen , die Fehlermeldung erhalten, dass das Dateisystem gemountet werden soll, um das Protokoll erneut abzuspielen, und nach dem Mounten immer noch dieselbe Fehlermeldung angezeigt wird, müssen Sie möglicherweise eine erzwungene Reparatur durchführen (mithilfe des -LFlags mit xfs_repair). Diese Option sollte ein letzter Ausweg sein.

Ich verwende beispielsweise einen Fall, in dem meine CentOS 7-Installation eine beschädigte Root-Partition enthielt. Beim Versuch, die Partition zu mounten, wurde ständig die folgende Fehlermeldung angezeigt:

mount: mount / dev / mapper / centos-root auf / mnt / centos-root fehlgeschlagen: Struktur muss gereinigt werden

Leider würde das Erzwingen einer Reparatur das Löschen (Zerstören) des Protokolls erfordern, bevor eine Reparatur versucht wird. Bei Verwendung dieser Methode können möglicherweise mehr Daten beschädigt werden als ursprünglich angenommen. Wir können jedoch die entsprechenden XFS-Tools verwenden, um festzustellen, welche Art von Schaden verursacht werden kann, bevor Sie dauerhafte Änderungen vornehmen.

Mit xfs_metadump und xfs_mdrestore können Sie ein Metadaten-Image der betroffenen Partition erstellen und die erzwungene Reparatur für das Image und nicht für die Partition selbst durchführen. Dies hat den Vorteil, dass Sie den mit einer erzwungenen Reparatur verbundenen Schaden erkennen können, bevor Sie ihn auf der Partition ausführen.

Dazu benötigen Sie ein USB-Gerät mit angemessener Größe oder eine externe Festplatte. Beginnen Sie mit dem Mounten des USB-Laufwerks - mein USB befand sich unter /dev/sdb1, Ihr Name kann anders lauten.

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

Nach dem Mounten führen Sie den Befehl aus xfs_metadump, um eine Kopie der Partitionsmetadaten auf dem USB-Stick zu erstellen. Auch hier kann die betroffene Partition unterschiedlich sein. In diesem Fall hatte ich eine beschädigte Root-Partition unter /dev/mapper/centos-root:

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

Als Nächstes möchten Sie die Metadaten in einem Image wiederherstellen, damit wir eine Reparatur durchführen und den Schaden messen können.

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

Ich habe festgestellt, dass im Rettungsmodus xfs_mdrestorenicht verfügbar ist, und stattdessen müssen Sie im Rettungsmodus einer Live-CentOS-CD sein.

Schließlich können wir die Reparatur am Image durchführen:

xfs_repair -L /mnt/usb/centos-root.img

Nachdem die Reparatur abgeschlossen ist und Sie die Ausgabe und den möglichen Schaden bewertet haben, können Sie bestimmen, ob Sie die Reparatur für die Partition ausführen möchten.

Um die Reparatur für die Partition auszuführen, führen Sie einfach Folgendes aus:

xfs_repair -L /dev/mapper/centos-root

Vergessen Sie nicht, auch die anderen Partitionen auf Beschädigungen zu überprüfen. Starten Sie nach den Reparaturen das System neu und Sie sollten in der Lage sein, erfolgreich zu starten.

Denken Sie daran, dass die -LFlagge als letzter Ausweg verwendet werden sollte, wenn keine anderen Reparaturmöglichkeiten bestehen.

Ich fand, dass diese Online-Artikel geholfen haben:

brendonofficial
quelle
OK, also -L ist ein letzter Ausweg, und dies sind AUSGEZEICHNETE Anweisungen, wie man sieht, wie schlimm es sein wird, wenn wir -L verwenden. Welche anderen Optionen habe ich außer -L?
Michael Kohne
1
@MichaelKohne Natürlich aus dem Backup wiederherstellen. Sie sollten nicht in die Nähe dieser Hölle kommen, es sei denn, Sie haben keine Backups.
Michael Hampton
1
@MichaelHampton - OK, fair genug. Aber ich glaube nicht, dass ich jemals ein Dateisystem wie dieses aufgrund von ext4-Fehlern bei Stromausfall verloren habe - ist xfs weniger belastbar? Oder hatte ich dieses Mal wirklich Pech?
Michael Kohne
@MichaelKohne Ich denke, Sie haben gerade außerordentlich Pech gehabt. XFS ist ein recht zuverlässiges Dateisystem.
Michael Hampton
3
Früher konnten wir das einfach von initrd aus tun. Was für wunderbare "Fortschritte" wir gemacht haben.
Florian Heigl
1

Ich hatte diesen Fehler, als Centos 7 in einer KVM-Virtual-Machine stoppte:

Beschädigung von Metadaten bei xfs erkannt ...

Wenn ich das Protokoll mit "journalctl -xe" verwende, habe ich einen Fehler beim Mounten festgestellt:

/ dev / mapper / root / sysroot

Ich löse es mit:

xfs_repair / dev / mapper / root

Dann führt das System die sieben Phasen durch und startet dann mit neu

./Herunterfahren

Und dann funktioniert die virtuelle Maschine Centos 7 gut ...

Grüße

Hinweis: Vielleicht haben Sie / dev / mapper / root einen anderen Namen. Sehen Sie sich bitte Ihr Fehlerprotokoll mit journalctl -xe an, um den Namen Ihres Geräts zu finden, das nicht korrekt installiert ist

Davidleosam
quelle