Tutoriel Linux

Fsck unter Linux: Reparieren eines ausgehängten Dateisystems

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Ein Server startet im Notfallmodus neu, eine Partition lässt sich nicht einbinden oder der Kernel meldet ext4-Fehler. Die Versuchung ist groß, sofort zu starten. fsck auf dem ersten gefundenen Gerät. Genau das muss vermieden werden: Eine Reparatur auf dem falschen Volume oder auf einem noch eingebundenen Dateisystem kann den Schaden verschlimmern.

fsck ist ein Launcher, der das für das Dateisystem passende Tool aufruft. Vor jeder Korrektur müssen Sie die Partition identifizieren, ihren Typ überprüfen, sicherstellen, dass sie nicht mehr verwendet wird, und eine brauchbare Sicherungskopie erstellen. Ich beginne immer mit einer Überprüfung, ob keine Schreibvorgänge möglich sind. Die Reparatur erfolgt erst danach.

Tux untersucht und repariert sorgfältig die Blöcke eines nicht eingebundenen Linux-Dateisystems.
Fsck muss vor jeder Reparatur ein ausgehängtes und identifiziertes Dateisystem überprüfen.

Identifizieren Sie die Partition und ihr Dateisystem.

Verlass dich nicht allein auf einen Namen wie /dev/sdb1

lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINTS,MODEL,SERIAL,TYPE
sudo blkid

Der Leitfaden zu lsblk unter Linux Diese Überprüfung wird detailliert beschrieben. Wenn Sie mit LVM arbeiten, wählen Sie das logische Volume aus, das das Dateisystem enthält, zum Beispiel /dev/mapper/vg_data-lv_archivenicht das darunter liegende physische LVM-Volume. Der Artikel ist gewidmet LVM und seine verschiedenen Schichten ermöglicht es uns, zwischen ihnen zu unterscheiden.

Prüfen Sie als Nächstes, wie die Quelle verwendet wird:

findmnt --source /dev/nvme0n1p2
findmnt --target /mnt/data

lsblk Und Dateisystem-UUID Vermeidet Verwechslungen zweier Punktzahlen mit ähnlichen Namen.

Repariere niemals ein eingebundenes Dateisystem

Der Kernel kann Metadaten ändern, während fsck

Bei einer bestimmten Datenmenge sollten die Dienste, die diese Daten verwenden, gestoppt, die Terminals im zugehörigen Verzeichnisbaum beendet und das Laufwerk anschließend ausgehängt werden:

sudo fuser -vm /mnt/data
sudo umount /mnt/data

umount Es meldet, dass das Ziel belegt ist; versuchen Sie es nicht zu erzwingen. Identifizieren Sie den Prozess mit Sicherung Oder lsof

Verwenden Sie für die Root-Partition ein Live-Medium oder eine Rettungsumgebung, in der diese Partition nicht eingebunden ist. Ein einfacher Wechsel in den Einzelbenutzer- oder Notfallmodus beweist nicht, dass die Root-Partition ausgebunden ist. Stellen Sie auf einem Remote-Server vor dem Neustart sicher, dass eine KVM-Konsole, IPMI oder der Notfallzugriff des Hosting-Anbieters verfügbar ist.

Beginnen Sie mit einem Scheck ohne Schriftform.

Der folgende Befehl zeigt an, welcher Prüfer fsck würde starten, ohne die Überprüfung auszuführen:

sudo fsck -N /dev/nvme0n1p2

Führen Sie anschließend auf einem zerlegten ext2-, ext3- oder ext4-System einen erzwungenen Scan durch und beantworten Sie alle vorgeschlagenen Änderungen mit „Nein“:

sudo e2fsck -f -n /dev/nvme0n1p2
rc=$?
echo "Code e2fsck: $rc"

Die Option -N Behält die Lesezugriffsrechte. Die Option -F Eine vollständige Überprüfung ist erforderlich, selbst wenn das Dateisystem fehlerfrei erscheint. Bei großen Datenträgern kann diese Prüfung zeitaufwendig sein. Meldet die Festplatte Ein-/Ausgabefehler, Zeitüberschreitungen oder Verbindungsabbrüche, sichern Sie zunächst die noch lesbaren Daten und überprüfen Sie anschließend die Hardware. Es repariert eine logische Struktur, nicht eine physisch defekte Festplatte.

Kernelmeldungen können dieses Szenario bestätigen:

