Linux起動時の自動ファイルシステムチェックを強制/抑止(スキップ)する方法です。
バージョン・ディストリビューションによっては shutdown コマンドのオプション付与や fastboot コマンドで可能なようですが、CentOS6の場合はオプションが存在しませんでした。
ファイルシステムチェックが動いた場合、通常よりOS起動時間が掛かることになります。 急いでいる時に限って実行されたりするので無効化手段の備忘録です。 尚、CentOS7の場合は、デフォルトのファイルシステムがXFSなので起動時のfsckは実行されません。
環境
- CentOS 6.6
次回起動時にfsckを強制
# 強制 $ sudo touch /forcefsck
次回起動時にfsckを抑止
# 抑止(スキップ) $ sudo touch /fastboot
fsck無効化設定
設定上で起動時のファイルシステムチェックを無効化してしまえば実行されません。
# 回数(Maximum mount count) $ sudo tune2fs -c 0 /dev/xvda1 # 期間(Check interval) $ sudo tune2fs -i 0 /dev/xvda1
以上です。
参考URL
- How to force a fsck on server reboot
- Man page of SHUTDOWN SysVinit
- Man page of SHUTDOWN util-linux
- Linuxで次回起動時にfsckを強制または抑止する方法について
検証
shutdown オプション
man shutdown
に F、f オプションはありません。
man
OPTIONS -r Requests that the system be rebooted after it has been brought down. -h Requests that the system be either halted or powered off after it has been brought down, with the choice as to which left up to the system. -H Requests that the system be halted after it has been brought down. -P Requests that the system be powered off after it has been brought down. -c Cancels a running shutdown. TIME is not specified with this option, the first argument is MESSAGE. -k Only send out the warning messages and disable logins, do not actually bring the system down.
shutdown --help
を見ても F、f オプションはありません。
help
Options: -r reboot after shutdown -h halt or power off after shutdown -H halt after shutdown (implies -h) -P power off after shutdown (implies -h) -c cancel a running shutdown -k only send warnings, don't shutdown -q, --quiet reduce output to errors only -v, --verbose increase output to include informational messages --help display this help and exit --version output version information and exit
sysinitスクリプトに記述があります。
$ grep -n -e 'fastboot' -e 'forcefsck' /etc/rc.d/rc.sysinit 227:if [ -f /fastboot ] || strstr "$cmdline" fastboot ; then 228: fastboot=yes 235:if [ -f /forcefsck ] || strstr "$cmdline" forcefsck ; then 421:if [ -z "$fastboot" -a "$READONLY" != "yes" ]; then 601:rm -f /fastboot /fsckoptions /forcefsck /.autofsck /forcequotacheck /halt
抑止確認
再起動実行前状態
Maximum mount count を 2 に減らし、 fsck実行条件に合致する状態でOSを停止/起動して検証しました。 (Check interval の超過でも同様です。)
$ sudo tune2fs -c 2 /dev/xvda1 tune2fs 1.41.12 (17-May-2010) Setting maximal mount count to 2 $ sudo tune2fs -l /dev/xvda1 | grep "[m|M]ount count" Mount count: 4 Maximum mount count: 2
fsck有り
ファイルシステムチェックが実行され、Mount countがクリアされます。
$ sudo tune2fs -l /dev/xvda1 | grep "[m|M]ount count" Mount count: 1 Maximum mount count: 2 $ cat /var/log/boot.log ・・・略・・・ ファイルシステムを検査中 すべてのファイルシステム検査します。 [/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a /dev/xvda1 /: clean, 224589/6553600 files, 1663282/26213807 blocks (check in 2 mounts) [ OK ] ルートファイルシステムを読み書きモードで再マウント中: [ OK ] ローカルファイルシステムをマウント中: [ OK ] /etc/fstab スワップスペースを有効化中: [ OK ] ・・・略・・・
fsck無し(fastboot)
Maximum Mount count を超えていますが、ファイルシステムチェックは実行されません。
$ sudo tune2fs -l /dev/xvda1 | grep "[m|M]ount count" Mount count: 5 Maximum mount count: 2 $ cat /var/log/boot.log ・・・略・・・ ルートファイルシステムを読み書きモードで再マウント中: [ OK ] ローカルファイルシステムをマウント中: [ OK ] /etc/fstab スワップスペースを有効化中: [ OK ] ・・・略・・・