ext4
Dateisystemprüfung während des Bootens
Getestet auf Betriebssystem:Linux Mint 18.x in einer virtuellen Maschine
Grundlegende Informationen
/etc/fstab
hat den fsck
order als letzte (6.) Spalte, zum Beispiel:
<file system> <mount point> <type> <options> <dump> <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1
FSCKFIX=yes
Variable in /etc/default/rcS
Dadurch wird fsck auf Autofix umgestellt, aber nicht Erzwingen Sie eine fsck-Prüfung.
Ab man rcS
:
FSCKFIX When the root and all other file systems are checked, fsck is invoked with the -a option which means "autorepair". If there are major inconsistencies then the fsck process will bail out. The system will print a message asking the administrator to repair the file system manually and will present a root shell prompt (actually a sulogin prompt) on the console. Setting this option to yes causes the fsck commands to be run with the -y option instead of the -a option. This will tell fsck always to repair the file systems without asking for permission.
Ab man tune2fs
If you are using journaling on your filesystem, your filesystem will never be marked dirty, so it will not normally be checked.
Beginnen Sie mit
Folgendes einstellen
FSCKFIX=yes
in der Datei
/etc/default/rcS
Überprüfen und notieren Sie, wann fs zuletzt überprüft wurde:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Diese beiden Optionen haben NICHT funktioniert
-
Bestehen von
-F
(fsck
erzwingen beim Neustart) Argument zushutdown
:shutdown -rF now
Nö; siehe:
man shutdown
. -
Hinzufügen des
/forcefsck
leere Datei mit:touch /forcefsck
Diese Skripte scheinen dies zu verwenden:
/etc/init.d/checkfs.sh /etc/init.d/checkroot.sh
tat NICHT funktioniert beim Neustart, aber die Datei wurde gelöscht.
Verifiziert von:
sudo tune2fs -l /dev/sda1 | grep "Last checked" sudo less /var/log/fsck/checkfs sudo less /var/log/fsck/checkroot
Dies scheinen die Protokolle für
init
zu sein Skripte.
Ich wiederhole, diese beiden Optionen haben NICHT funktioniert!
Beide Methoden haben funktioniert
-
systemd-fsck-Kernel-Boot-Schalter
Bearbeiten des Haupt-
grub
Konfigurationsdatei:sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX="fsck.mode=force"
sudo update-grub sudo reboot
Dies hat eine Dateisystemprüfung durchgeführt, wie verifiziert mit:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Hinweis:Diese DID eine Überprüfung, aber um auch eine Korrektur zu erzwingen, müssen Sie
fsck.repair="preen"
angeben , oderfsck.repair="yes"
. -
Mit
tune2fs
um die Anzahl der Dateisystem-Mounts festzulegen, bevorfsck
ausgeführt wird ,man tune2fs
tune2fs' info is kept in the file system superblock
-c
switch legt fest, wie oft das fs gemountet werden soll, bevor das fs geprüft wird.sudo tune2fs -c 1 /dev/sda1
Bestätigen Sie mit:
sudo tune2fs -l /dev/sda1
Dieses HAT funktioniert wie verifiziert mit:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Zusammenfassung
Um ein fsck
zu erzwingen Verwenden Sie bei jedem Start unter Linux Mint 18.x entweder tune2fs
, oder fsck.mode=force
, mit optionalem fsck.repair=preen
/ fsck.repair=yes
, wechselt die Kernel-Befehlszeile.
Weitere Untersuchungen und Aktualisierungen bei vorhandener Antwort
Ich wollte jetzt nur prüfen, ob obiges noch auf Ubuntu 20.04 LTS basierten Systemen funktioniert (direkt getestet auf Linux Mint 20 Cinnamon und Ubuntu MATE 20.04 ), und ich habe ein paar Dinge herausgefunden, beginnen wir mit dem Dateisystem-Überprüfungsintervall (ich habe alle Befehle als root ausgeführt (wie Sie vielleicht bemerkt haben ~#
vor Befehlen):
Intervall der Dateisystemprüfung
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Check interval'
Check interval: 0 (<none>)
Nun, das war unerwartet. Ich dachte, wir hätten uns darum gekümmert, aber zum Glück kann es sehr einfach behoben werden. Beachten Sie, dass die Zahl, die als Argument verwendet wird, standardmäßig in Tagen angegeben ist. Achten Sie also darauf, 1s (1 Sekunde) anstelle von nur 1 zu verwenden, was 1 Tag (86400 Sekunden) bedeuten würde:
~# LC_ALL=C tune2fs -i 1s /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting interval between checks to 1 seconds
Wenn wir nun die obige Prüfung wiederholen, erhalten wir:
Check interval: 1 (0:00:01)
Das bedeutet natürlich nicht, dass das Dateisystem jede Sekunde überprüft wird. Vielmehr erzwingt es die Dateisystemprüfung bei jedem Dateisystem-Mount. (Da es keine Möglichkeit gibt, ein System zweimal in einer Sekunde zu booten.)
Maximale Anzahl von Mounts im Dateisystem vor der Prüfung
Standardeinstellung:
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Maximum mount count'
Maximum mount count: -1
Diese Einstellung passt an, wie viele Mounts es dauert, bis das Dateisystem überprüft wird. Es ist in Ordnung, was in der ursprünglichen Antwort geschrieben steht:
~# LC_ALL=C tune2fs -c 1 /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting maximal mount count to 1
Stellen Sie nur sicher, dass Sie nicht 0 oder -1 verwenden, da dies ignoriert würde.
Ich werde wahrscheinlich später weitere Informationen hinzufügen ... Also, schau weiter (Wortspiel beabsichtigt).
Informationsquellen:
tune2fs
Manpage