GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Überprüfen und reparieren Sie Dateisystemfehler mit dem fsck-Befehl in Linux

Manchmal passieren guten Systemen schlimme Dinge.

Glücklicherweise sind Sie ein Linux-Benutzer und haben fsck (Dateisystemprüfung), um bei einem möglicherweise beschädigten Dateisystem zu helfen. Dieses Dienstprogramm wird zum Überprüfen und (optional) Reparieren des Dateisystems verwendet.

Es gibt mehrere Szenarien, in denen Sie möglicherweise fsck verwenden möchten. Normalerweise sollten Sie diesen Befehl ausführen, wenn Ihr System nicht bootet, ein Gerät (externe Laufwerke oder Speichermedien) nicht ordnungsgemäß funktioniert oder wenn Sie Anzeichen einer Dateibeschädigung festgestellt haben.

Fsck ist eigentlich ein "Front-End" für eine Reihe von dateisystemspezifischen Prüfprogrammen wie fsck.vfat, fsck.ext2 usw. Diese müssen nicht angegeben werden, aber Sie können möglicherweise erweiterte Optionen in man finden Seiten dieser präziseren Befehle.

Einführung in den fsck-Befehl

Der fsck-Befehl folgt einem ähnlichen Muster wie die meisten Linux-Befehle.

fsck [options] [filesystem]

Wenn Sie kein Dateisystem angeben, analysiert das System Ihre fstab-Datei (/etc/fstab ) für die zu scannenden Geräte.

Sie müssen den Befehl entweder als Root-Benutzer ausführen oder ihn mit sudo verwenden.

Sie können den Befehl fdisk oder df verwenden, um die Festplatte in Linux aufzulisten. Auf diese Weise können Sie angeben, welches Gerät mit dem Befehl fsck überprüft werden soll.

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380

Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  98563270  97512647  46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem

Unmounten Sie das Gerät, bevor Sie fsck ausführen

Führen Sie fsck nicht auf einem gemounteten Gerät aus, Sie müssen das Ziel zuerst unmounten, um Schäden an Ihren Dateien zu vermeiden.

Wenn Sie versuchen, fsck auf einem gemounteten Gerät auszuführen, sollten Sie einen Fehler wie diesen sehen:

[email protected]:~$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.

Das Ausführen von fsck auf einem normalen, gesunden Laufwerk sieht so aus:

[email protected]:~$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

Während fsck einen Gerätenamen wie /dev/sda akzeptiert , können Sie die UUID eingeben, um Verwechslungen beim Ein- und Aushängen von Geräten zu vermeiden. Die UUID ist ein fester Wert, der Ihrem Gerät zugewiesen wird und von diesen Systemänderungen nicht betroffen ist.

Beendigungscodes für den fsck-Befehl verstehen

Dies ist eine Liste der Codes, die von fsck nach der Überprüfung einer Festplatte zurückgegeben werden können. Ihr Exit-Code ist eine Summe dieser Codes, wenn Sie eine Festplatte analysieren. Wenn Sie fsck auf mehreren Geräten verwenden, wird das bitweise ODER zurückgegeben der beiden Summen.

  • 0 – Keine Fehler
  • 1 - Dateisystemfehler korrigiert
  • 2 - System sollte neu gestartet werden
  • 4 - Unkorrigierte Dateisystemfehler
  • 8 - Betriebsfehler
  • 16 - Verwendungs- oder Syntaxfehler
  • 32 - Fsck auf Benutzerwunsch abgebrochen
  • 128 – Shared-Library-Fehler

Sie können den Exit-Code des letzten Ausführungsbefehls mit echo $? überprüfen Befehl.

Praktische Verwendung des fsck-Befehls

Nachdem Sie nun ein wenig mit dem fsck-Befehl vertraut sind, sehen wir uns praktische Anwendungsfälle dieses Befehls an.

Reparieren Sie ein USB-Laufwerk und andere Wechselgeräte

Nehmen wir für unseren Zweck an, dass Sie das problematische Gerät /dev/sdb bereits identifiziert haben .

