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

Was soll ich tun, um die Überprüfung des Root-Dateisystems (und optional einen Fix) beim Booten zu erzwingen?

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

  1. Bestehen von -F (fsck erzwingen beim Neustart) Argument zu shutdown :

    shutdown -rF now
    

    Nö; siehe:man shutdown .

  2. 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

  1. 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 , oder fsck.repair="yes" .

  2. Mit tune2fs um die Anzahl der Dateisystem-Mounts festzulegen, bevor fsck 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

Linux
  1. Linux – Wie erzwinge ich die Überprüfung des Root-Dateisystems (und optional einen Fix) beim Booten?

  2. So erzwingen Sie die Überprüfung des Root-Dateisystems mit fsck während des Neustarts

  3. Was ist der Unterschied beim Umleiten einer Ausgabe mit >, &>, >&und 2&>?

  4. Was ist der Unterschied zwischen dem Schreiben in eine Datei und einem zugeordneten Speicher?

  5. Was ist der Unterschied zwischen fsync und syncfs?

So erzwingen Sie die „FSCK“-Dateisystemprüfung auf Ubuntu

Was ist die ONLYOFFICE Community-Funktion und warum sollten Sie sie verwenden?

10 Beispiele für Linux-Fsck-Befehle zum Überprüfen und Reparieren des Dateisystems

Was ist der Unterschied zwischen Abschnitt und Segment im ELF-Dateiformat

Was sind die Unterschiede zwischen `chattr +i FILE` und `chmod -w FILE`?

Was ist das NSFS-Dateisystem?