ext4
controllo del filesystem durante l'avvio
Testato su sistema operativo:Linux Mint 18.x in una macchina virtuale
Informazioni di base
/etc/fstab
ha il fsck
ordina come ultima (sesta) colonna, ad esempio:
<file system> <mount point> <type> <options> <dump> <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1
FSCKFIX=yes
variabile in /etc/default/rcS
Questo cambierà fsck in correzione automatica, ma non forza un controllo fsck.
Da 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.
Da man tune2fs
If you are using journaling on your filesystem, your filesystem will never be marked dirty, so it will not normally be checked.
Inizia con
Impostare quanto segue
FSCKFIX=yes
nel file
/etc/default/rcS
Controlla e annota l'ultima volta che fs è stato controllato:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Queste due opzioni NON hanno funzionato
-
Superando
-F
(forzafsck
al riavvio) argomento ashutdown
:shutdown -rF now
No; vedi:
man shutdown
. -
Aggiunta del
/forcefsck
file vuoto con:touch /forcefsck
Questi script sembrano utilizzare questo:
/etc/init.d/checkfs.sh /etc/init.d/checkroot.sh
NON funzionano al riavvio, ma il file è stato eliminato.
Verificato da:
sudo tune2fs -l /dev/sda1 | grep "Last checked" sudo less /var/log/fsck/checkfs sudo less /var/log/fsck/checkroot
Questi sembrano essere i log per il
init
script.
Ripeto, queste due opzioni NON hanno funzionato!
Entrambi questi metodi hanno funzionato
-
switch di avvio del kernel systemd-fsck
Modifica del
grub
principale file di configurazione:sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX="fsck.mode=force"
sudo update-grub sudo reboot
Questo ha fatto un controllo del file system come verificato con:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Nota:questo DID un controllo, ma per forzare anche una correzione, devi specificare
fsck.repair="preen"
ofsck.repair="yes"
. -
Utilizzando
tune2fs
per impostare il numero di montaggi del file system prima di eseguire unfsck
,man tune2fs
tune2fs' info is kept in the file system superblock
-c
switch imposta il numero di volte per montare fs prima di controllare fs.sudo tune2fs -c 1 /dev/sda1
Verifica con:
sudo tune2fs -l /dev/sda1
Questo DID funziona come verificato con:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Riepilogo
Per forzare un fsck
ad ogni avvio su Linux Mint 18.x, usa tune2fs
o fsck.mode=force
, con fsck.repair=preen
facoltativo / fsck.repair=yes
, la riga di comando del kernel cambia.
Ulteriori indagini e aggiornamenti sulla risposta esistente
Ora volevo solo verificare se quanto sopra funziona ancora su sistemi basati su Ubuntu 20.04 LTS (testato direttamente su Linux Mint 20 Cinnamon e Ubuntu MATE 20.04 ), e ho scoperto alcune cose, iniziamo con l'intervallo di controllo del file system (ho eseguito tutti i comandi come root (come potresti notare ~#
davanti ai comandi):
Intervallo di controllo del file system
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Check interval'
Check interval: 0 (<none>)
Bene, questo è stato inaspettato. Pensavo che ce ne fossimo occupati, ma per fortuna può essere risolto molto facilmente. Prendi nota, il numero che prende come argomento è di default in giorni, quindi assicurati di usare 1s (1 secondo) invece di solo 1 che significherebbe 1 giorno (86400 secondi):
~# LC_ALL=C tune2fs -i 1s /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting interval between checks to 1 seconds
Ora, se ripetiamo il controllo precedente, otteniamo:
Check interval: 1 (0:00:01)
Ciò non significa che il file system verrà controllato ogni secondo, ovviamente. Piuttosto, in effetti forzerà il controllo del file system su ogni montaggio del file system. (Poiché non c'è modo di avviare un sistema due volte in un secondo.)
Numero massimo di montaggi del file system prima del controllo
Impostazione predefinita:
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Maximum mount count'
Maximum mount count: -1
Questa impostazione regola il numero di montaggi necessari prima che il file system venga controllato. Va bene ciò che è scritto nella risposta originale:
~# LC_ALL=C tune2fs -c 1 /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting maximal mount count to 1
Assicurati solo di non utilizzare 0 o -1 in quanto verrebbe ignorato.
Probabilmente aggiungerò altre informazioni in seguito... Quindi, continua a controllare (gioco di parole).
Fonti di informazioni:
tune2fs
pagina man