Zuerst müssen Sie sicherstellen, dass das Laufwerk ausgehängt wurde:

sudo umount /dev/sdb

Führen Sie nun den fsck-Befehl aus:

sudo fsck /dev/sdb

Überprüfen Sie die Ausgabe auf Fehler. Wenn keiner angezeigt wird, überprüfen Sie den Exit-Code mit echo $? .

Es gibt auch einige Optionsflags, die wir hinzufügen können, um eine automatische Korrektur zu ermöglichen. Diese Befehle sind jedoch nicht standardisiert, und Sie sollten den Dateisystemtyp überprüfen und die Dokumentation von dieser speziellen Manpage vergleichen.

Trotzdem können Sie im Allgemeinen -p verwenden damit fsck Reparaturen automatisch anwenden kann.

sudo fsck -p /dev/sdb

Ebenso -y wendet Korrekturen auf jede erkannte Beschädigung des Dateisystems an.

Reparieren Sie das Root-Dateisystem

Sie können die Root-Partition nicht aushängen, während das System aktiv ist. Wenn Sie vermuten, dass Ihr Hauptdateisystem beschädigt ist, müssen Sie hier einen anderen Ansatz wählen.

Es gibt tatsächlich ein paar verschiedene Optionen, die Sie verwenden können. Sie können fsck beim Booten oder im Rettungsmodus ausführen oder eine Live-CD mit Wiederherstellungsthema verwenden.

Viele Linux-Distributionen erzwingen automatisch fsck beim Start nach einer bestimmten Anzahl fehlgeschlagener Startversuche. Wenn Sie es vorziehen, die Dinge selbst in die Hand zu nehmen, können Sie das System so einstellen, dass es dies selbst erledigt.

Die meisten modernen Linux-Versionen verfügen über ein Tool namens tune2fs.

sudo tune2fs -c 1 /dev/sda

Angenommen, Ihr Root-Gerät ist dev/sda , das ist der Befehl, den Sie eingeben würden.

Was nun tatsächlich passiert, ist, dass Sie die Systemeinstellungen so ändern, dass fsck alle n ausgeführt wird Anzahl Stiefel (1 im Beispiel). Sie können dies auch auf ein Standardzeitintervall einstellen. Die Optionen sind d ja, w eeks oder m Monate.

Angenommen, Sie möchten, dass fsck jedes Mal ausgeführt wird, wenn Sie booten, wenn seit einer Woche keine Überprüfung stattgefunden hat. Sie könnten -i verwenden um das Intervall anzugeben und der Befehl würde so aussehen.

sudo tune2fs -i 1w /dev/sda	

Wenn Sie systemd verwenden, können Sie die Ausführung von fsck beim nächsten Start erzwingen, indem Sie Folgendes eingeben:

fsck.mode=force
fsck.repair=yes

Fazit

Weitere Informationen finden Sie jederzeit in den Manpages. Verwenden Sie einfach man fsck im Terminal.

Ich hoffe, Sie haben etwas Neues über den Befehl fsck gelernt. Wenn Sie Kommentare oder Fragen haben, hinterlassen Sie diese bitte unten.


Linux
  1. Überprüfen Sie Java-Prozesse unter Linux mit dem Befehl jps

  2. Überwachen Sie Befehle und Aufgaben mit dem Linux-Überwachungsbefehl

  3. Überprüfen Sie den Dateistatus unter Linux mit dem Befehl stat

  4. Überprüfen Sie den Speicherplatz in Linux mit den Befehlen df und du

  5. So überprüfen Sie das Betriebssystem und die Version mit einem Linux-Befehl

Fsck-Befehl unter Linux (Dateisystem reparieren)

15 Linux-PS-Befehl mit Beispielen

Fsck-Befehl unter Linux

So überprüfen und reparieren Sie ein Dateisystem in RHEL Linux

So überprüfen Sie die Betriebssystemversion mit der Linux-Befehlszeile

So überprüfen Sie die VPS-Serverparameter mit dem Linux-Befehl