sudo dmesg -T | grep -Ei 'I/O error|timeout|reset|EXT4-fs|XFS|BTRFS'
sudo journalctl -k -b -p warning..alert

Der Leitfaden zu dmesg- und Kernelfehler Hilft dabei, diese Warnmeldungen wieder in die richtige Reihenfolge zu bringen.

Reparieren eines ext4-Volumes, ohne überall mit „Ja“ zu antworten

Wenn die Überprüfung Inkonsistenzen meldet, überprüfen Sie Ihre Sicherung, bestätigen Sie das Gerät erneut und lassen Sie das Volume nicht eingebunden. Starten Sie anschließend die interaktive Reparatur.

sudo e2fsck -f /dev/nvme0n1p2

-y Standardmäßig akzeptiert diese Option alle Reparaturen, selbst wenn im Vorfeld eine Datensicherung oder eine Hardwareprüfung erforderlich wäre. Bei einer großen Partition stellt die blinde Durchführung einer automatischen Reparatur einen schlechten Kompromiss zwischen Geschwindigkeit und Kontrolle dar.

Sobald der Befehl abgeschlossen ist, erfassen Sie umgehend seinen Exit-Code:

rc=$?
echo "Code e2fsck: $rc"

Lesen Sie den fsck-Exit-Code.

Ein Fehlercode ungleich Null bedeutet nicht zwangsläufig, dass die Reparatur fehlgeschlagen ist. Die wichtigsten Werte sind folgende:

  • null : Keine Fehler festgestellt;
  • eins Fehler korrigiert;
  • zwei Fehler behoben, Neustart erforderlich;
  • : unkorrigierte Fehler;
  • acht Fehler bei der Durchführung des Testvorgangs;
  • sechzehn : Anwendungs- oder Syntaxfehler;
  • zwei­und­dreißig : Steuerung abgebrochen;
  • ein­hundert­acht­und­zwanzig : Fehler im Zusammenhang mit einer gemeinsam genutzten Bibliothek.

Diese Werte verhalten sich wie Bits und können addiert werden. Ein Code vier erfordert, dass das Lese-/Schreibvolumen nicht erhöht wird, als ob alles fixiert wäre. Ein Code acht Bitte überprüfen Sie den Befehl, den Dateisystemtyp, die installierten Tools und die angezeigten Meldungen.

XFS und Btrfs verwenden ihre eigenen Tools.

fsck Diese Methode wird nicht auf alle Dateisysteme angewendet. Bei XFS sollte man mit einem unveränderten Scan des nicht eingebundenen Volumes beginnen:

Die Reparatur wird dann durchgeführt mit Immer außer Betrieb nehmen. Nicht verwenden Als erster Versuch: Das Zurücksetzen des Protokolls kann zum Verlust der zuletzt gespeicherten Metadaten führen.

Bei Btrfs ist die umsichtige Kontrolle explizit schreibgeschützt:

sudo btrfs check --readonly /dev/nvme0n1p2

Nicht hinzufügen --reparieren Ohne Backup und ohne eine auf das beobachtete Problem abgestimmte Vorgehensweise. Die Btrfs-Dokumentation selbst warnt davor, es ohne fachkundige Anleitung zu verwenden. Prüfen Sie immer FSTYPE lsblk -f vor der Auswahl des Werkzeugs.

Überprüfen Sie die Lautstärke, bevor Sie es wieder zusammenbauen.

Führen Sie nach einer ext4-Reparatur eine Überprüfung ohne Schreibzugriff durch. Wenn das Ergebnis fehlerfrei ist, hängen Sie das Volume erneut ein und überprüfen Sie anschließend Typ, Speicherplatz und neue Kernelmeldungen:


sudo mount /mnt/data
findmnt /mnt/data
df -hT /mnt/data
sudo journalctl -k -b -p warning..alert

Bei einer beim Systemstart kontrollierten Root-Partition sollten Sie auch die Spuren des vorherigen Systemstarts überprüfen:

journalctl -b -1 | grep -Ei 'fsck|filesystem|E/A-Fehler|EXT4-fs|XFS|BTRFS'
systemctl --fehlgeschlagen

fsck-Manpage beschreibt den Launcher und seine Exit-Codes. Für ext4 siehe e2fsckDie spezifischen Verfahren für XFS und zu Btrfs muss Vorrang vor einem zufällig gefundenen generischen Befehl haben.

sudo apt update && sudo apt upgrade