【Linux】OSブート時のfsck自動実行について
Linuxでは一定条件でOSブート時にfsckによるファイルシステムのチェックが行われるようになっています。
一度fsckのチェックが走ると、起動するまでに時間がかかり予期せぬダウンタイムの増加となってしまうことがあります。
※デフォルトで自動実行をオフにしているディストリビューションもあります。(AmazonLinux等)
このfsck自動実行に関する条件の確認や変更、停止の方法について書いていきます。
更新履歴
- 2021/8/26
- コード部分にシンタックスハイライターを適用
現在の設定確認
tune2fsというコマンドを用いて確認します。
l(エル)オプションの後に対象デバイスを指定します。
tune2fs -l /dev/sda2
・・・(中略)・・・
Mount count: 1
Maximum mount count: 33
Last checked: Tue Jul 23 09:28:32 2019
Check interval: 15552000 (6 months)
Next check after: Sun Jan 19 09:28:32 2020
・・・(中略)・・・
- Mount count: 現在のマウント回数
- Maximum mount count: fsck自動起動までの最大マウント回数
- Last checked: 最後にチェックした日時
- Check interval: チェック間隔
- Next check after: 次回自動チェックが有効になる日時
Mount countがMaximum mount countに達したかNext check afterの日時以降でOSを再起動すると、fsckの自動チェックが行われると思います。
ちなみにAmazonLinuxではデフォルトで以下の設定となっています。
tune2fs -l /dev/xvda1
・・・(中略)・・・
Mount count: 41
Maximum mount count: -1
Last checked: Wed May 9 02:47:54 2018
Check interval: 0 (<none>)
・・・(中略)・・・
Maximum mount countやCheck intervalが無効化されています。
Check intervalが無効化されている関係でNext check afterの項目は表示されませんでした。
設定変更
マウント回数によるチェック設定
tune2fsコマンドのcオプションを使用して設定します。
# 例:fsck自動チェックまでの最大マウント回数を50回に変更する
tune2fs -c 50
回数に0か-1を指定するとマウント回数によるfsckの自動チェックは無視(無効化)されます。
# 例:無効化
tune2fs -c 0
※man tune2fsも確認しておいて下さい。
期間によるチェック設定
tune2fsコマンドのiオプションを使用して設定します。
# 例:最後にチェックした時から10日以降の間隔でチェック
tune2fs -i 10d
# 例:dは省略可能(上と同じ設定)
tune2fs -i 10
#例:最後にチェックした時から3か月以降の間隔でチェック
tune2fs -i 3m
# 例:最後にチェックした時から2週間以降の間隔でチェック
tune2fs -i 2w
期間に0を指定すると期間によるfsckの自動チェックは無視(無効化)されます。
# 例:無効化
tune2fs -i 0
※man tune2fsも確認しておいて下さい。
fstabによる有効化と無効化
システム起動時にマウントされるデバイスは/etc/fstabに設定されています。
NFSなどを自動マウントしたい時にもお世話になる設定ファイルですが、この第6パラメータがfsckの自動チェックの設定になっています。
# ・・・(中略)・・・
UUID=xxx / ext4 defaults,errors=remount-ro 0 1
# ・・・(中略)・・・
上記の設定では、1の部分がfsckの起動に関する設定です。
※古いシステムではUUID指定ではない時もありますが、気にしなくてもOKです
この第6パラメータの意味は以下のようになっています。
- 0: fsckのチェックなし
- 1: ルートファイルシステムのチェック
- 2: ルートファイルシステム以外のチェック
この1や2となっている第6パラメータの部分を0に設定すればfsckによるチェックが行われなくなります。
※fstabの書き換えは危険ですので十分注意して行って下さい。
※記述ミスは即カーネルパニックにつながり、OSが起動しなくなります。