Sie können eine Überprüfung des gesamten Dateisystems einleiten, indem Sie einen Dateisystem-Scrubbing-Job auslösen. Der Scrub-Job läuft standardmäßig im Hintergrund und scannt das gesamte Dateisystem auf Integrität. Es versucht automatisch, alle fehlerhaften Blöcke, die es auf dem Weg findet, zu melden und zu reparieren. Anstatt das gesamte Laufwerk zu durchlaufen, befasst sich der Scrub-Job nur mit tatsächlich zugewiesenen Daten. Abhängig vom zugewiesenen Speicherplatz ist dies viel schneller als das Durchführen eines vollständigen Oberflächenscans der Festplatte.
Beim Scrubbing werden alle Daten von allen Festplatten gelesen und die Prüfsummen überprüft. Wenn irgendwelche Werte nicht korrekt sind, können die Daten korrigiert werden, indem eine gute Kopie des Blocks von einem anderen Laufwerk gelesen wird. Der Scrubbing-Code scannt auch automatisch beim Lesen. Es wird empfohlen, Dateisysteme mit hoher Auslastung einmal pro Woche und alle anderen Dateisysteme einmal im Monat zu bereinigen.
Das Folgende ist eine Liste der verfügbaren Btrfs-Scrubbing-Befehle:
# btrfs scrub usage: btrfs scrub [command] [options] [path]|[device] btrfs scrub start [-BdqrRf] [-c ioprio_class -n ioprio_classdata] [path]|[device] Start a new scrub. If a scrub is already running, the new one fails. btrfs scrub cancel [path]|[device] Cancel a running scrub btrfs scrub resume [-BdqrR] [-c ioprio_class -n ioprio_classdata] [path]|[device] Resume previously canceled or interrupted scrub btrfs scrub status [-dR] [path]|[device] Show status of running or finished scrub verify checksums of data and metadata
Dienstprogramm btrfs scrub:Beispiele
Verwenden Sie den Befehl btrfs scrub start, um einen Scrub auf allen Geräten eines Dateisystems oder auf einem einzelnen Gerät zu starten. Die Syntax lautet wie folgt:
# btrfs scrub start [-BdqrR] [-c ioprio_class ...
Beschreibung der Optionen:
Option | Beschreibung |
---|---|
-B | Lassen Sie es nicht im Hintergrund laufen und drucken Sie Statistiken, wenn Sie fertig sind. |
-d | Drucken Sie separate Statistiken für jedes Gerät des Dateisystems. Diese Option wird zusammen mit der Option -B verwendet. |
-q | Im stillen Modus ausführen, Fehlermeldungen und Statistiken auslassen. |
-r | Im schreibgeschützten Modus ausführen, keine Fehler korrigieren. |
-R | Rohdruckmodus. Vollständige Daten statt Zusammenfassung drucken. |
-c ioprio_class | Legen Sie die IO-Prioritätsklasse fest (siehe Ionice-Manpage). |
-n ioprio_classdata | E/A-Prioritätsklassendaten festlegen (siehe Manpage von ionice). |
Btrfs-Scrubbing starten
Das folgende Beispiel startet einen Scrub auf dem Btrfs-Dateisystem, das auf /btrfs gemountet ist.
# btrfs scrub start /btrfs scrub started on /btrfs, fsid ba60ac96-1628-4656-b68b-c7327ff49179 (pid=11164)
Verwenden Sie den Befehl btrfs scrub status, um den Status eines Scrub-Jobs abzurufen. Eine Option ist verfügbar:
- -d – Separate Statistiken für jedes Gerät des Dateisystems drucken.
Unten sehen Sie ein Beispiel für einen Btrfs-Scrubbing-Statusbefehl auf einem fehlerfreien Dateisystem. Im Falle eines beschädigten Dateisystems würden Sie korrigierte Fehler in der Ausgabe sehen.
# btrfs scrub status /btrfs scrub status for ba60ac96-1628-4656-b68b-c7327ff49179 scrub started at Fri Mar 30 14:29:47 2018 and finished after 00:00:02 total bytes scrubbed: 325.29MiB with 0 errors
Mit der Option „-d“ im obigen Befehl können Sie einen Status pro Geräteebene abrufen, wie im folgenden Beispiel gezeigt.
# btrfs scrub status /btrfs -d scrub status for ba60ac96-1628-4656-b68b-c7327ff49179 scrub device /dev/sda (id 1) history scrub started at Fri Mar 30 14:29:47 2018 and finished after 00:00:02 total bytes scrubbed: 325.29MiB with 0 errors
Abbrechen/Fortsetzen eines Btrfs-Scrubbing-Jobs
Sie können auch einen laufenden Scrub-Job abbrechen. Der Fortschritt wird in der Scrubbing-Fortschrittsdatei gespeichert und Sie können das Scrubbing später fortsetzen. So brechen Sie einen Scrub ab:
# btrfs scrub cancel /btrfs
So setzen Sie einen abgebrochenen oder unterbrochenen Scrub-Job fort:
# btrfs scrub resume /btrfs
Der Scrub-Resume-Befehl hat die gleichen Optionen wie der Scrub-Start-Befehl. Btrfs speichert die letzten zwei Minuten der Root-ID-Generierungen in 30-Sekunden-Intervallen. Btrfs rollt diese Generationen weiter, auch wenn es keine Änderungen im Dateisystem gibt.
Wenn ein Scrub Fehler nicht korrigiert, können Sie die folgende Einhängeoption verwenden, um zu einem bekanntermaßen guten B-Baum zurückzukehren, vorausgesetzt, dass der Rest des Baums aufgrund von Copy-on-Write verfügbar ist:
# mount –o recovery /dev/sda /btrfs