Wie erzwinge ich fsck bei jedem Start - alle (relevanten) Dateisysteme?


14

Ich arbeite mit einem lüfterlosen PC (tatsächlich hunderte), der Debian 6 und 3 Partitionen (FAT und 2x ext2) hat. Das System verfügt nicht über einen Netzschalter, daher ziehen die meisten Benutzer eher den Netzstecker, um ihn herunterzufahren, als Init 0 (oder einen gleichwertigen Wert). Infolgedessen bauen die Dateisysteme ziemlich schnell Fehler auf.

Ich habe versucht, 'shutdown -rF' zu verwenden, um fsck zu erzwingen, aber das scheint nicht zu funktionieren. Ich frage mich, ob es eine Möglichkeit gibt, das System anzuweisen, jeden Mount-Punkt / FS zu überprüfen, bevor sie gemountet werden.

Ich habe versucht, den fsck-Parameter in / etc / fstab zu setzen. Dadurch erhalte ich normalerweise die Meldung "Fehler gefunden". Führe fsck manuell aus.

Gibt es andere Möglichkeiten, es zu versuchen?


1
A) Wer waren Ihre Benutzer? B) Könnten Sie eine prominente Schaltfläche "Herunterfahren" hinzugefügt haben, die immer auf dem Bildschirm sichtbar war? C) Könnten Sie alternativ Ihre Benutzer unterweisen? D) Warum hatten die Maschinen keine Netzschalter an der Vorderseite?
unvergesslicheUnterstützungMonica

Diese Frage ist nahezu ein Duplikat von unix.stackexchange.com/questions/180488/… desselben Benutzers.
unvergesslicheUnterstützungMonica

Antworten:


16

Befindet /etc/init.d/checkfs.shsich die Zeile in if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, sollte das Bereitstellen forcefsckin der Kernel-Befehlszeile oder das Generieren einer /forcefsckDatei beim Herunterfahren beim nächsten Neustart ein Fsck verursachen.

Um manuelle fsck-Läufe zu verhindern fsck, sollten Sie versuchen, Fehler mit der -yOption automatisch zu beheben, indem Sie yesim folgenden / etc / default / rcS-Eintrag das Kommentarzeichen " no" entfernen und auf "no" setzen. Nach der Bearbeitung sollte es so aussehen:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Eine Option (forcefsck oder FSCKFIX) impliziert nicht die andere.


Wird dies die Bedingung 'Fsck manuell ausführen' behandeln?
Ethrbunny

Tatsächlich habe ich zu schnell gelesen, meine Antwort aktualisiert.
endliche graugrün

Ich habe sowohl FSCKFIX = yes als auch den Wert in gesetzt checkfs.sh. In beiden Fällen wurde fsck beim Neustart nicht ausgeführt (über init 6). Ich muss hier etwas vermissen.
Ethrbunny

Ändern Sie nichts in checkfs.sh, bearbeiten Sie nur / etc / defaults / rcS und führen Sie es touch /forcefsckvor dem Neustart aus. Der letzte Befehl muss vor jedem Neustart oder direkt nach dem Booten ausgeführt werden, aber das fsck-Init-Skript ist fertig.
endliche graugrün

Hmm .. kein Glück. Ich sehe immer noch die Meldung "Ungeprüftes Dateisystem einhängen", gefolgt von vielen "Inode-referenzierten löschen" -Fehlern. Bisher hatte nur die Änderung von / etc / fstab Auswirkungen. Ich bin mir nicht sicher, was ich tue, sodass Ihre Vorschläge nicht funktionieren.
Ethrbunny

7

Ich bearbeite meine Antwort:

Der Befehl lautet:

sudo tune2fs -c 1 /dev/sdX

laut manpages zählt das Argument -c für tune2fs die Anzahl der Mount-Instanzen für eine Partition. Daher zwingt 1 dazu, das fs nach jeder Montageinstanz zu überprüfen.

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )


2
Nur ein Befehl reicht in den meisten Fällen nicht aus, mindestens auch eine minimale Erklärung schreiben.
peterh

7

Fügen Sie den fsck.mode=forceKernel-Parameter in Ihrem Bootloader hinzu. Hängen Sie diese Option an die GRUB_CMDLINE_LINUX_DEFAULT=Variable an /etc/default/grub. Generieren Sie als Root eine neue Grub-Konfigurationsdatei:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

Dieser Parameter hat den gleichen Effekt wie das Erstellen der forcefsckDatei im Stammverzeichnis des Einhängepunkts.

Die Lösung, das checkfs.shSkript zu verwenden, wird besser zu Debian passen, sollte aber nicht auf anderen Distributionen funktionieren

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.