XFS

Reparieren eines XFS-Systems

Reparieren eines XFS-Systems
Dateisysteme werden auf Speichergeräten aufgebaut. Es gibt RAID-Controller und Festplatten-Controller, auf denen jeweils eine eigene kleine Firmware ausgeführt wird. Es gibt Caches, um die Leistung zu verbessern. Es gibt Festplatten mit unterschiedlichen Sektorgrößen und es gibt Festplatten, die eine andere Sektorgröße melden, je nachdem, wie Sie die Frage stellen.

Bei so vielen verschiedenen Teilen, die einen typischen Lagerstapel ausmachen, ist es ein Wunder, dass überhaupt etwas funktioniert. Meistens funktioniert es jedoch gut. Wenn etwas schief geht, brauchen wir Dienstprogramme wie xfs_repair, um uns aus dem Schlamassel zu befreien.

Dinge können schief gehen, wenn Sie eine Datei schreiben und der Strom ausfällt oder eine Kernel-Panik auftritt. Selbst Daten, die auf einer Festplatte ruhen, können im Laufe der Zeit verfallen, da sich die physikalische Struktur der Speicherelemente ändern kann, dies wird als Bitrot bezeichnet. In allen Fällen benötigen wir einen Mechanismus für:

  1. Prüfen, ob die gelesenen Daten dieselben Daten sind, die zuletzt geschrieben wurden. Dies wird implementiert, indem man eine Prüfsumme für jeden Datenblock hat und die Prüfsumme für diesen Block vergleicht, wenn Daten gelesen werden. Stimmt die Prüfsumme überein, wurden die Daten nicht verändert
  2. Eine Möglichkeit, beschädigte oder verlorene Daten zu rekonstruieren, entweder aus einem Spiegelblock oder aus einem Paritätsblock.

Sandbox-Einrichtung

Lassen Sie uns eine Testbench einrichten, um eine xfs-Reparaturroutine auszuführen, anstatt echte Festplatten mit wertvollen Daten darauf zu verwenden. Wenn Sie bereits ein defektes Dateisystem haben, können Sie diesen Abschnitt überspringen und direkt zum nächsten springen. Diese Testbench besteht aus einer Ubuntu-VM, mit der eine virtuelle Festplatte verbunden ist, die Rohspeicher bereitstellt. Sie können VirtualBox verwenden, um die VM zu erstellen und dann eine zusätzliche Festplatte zum Anhängen an die VM erstellen.

Gehen Sie einfach zu den Einstellungen Ihrer VM und unter Einstellungen → Speicher Abschnitt können Sie dem SATA-Controller eine neue Festplatte hinzufügen. Sie können eine neue Festplatte erstellen. Wie unten gezeigt, aber stellen Sie sicher, dass Ihre VM ausgeschaltet ist, wenn Sie dies tun.

Sobald die neue Festplatte erstellt wurde, schalten Sie die VM ein und öffnen Sie das Terminal. Der Befehl lsblk listet alle verfügbaren Blockgeräte auf.

$ lsblk
sda      8:0    0   60G  0 Festplatte
├─sda1   8:1    0    1M 0 Teil
└─sda2   8:2    0   60G  0 Teil /
sdb      8:16   0  100G  0 Festplatte
sr0     11:0    1 1024 M 0 rom

Abgesehen vom Hauptblockgerät sda, wo das OS installiert ist, gibt es jetzt ein neues sdb-Gerät. Lassen Sie uns schnell eine Partition daraus erstellen und mit dem XFS-Dateisystem formatieren.

Öffnen Sie das parted-Dienstprogramm als Root-Benutzer:

$ parted -a optimale /dev/sdb

Lassen Sie uns zuerst eine Partitionstabelle mit mklabel erstellen, gefolgt von der Erstellung einer einzelnen Partition aus der gesamten Festplatte (die 107 GB groß ist). Sie können überprüfen, ob die Partition erstellt wurde, indem Sie sie mit dem Befehl print auflisten:

(getrennt) mklabel gpt
(getrennt) mkpart primär 0 107
(geteilter) Druck
(getrennt) aufhören

Okay, jetzt können wir mit lsblk sehen, dass sich unter dem sdb-Gerät ein neues Blockgerät namens sdb1 befindet.

