fsck:起動時にHDDがチェックされるタイミングの設定

通常、ハードディスクの各パーティションは、設定で決められた回数マウントされると起動時にfsckによって自動的にファイルシステムのチェックと修復が行われる。

自動的にfsckをかけるかどうかの判断には、/etc/fstabが参照される。fstabには、mountに関する設定の6項目が6つのフィールドにわかれて書かれているが、6つめの(最後の)フィールドの数値がfsckに関する設定。

その数値が「0」または無記載だと、そのパーティションは自動チェックの対象とならない。起動するシステムのある「/」(ルート)パーティションを自動チェックする場合は、数値を必ず「1」にしなければならない。それ以外のパーティションは、「2」にする。

Vineでは、オートマウントがあるので、自分でfstabを編集するのは非推奨)

(fstabの例)
LABEL=/1 / ext3 defaults 1 1
/dev/hda4 /mnt/hda4 ext3 defaults 1 2

(近頃のLinuxは、デバイスを自動的にマウントする仕組みがあるが、その場合起動時のfsckはどうなっているのだろう?)

チェックされるタイミングの設定

以下、「/dev/sda1」を例に。設定はrootで。

1. 現在の設定を調べる。

現在マウントされているファイルシステムを調べる。

df -h

ファイルシステムの様々な情報の表示。

tune2fs -l /dev/sda1

「Filesystem created」の日時で、「そうか、あれから2年か……」などという感慨にひたれる。

これでは情報が多すぎるので、必要な箇所だけをgrepで抜き出す。

tune2fs -l /dev/sda1 | grep -i "mount count"
grepの「-i」オプションは、大文字と小文字を無視するためのオプション)

  • 「Mount count」が、前回のfskc以降にマウントされた回数。
  • 「Maximum mount count」が、自動的にfsckを開始するマウントの回数。
2. fsckの間隔設定

以下のコマンドでマウント回数を指定。

(マウント回数を50回にしたい場合の例)
tune2fs -c 50 /dev/sda1

お好みで、「df -h」で確認した各パーティションに同様の操作をする。

設定の確認は、

tune2fs -l /dev/sda1 | grep Maximum

備考

チェックの間隔(マウント回数)をどの程度にするのが最適かははわからない。

心配性の人は起動するたびに毎回チェックしたいかもしれないし、起動が遅くなることを嫌う人やファイルシステムの状態など知ったことかという人は、できるだけチェックをしたくないかもしれない。

環境や使い方によっても間隔は変わってくる。

RAID1を組んでいる人は、バックアップが確実なので、それほど頻繁にチェックする必要がないかもしれない。

頻繁に起動を繰り返す場合は、それだけマウントの回数も多くなるのでfsckが動くマウント回数を少なく設定していると、無闇にfsckが動く事になる。ほとんど電源を落とさない場合は、その逆になる(時間間隔による設定も可能)。

そもそも、どの程度fsckすべきなのかもわからない。HDDはいつかは壊れるものだし、ファイルシステムに異常があるときやその可能性があるときは、起動時にfsckするよううながされる。なによりも重要なのは、日頃のバックアップである。

ということで、fsckの間隔はユーザーの考え方次第。

自分の環境や起動間隔や使用時間と、どの程度チェックしたいかを考慮して、チェック間隔を決めるしかないだろう。

たとえばコンスタントに1日に2度くらい起動する場合で、10日に1度くらいはfsckをしたいなら「-c 20」という具合。

総ファイルサイズが小さい場合は、頻繁にfsckが動いても特に問題はないかもしれないが、総ファイルサイズが大きいとfsckに時間がかかって面倒なので、それも考慮のポイントとなる。

また、システムのある「/」パーティションとそれ以外のパーティションで間隔を変えることもあり得るし、新しくて信頼性の高いHDDか古いHDDかも判断の基準となり得る。データの書き替え(ファイルの上書き)が頻繁に行われるパーティションかどうか、バックアップが確実かどうかも判断材料となる。

andy