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

検証

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  ]
・・・略・・・

元記事はこちら

CentOS6 fsckを強制/抑止する