Lassen Sie uns diesen Speicher als xfs formatieren und im Verzeichnis /mnt mounten. Führen Sie erneut die folgenden Aktionen als Root aus:

$ mkfs.xfs /dev/sdb1
$ mount /dev/sdb1 /mnt
$ df -h

Der letzte Befehl gibt alle gemounteten Dateisysteme aus und Sie können überprüfen, ob /dev/sdb1 unter /mnt eingehängt ist.

Als nächstes schreiben wir eine Reihe von Dateien als Dummy-Daten, um sie hier zu defragmentieren:

$ dd if=/dev/urandom of=/mnt/myfile.txt-Anzahl = 1024 bs = 1024

Der obige Befehl würde eine Datei myfile schreiben.txt mit 1 MB Größe 1. Wenn Sie möchten, können Sie automatisch weitere solcher Dateien generieren, diese auf verschiedene Verzeichnisse innerhalb des xfs-Dateisystems verteilen (eingehängt unter /mnt) und dann auf Fragmentierung prüfen. Verwenden Sie dafür Bash oder Python oder eine andere Ihrer bevorzugten Skriptsprachen.

Fehler prüfen und beheben

Datenbeschädigungen können sich ohne Ihr Wissen heimlich in Ihre Festplatten einschleichen. Wenn ein Datenblock nicht gelesen und die Prüfsumme nicht verglichen wird, kann der Fehler einfach zum falschen Zeitpunkt auftreten. Wenn jemand versucht, auf die Daten zuzugreifen, in Echtzeit. Stattdessen ist es eine gute Idee, regelmäßig alle Datenblöcke gründlich zu scannen, um Bitrot oder andere Fehler zu überprüfen.

Das Dienstprogramm xfs_scrub soll diese Aufgabe für Sie erledigen. Diese experimentelle Funktion wurde teilweise vom Scrub-Befehl von OpenZFS inspiriert und ist nur in xfsprogs Version 4 verfügbar.fünfzehn.1-1ubuntu1, das keine stabile Version ist. Wenn Fehler fälschlicherweise erkannt werden, kann dies dazu führen, dass Sie Datenbeschädigungen verursachen, anstatt sie zu beheben! Wenn Sie jedoch damit experimentieren möchten, können Sie es mit dem folgenden Befehl auf einem gemounteten Dateisystem verwenden:

$ xfs_scrub /dev/sdb1

Bevor Sie versuchen, ein beschädigtes Dateisystem zu reparieren, müssen Sie es zuerst aushängen. Dies soll verhindern, dass Anwendungen versehentlich in das Dateisystem schreiben, wenn es in Ruhe gelassen werden soll.

$ umount /dev/sdb1

Das Reparieren von Fehlern ist so einfach wie Ausführen:

$ xfs_repair /dev/sdb1

Wesentliche Metadaten werden immer als Mehrfachkopien aufbewahrt, auch wenn Sie kein RAID verwenden und wenn mit dem Superblock oder den Inodes etwas schief gelaufen ist, kann dieser Befehl dieses Problem mit hoher Wahrscheinlichkeit für Sie beheben.

Nächste Schritte

Wenn Sie häufig Datenbeschädigungen sehen (oder sogar nur einmal, wenn Sie etwas unternehmenskritisches ausführen), sollten Sie Ihre Festplatten ersetzen, da dies ein früher Hinweis auf eine Festplatte sein könnte, die kurz vor dem Ableben steht.

Wenn ein Controller ausfällt oder eine RAID-Karte das Leben aufgegeben hat, kann keine Software der Welt das Dateisystem für Sie reparieren. Sie wollen keine teuren Datenwiederherstellungsrechnungen und keine langen Ausfallzeiten, also behalten Sie diese SSDs und sich drehenden Platten im Auge!

Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...
0 A.D. Lernprogramm
Von den vielen Strategiespielen da draußen, 0 A.D. schafft es, sich trotz Open Source als umfassender Titel und sehr tiefgehendes, taktisches Spiel ab...
Unity3D-Tutorial
Einführung in Unity 3D Unity 3D ist eine leistungsstarke Engine für die Spieleentwicklung. Es ist plattformübergreifend, das heißt, Sie können Spiele ...