In einem Btrfs-Dateisystem mit mehreren Geräten oder einem Btrfs-RAID können je nach Dateisystemkonfiguration mehrere Kopien der Daten-/Metadatenblöcke an verschiedenen Speicherorten der zum Btrfs-Dateisystem hinzugefügten Speichergeräte gespeichert sein. Wenn das Btrfs-Scrub-Tool einen beschädigten Daten-/Metadatenblock findet, durchsucht es alle zum Btrfs-Dateisystem hinzugefügten Speichergeräte nach doppelten Kopien dieses Daten-/Metadatenblocksdata. Sobald eine doppelte Kopie dieses Daten-/Metadatenblocks gefunden wird, wird der beschädigte Daten-/Metadatenblock mit dem richtigen Daten-/Metadatenblock überschrieben. So repariert das Btrfs-Scrub-Tool beschädigte Daten-/Metadatenblöcke in einem geräteübergreifenden Btrfs-Dateisystem oder Btrfs-RAID.
In diesem Artikel zeige ich Ihnen, wie Sie mit dem Btrfs-Scrub-Tool beschädigte Daten-/Metadatenblöcke in einem geräteübergreifenden Btrfs-Dateisystem oder Btrfs-RAID finden und reparieren. Also lasst uns anfangen.
Abkürzungen
RAID - Redundantes Array kostengünstiger/unabhängiger Festplatten Disk
GB - Gigabyte
Voraussetzungen
Um diesem Artikel folgen zu können, benötigen Sie ein funktionierendes geräteübergreifendes Btrfs-Dateisystem oder ein Btrfs-RAID.
Ich habe ein Btrfs-RAID erstellt in RAID-1 Konfiguration (montiert am /Daten Verzeichnis) mit 4 Speichergeräten sdb, sdc, sdd, und sde, wie Sie im Screenshot unten sehen können. Ich werde dieses Btrfs-RAID für die Btrfs-Scrub-Demonstration in diesem Artikel verwenden.
$ sudo btrfs Dateisystemnutzung /data
Wenn Sie Hilfe bei der Installation des Btrfs-Dateisystems unter Ubuntu benötigen, lesen Sie meinen Artikel Install and Use Btrfs on Ubuntu 20.04 LTS.
Wenn Sie Hilfe bei der Installation des Btrfs-Dateisystems auf Fedora benötigen, lesen Sie meinen Artikel Install and Use Btrfs on Fedora 33.
Wenn Sie Hilfe beim Erstellen eines Btrfs-RAID benötigen, lesen Sie meinen Artikel So richten Sie ein Btrfs-RAID ein.
Generieren von Dummy-Dateien auf dem Btrfs-Dateisystem
Um Ihnen zu zeigen, wie das Btrfs-Scrub-Tool funktioniert, müssen wir einige zufällige Dateien generieren, um das Btrfs-Dateisystem zu füllen. Lassen Sie uns ein Shell-Skript erstellen, das genau das tut.
Erstellen Sie ein neues Shell-Skript Genfiles.Sch in dem /usr/local/bin/ Verzeichnis wie folgt:
$ sudo nano /usr/local/bin/genfiles.Sch
Geben Sie die folgenden Codezeilen in die ein Genfiles.Sch Shell-Skript.
#!/bin/bashwährend wahr
tun
DATEINAME=$(uuidgen)
echo "[Erstelle] $FILENAME"
dd if=/dev/random of=$FILENAME bs=1M count=256 status=progress
echo "[Erstellt] $FILENAME"
getan
Wenn Sie fertig sind, drücken Sie
Das Genfiles.Sch Shell-Skript führt unendlich aus während Schleife.
während wahrtun
# andere Codes
getan
Die folgende Zeile generiert eine UUID mit dem uuidgen Befehl und speichert die UUID im DATEINAME Variable.
Die folgende Zeile gibt eine Nachricht auf der Konsole vor der Datei aus DATEINAME wird erzeugt.
Die folgende Zeile erzeugt eine neue Zufallsdatei DATEINAME Verwendung der dd Befehl. Die Datei wird 256 MB in Größe.
Die folgende Zeile gibt eine Nachricht auf der Konsole nach der Datei aus DATEINAME wird erzeugt.
Ausführungsberechtigung zum hinzufügen Genfiles.Sch Shell-Skript wie folgt:
so
Das Genfiles.Sch Shell-Skript sollte jetzt wie alle anderen Befehle zugänglich sein.
$ welche Gendateien.Sch
Lassen Sie uns einige zufällige Dateien im Btrfs-RAID generieren, der im /Daten Verzeichnis.
Navigieren Sie zum /Daten Verzeichnis, in dem das Btrfs-RAID wie folgt gemountet ist:
$ CD / Daten
Wie Sie sehen, sind derzeit keine Dateien in meinem Btrfs-RAID verfügbar.
$ ls -lh
Um einige zufällige Dateien im aktuellen Arbeitsverzeichnis zu generieren (/Daten Verzeichnis in diesem Fall), führen Sie die Genfiles.Sch Shell-Skript wie folgt:
$ sudo genfiles.Sch
Das Genfiles.Sch Shell-Skript sollte mit der Generierung zufälliger Dateien im /Daten Verzeichnis.
Das Genfiles.Sch Skript generiert zufällige Dateien. Lassen Sie das Skript einige Minuten laufen, damit es etwa 2-3 GB Speicherplatz des Btrfs-RAID belegt.
Wenn du aufhören willst Genfiles.Sch Shell-Skript, drücken Sie
Wie Sie sehen können, werden einige zufällige Dateien im Btrfs RAID generiert.
$ ls -lh
Ich habe ungefähr 13 GB zufällige Dateien im Btrfs-RAID generiert, das in der /Daten Verzeichnis, wie Sie im Screenshot unten sehen können.
$ sudo du -sh /data
Arbeiten mit dem Btrfs Scrub Tool
In diesem Abschnitt zeige ich Ihnen, wie Sie das Btrfs-Scrub-Tool verwenden. Lass uns anfangen.
Sie können den Scrubbing-Prozess auf dem Btrfs-Dateisystem starten, das auf dem /Daten Verzeichnis mit folgendem Befehl:
$ sudo btrfs Scrub-Start /data
Ein Btrfs-Scrubbing-Prozess sollte auf dem Btrfs-Dateisystem gestartet werden, das auf dem /Daten Verzeichnis.
Sie können den Status des Btrfs-Scrubbing-Prozesses sehen, der auf dem Btrfs-Dateisystem ausgeführt wird, das auf dem /Daten Verzeichnis wie folgt:
$ sudo btrfs Scrub-Status /data
Wie Sie sehen können, ist der Btrfs-Scrub-Prozess noch nicht abgeschlossen Laufen.
Das Scrubbing eines Btrfs-Dateisystems oder Btrfs-RAID mit vielen Dateien dauert lange.
Sobald der Btrfs-Scrubbing-Prozess abgeschlossen ist, sollte der Status geändert werden in fertig, wie Sie im Screenshot unten sehen können.
$ sudo btrfs Scrub-Status /data
Sie können auch den Btrfs-Scrubbing-Status für jedes der Speichergeräte sehen, die dem Btrfs-Dateisystem hinzugefügt wurden (eingehängt im /Daten Verzeichnis) separat wie folgt:
$ sudo btrfs Scrub-Status -d /data
Ich habe Ihnen gesagt, dass der Btrfs-Scrubbing-Prozess auf einem großen Btrfs-Dateisystem lange dauert. Ein großer Vorteil des Btrfs-Scrub-Tools besteht darin, dass der Vorgang jederzeit angehalten und fortgesetzt werden kann.
Sehen wir uns an, wie Sie einen Btrfs-Scrub-Prozess anhalten und fortsetzen können resume.
Starten Sie zunächst einen neuen Btrfs-Scrub-Prozess auf dem im /data-Verzeichnis eingehängten Btrfs-Dateisystem wie folgt:
$ sudo btrfs Scrub-Start /data
Um den Btrfs-Scrubbing-Prozess abzubrechen oder anzuhalten, der derzeit auf dem Btrfs-Dateisystem ausgeführt wird, das auf dem /Daten Verzeichnis, führen Sie den folgenden Befehl aus:
$ sudo btrfs Scrub abbrechen /data
Der laufende Btrfs-Scrubbing-Prozess sollte abgebrochen oder angehalten werden.
Wie Sie sehen können, ist der Btrfs-Scrub-Status abgebrochen. Der Btrfs-Scrub-Prozess läuft also nicht mehr.
$ sudo btrfs Scrub-Status /data
Führen Sie den folgenden Befehl aus, um den abgebrochenen oder angehaltenen Btrfs-Bereinigungsprozess fortzusetzen:
$ Sudo Btrfs Scrub Lebenslauf / Daten
Der Btrfs-Scrub-Prozess sollte wieder aufgenommen werden.
Wie Sie sehen können, ist der Btrfs-Scrub-Status jetzt Laufen. Der Btrfs-Scrubbing-Prozess wird also wieder aufgenommen.
$ sudo btrfs Scrub-Status /data
Nachdem der Btrfs-Scrub-Prozess abgeschlossen ist, sollte der Btrfs-Scrub-Status in . geändert werden fertig.
$ sudo btrfs Scrub-Status /data
Fazit
In diesem Artikel habe ich Ihnen gezeigt, wie Sie mit dem Btrfs-Scrub-Tool arbeiten, um beschädigte Daten-/Metadatenblöcke eines Btrfs-Dateisystems mit mehreren Geräten oder RAID zu finden und zu reparieren. Ich habe Ihnen gezeigt, wie Sie einen Btrfs-Scrub-Prozess abbrechen / anhalten und fortsetzen können, sobald er gestartet wurde.