2011年1月17日月曜日

定期的に実行されるfsckを無効化

クラスタ構成を組んでいるシステムで、サーバに障害が発生しても、
fsckがかかりフェールオーバに時間を要することがある。
そのためいつfsckをさせるか検討しておく必要がある。




fsckの動作基礎知識
(1) デバイスがmountされた状態でサーバがダウンすればfsckは必ず実行される。

(2) 正常なshutdownシーケンスが走った場合は、fsckが動作するかどうかは設定による。


(1)時のfsckは仕様がない。
しかしながら、サービスの提供が最優先時に(2)のfsckは不要であろう。
そこで今回は(2)の対応を検討する。
(1)のfsck必須時のfsck高速化の検討はここでしている。



ファイルシステムをチェックする最大マウント回数の変更
・ 現在設定しているマウント回数の確認
# tune2fs -l $デバイス名 | fgrep 'Maximum mount count'
Maximum mount count:      XX

tune2fsコマンドで確認できる項目はスーパーブロックに保存される。
ファイル管理されていると思ってさがしてしまったことがあるorz


・ 最大マウント回数(0回、つまりしない)の変更
# tune2fs -c 0 $デバイス名
Setting maximal mount count to -1

マウントしたままで設定変更可能かつ有効になる。
コマンド実行後に即設定は反映される。


・ 変更後の設定確認
# tune2fs -l $デバイス名 | fgrep 'Maximum mount count'
Maximum mount count:      -1 ←こうなっていればよい




ファイルシステムをチェックするインターバルの変更
・ 現在設定しているインターバルの確認
# tune2fs -l $デバイス名 | fgrep 'Check interval'
Check interval:  XX s

マウントされた状態でインターバルの期間を迎えた場合は、
/var/log/messagesに警告が出るだけでfsckは実施されない。
ただし、デバイスがumountされ、mountされるタイミングでは実施される。


・ インターバル(0秒、つまりしない)の変更
# tune2fs -i 0 $デバイス名
Setting interval between checks to 0 seconds


マウントしたままで設定変更可能かつ有効になる。
コマンド実行後に即設定は反映される。


・ 変更後設定確認
# tune2fs -l $デバイス名 | fgrep 'Check interval'
Check interval:           0 ←こうなっていればよい




その他、コマンドもメモ。
◆ システム起動時のマウント前のfsckを強制
-Fオプションを付けてshutdownコマンドを実行する。
# shutdown -F -r now