ext4
kontrola souborového systému během bootování
Testováno na OS:Linux Mint 18.x ve virtuálním počítači
Základní informace
/etc/fstab
má fsck
pořadí jako poslední (6.) sloupec, například:
<file system> <mount point> <type> <options> <dump> <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1
FSCKFIX=yes
proměnná v /etc/default/rcS
Tím se změní fsck na automatickou opravu, ale ne vynutit kontrolu fsck.
Od 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.
Od man tune2fs
If you are using journaling on your filesystem, your filesystem will never be marked dirty, so it will not normally be checked.
Začít s
Nastavení následujícího
FSCKFIX=yes
v souboru
/etc/default/rcS
Zkontrolujte a poznamenejte si poslední kontrolu fs:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Tyto dvě možnosti NEFUNGOVALY
-
Absolvování
-F
(vynutitfsck
při restartu) argument nashutdown
:shutdown -rF now
Ani náhodou; viz:
man shutdown
. -
Přidání
/forcefsck
prázdný soubor s:touch /forcefsck
Zdá se, že tyto skripty používají toto:
/etc/init.d/checkfs.sh /etc/init.d/checkroot.sh
NE pracovat na restartu, ale soubor byl smazán.
Ověřeno:
sudo tune2fs -l /dev/sda1 | grep "Last checked" sudo less /var/log/fsck/checkfs sudo less /var/log/fsck/checkroot
Zdá se, že toto jsou protokoly pro
init
skripty.
Opakuji, tyto dvě možnosti NEFUNGOVALY!
Obě tyto metody fungovaly
-
systemd-fsck spouštěcí přepínače jádra
Úprava hlavního
grub
konfigurační soubor:sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX="fsck.mode=force"
sudo update-grub sudo reboot
To provedlo kontrolu souborového systému ověřenou pomocí:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Poznámka:Toto DÍLO kontrola, ale chcete-li také vynutit opravu, musíte zadat
fsck.repair="preen"
nebofsck.repair="yes"
. -
Pomocí
tune2fs
pro nastavení počtu připojení systému souborů před provedenímfsck
,man tune2fs
tune2fs' info is kept in the file system superblock
-c
přepínač nastavuje počet připojení fs před kontrolou fs.sudo tune2fs -c 1 /dev/sda1
Ověřte pomocí:
sudo tune2fs -l /dev/sda1
Toto DÍLO pracovat jako ověřeno s:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Shrnutí
Chcete-li vynutit fsck
při každém spuštění na Linux Mint 18.x použijte buď tune2fs
nebo fsck.mode=force
, s volitelným fsck.repair=preen
/ fsck.repair=yes
, přepne se příkazový řádek jádra.
Další šetření a aktualizace stávající odpovědi
Nyní jsem jen chtěl zkontrolovat, zda výše uvedené stále funguje na systémech založených na Ubuntu 20.04 LTS (přímo testováno na Linux Mint 20 Cinnamon a Ubuntu MATE 20.04 ), a zjistil jsem pár věcí, začněme intervalem kontroly souborového systému (všechny příkazy jsem spouštěl jako root (jak jste si mohli všimnout ~#
před příkazy):
Interval kontroly systému souborů
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Check interval'
Check interval: 0 (<none>)
No, tohle bylo nečekané. Myslel jsem, že jsme se o to postarali, ale dá se to naštěstí velmi snadno opravit. Všimněte si, že číslo, které se používá jako argument, je ve výchozím nastavení ve dnech, takže nezapomeňte použít 1 s (1 sekundy) místo pouhé 1, což by znamenalo 1 den (86 400 sekund):
~# LC_ALL=C tune2fs -i 1s /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting interval between checks to 1 seconds
Nyní, když zopakujeme výše uvedenou kontrolu, dostaneme:
Check interval: 1 (0:00:01)
To samozřejmě neznamená, že souborový systém bude kontrolován každou sekundu. Spíše ve skutečnosti vynutí kontrolu souborového systému při každém připojení souborového systému. (Protože neexistuje způsob, jak zavést systém dvakrát za sekundu.)
Maximální počet připojení systému souborů před kontrolou
Výchozí nastavení:
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Maximum mount count'
Maximum mount count: -1
Toto nastavení upravuje, kolik připojení je potřeba ke kontrole systému souborů. Je v pořádku, co je napsáno v původní odpovědi:
~# LC_ALL=C tune2fs -c 1 /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting maximal mount count to 1
Jen se ujistěte, že nepoužíváte 0 nebo -1, protože by to bylo ignorováno.
Pravděpodobně přidám více informací později... Takže pokračujte v kontrole (zamýšlená slovní hříčka).
Informační zdroje:
tune2fs
manuálová stránka