ext4
起動時のファイルシステムチェック
OS でテスト済み:仮想マシンの Linux Mint 18.x
基本情報
/etc/fstab
fsck
を持っています たとえば、最後 (6 番目) の列として注文します。
<file system> <mount point> <type> <options> <dump> <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1
FSCKFIX=yes
/etc/default/rcS
の変数
これにより fsck が自動修正に変更されますが、変更されません fsck チェックを強制します。
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.
man tune2fs
から
If you are using journaling on your filesystem, your filesystem will never be marked dirty, so it will not normally be checked.
から始める
以下の設定
FSCKFIX=yes
ファイル内
/etc/default/rcS
fs が最後にチェックされた時間を確認してメモします:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
これら 2 つのオプションは機能しませんでした
<オール>
-F
を渡す (強制 fsck
再起動時) shutdown
への引数 :
shutdown -rF now
いいえ;参照:man shutdown
.
/forcefsck
を追加する 空のファイル:
touch /forcefsck
これらのスクリプトはこれを使用しているようです:
/etc/init.d/checkfs.sh
/etc/init.d/checkroot.sh
しなかった 再起動時に動作しますが、ファイルは削除されました。
検証者:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
sudo less /var/log/fsck/checkfs
sudo less /var/log/fsck/checkroot
これらは init
のログのようです
繰り返しますが、これら 2 つのオプションは機能しませんでした!
これらの方法はどちらも DID が機能します
<オール>systemd-fsck カーネル ブート スイッチ
メインの grub
の編集 構成ファイル:
sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX="fsck.mode=force"
sudo update-grub
sudo reboot
これは以下で検証されたようにファイルシステムチェックを行いました:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
注:この DID チェックしますが、強制的に修正するには、fsck.repair="preen"
を指定する必要があります 、または fsck.repair="yes"
.
tune2fs
の使用 fsck
を実行する前にファイル システムのマウント数を設定する 、 man tune2fs
tune2fs' info is kept in the file system superblock
-c
スイッチは、fs をチェックする前に fs をマウントする回数を設定します。
sudo tune2fs -c 1 /dev/sda1
確認:
sudo tune2fs -l /dev/sda1
このDID 検証済みの動作:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
まとめ
fsck
を強制するには Linux Mint 18.x で起動するたびに、 tune2fs
のいずれかを使用します 、または fsck.mode=force
、オプションの fsck.repair=preen
付き / fsck.repair=yes
、カーネルコマンドラインスイッチ。
既存の回答に対するさらなる調査と更新
上記がUbuntu 20.04 LTSベースのシステムで引き続き機能するかどうかを確認したかっただけです (Linux Mint 20 Cinnamon および Ubuntu MATE 20.04 で直接テスト)、ファイル システムのチェック間隔から始めましょう (すべてのコマンドをルートとして実行しました (お気づきかもしれませんが、~#
) コマンドの前):
ファイル システムのチェック間隔
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Check interval'
Check interval: 0 (<none>)
うーん、これは予想外でした。私たちはそれを世話したと思っていましたが、幸運にも非常に簡単に修正できます.引数として受け取る数値はデフォルトで日数ですので、1 日 (86400 秒) を意味する 1 ではなく、必ず 1 (1 秒) を使用してください:
~# LC_ALL=C tune2fs -i 1s /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting interval between checks to 1 seconds
ここで、上記のチェックを繰り返すと、次のようになります。
Check interval: 1 (0:00:01)
もちろん、これはファイルシステムが 1 秒ごとにチェックされるという意味ではありません。むしろ、事実上、すべてのファイル システム マウントでファイル システム チェックを強制します。 (システムを 1 秒間に 2 回起動する方法はありません。)
チェック前のファイル システムの最大マウント数
デフォルト設定:
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Maximum mount count'
Maximum mount count: -1
この設定は、ファイル システムがチェックされるまでに必要なマウントの回数を調整します。元の回答に書かれていることは問題ありません:
~# LC_ALL=C tune2fs -c 1 /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting maximal mount count to 1
無視されるため、0 または -1 を使用しないように注意してください。
後でさらに情報を追加する予定です...だから、チェックし続けてください(しゃれが意図されています)。
情報源:
tune2fs
マニュアルページ