Der Befehl Fsck wird verwendet, um die Dateisystemkonsistenz in Linux- und Unix-ähnlichen Betriebssystemen zu überprüfen. Auf dem System wird fsck entweder automatisch oder manuell ausgeführt. Das Dateisystem sollte nicht gemountet werden, während fsck ausgeführt wird. Wir können fsck zwingen, beim Neustart sowohl für Root- als auch für Nicht-Root-Dateisysteme ausgeführt zu werden.
In diesem Tutorial lernen wir, wie man fsck beim Neustart erzwingen um nach Dateisystemfehlern zu suchen.
Erzwinge fsck beim Systemstart auf systemd
Viele moderne Linux-Distributionen werden mittlerweile von System System. Die traditionelle Verwendung von tune2fs funktioniert nur in Sysvinit- oder Upstart-Systemen.
Für systemd-basierte Linux-Distributionen fügen Sie hinzu fsck.mode=force
als Kernel-Parameter in Ihre Grub-Konfigurationsdatei. Es ist wichtig zu beachten, dass systemd-fsck nichts über das Dateisystem weiß, also führt es nur Dateisystem-Checker aus, die für jeden Dateisystemtyp (/sbin/fsck.*) spezifisch sind. Wenn Sie ein ext4-Dateisystem haben, z example, wird systemd-fsck /sbin/fsck.ext4 ausführen.
Sie müssen hinzufügen fsck.mode=force
bis GRUB_CMDLINE_LINUX_DEFAULT, am Ende des letzten Anführungszeichens (“).
Für example:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force"
Sie können die Grub-Konfiguration mit dem nano-Befehl bearbeiten.
$ sudo nano /etc/default/grub
Ausgabe:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD …)
# GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
# GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
# GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
# GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
# GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
# GRUB_INIT_TUNE="480 440 1"
Wenn Sie leicht zu behebende Probleme automatisch reparieren möchten, können Sie die Option hinzufügen fsck.repair=yes
in die Grub-Konfigurationsdatei. Das Ja in fsck.repair
zeigt an, dass das System “ja” als Antwort auf alle fsck-Fragen akzeptiert; Verwenden Sie no, wenn das System “Nein” als Antwort akzeptieren soll.
Sie müssen die Grub-Konfigurationsdatei wie zuvor bearbeiten und hinzufügen fsck.repair=yes
oder fsck.repair=no
zum GRUB_CMDLINE_LINUX_DEFAULT.
Für fsck.repair=yes
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force fsck.repair=yes"
Für fsck.repair=no
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force fsck.repair=no"
Stellen Sie sicher, dass Sie keine weiteren Änderungen vornehmen und die von Ihnen vorgenommenen Änderungen korrekt sind, da sonst Ihr System nicht booten kann. Nachdem Sie die Änderungen vorgenommen haben, können Sie die Nanodatei speichern und beenden.
Nachdem Sie die Bearbeitung abgeschlossen und Ihre Datei gespeichert haben, führen Sie den folgenden Befehl aus, um die Grub2-Konfiguration für die Linux-Distribution zu aktualisieren.
$ sudo update-grub
Sie müssen das System jetzt neu starten, und fsck führt beim Booten eine Konsistenzprüfung des Dateisystems durch.
Wenn Sie nicht möchten, dass fsck bei jedem Bootvorgang eine Dateisystemkonsistenzprüfung durchführt, müssen Sie alle zusätzlichen Schritte löschen, die Sie der Grub-Konfigurationsdatei hinzugefügt haben.
Damit systemd während des Bootens einmalig fsck erzwingen kann:
- Zum Grub-Menü booten
- Drücken Sie ‘e’, während der Eintrag markiert ist, um die Befehle zu bearbeiten
- Drücken Sie die Taste “Ende”, um den Cursor zum letzten zu bewegen
- Fügen Sie ein Leerzeichen hinzu und fügen Sie dann den Kernel-Parameter hinzu
fsck.mode=force
- Drücken Sie Strg + x, um close und booten Sie das System
Erzwinge fsck beim Systemstart auf dem Sysvinit- oder Upstart-System
Es gibt zwei Möglichkeiten, force fsck in der alten Linux-Distribution auszuführen: mit tune2fs und forcefsck.
Wenn ein Dateisystem als beschädigt definiert ist oder nach einer bestimmten Anzahl von Bootvorgängen oder einer bestimmten Zeit, wird fsck beim Booten ausgeführt. Nur EXT4-, EXT3- und EXT2-Dateisysteme können gezwungen werden, bei jedem Neustart fsck auszuführen.
Das tune2fs ermöglicht die Anpassung verschiedener einstellbarer Dateisystemparameter unter Linux. Wir werden diesen Befehl für unseren Zweck verwenden.
Der folgende Befehl tune2fs-Befehl legt das Dateisystem (/dev/sda1) so fest, dass fsck bei jedem Systemneustart ausgeführt wird:
$ sudo tune2fs -c 1 /dev/sda1
Stellen Sie außerdem sicher, dass in der Datei /etc/fstab die letzte, 6. Spalte ([PASS]
) ist größer als Null.
0
– Nicht prüfen.1
– Die zuerst zu überprüfenden Dateisysteme. Normalerweise legt die Root-Partition diesen Wert fest2
– Die Dateisysteme, die zuletzt und ggf. parallel geprüft werden.
Wenn Sie fsck zwingen möchten, die Dateisystemprüfung nach 10 Bootvorgängen auszuführen, setzen Sie den Wert von -c auf 10.
$ sudo tune2fs -c 10 /dev/sda1
Um die Ausführung von fsck bei jedem Booten zu stoppen, können Sie den Wert von -c durch -1 ersetzen und den Befehl ausführen.
$ sudo tune2fs -c -1 /dev/sda1
Das tune2fs-Tool kann verwendet werden, um die aktuelle Mount-Anzahl, die maximale Mount-Anzahl, den Zeitpunkt der letzten Überprüfung und das Intervall zu überprüfen.
$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
Ausgabe:
$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
Mount count: 31
Maximum mount count: -1
Last checked: Fri May 8 08:08:15 2020
Check interval: 0 ()
Die „Maximale Mount-Anzahl“ ist die maximale Anzahl von Mounts, bevor das Dateisystem überprüft wird. Der fsck wird nie ausgeführt, wenn der Maximalwert 0 oder -1 ist. Das „Prüfintervall“ bezieht sich auf die Zeit, die zwischen zwei Dateisystemprüfungen vergeht.
Es ist möglich, fsck nach einer bestimmten Anzahl von Mounts auszuführen, z example, wenn Sie fsck alle 10 Mounts ausführen möchten, können Sie den folgenden Befehl verwenden.
$ sudo tune2fs -c 10 /dev/sda1
Ausgabe:
$ sudo tune2fs -c 10 /dev/sda1
tune2fs 1.45.6 (20-Mar-2020)
Setting maximal mount count to 10
$ sudo tune2fs -l /dev/sda1 | grep -i 'last checked|mount count|check interval'
Mount count: 31
Maximum mount count: 10
Last checked: Fri May 8 08:08:15 2020
Check interval: 0 ()
Forcefsck verwenden
In älteren Linux-Distributionen wird durch einfaches Erstellen einer Datei namens forcefsck unter der Root-Verzeichnis-Partition (/) force fsck auf der Root-Partition ausgeführt.
$ sudo touch /forcefsck
Überprüfen Sie, ob die Datei erstellt wurde.
$ sudo ls /forcefsck
Ausgabe:
$ sudo touch /forcefsck
$ sudo ls /forcefsck
/forcefsck
$
Jetzt können Sie einen Neustart durchführen oder beim nächsten Neustart führt das System fsck auf dem Root-Dateisystem aus.
Normalerweise wird die Datei /forcefsck automatisch nach dem fsck entfernt, wenn sie nicht entfernt wird, können Sie diese Datei manuell löschen.
Fazit
In diesem Tutorial haben wir gelernt, wie man fsck auf Root- und Nicht-Root-Dateisystemen in Linux erzwingt. Danke fürs Lesen, bitte geben Sie Ihren Vorschlag im Kommentarbereich ab.