seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

ルートに対してマウント解除せずfsckを実行する方法

fsckはマウントされている状態では実行してはならないのはLinuxの常識らしい。*1

では、ルートに対してfsckをかけるにはどうしたらよいのか?

わからなかったので調べてみた。

何回マウントする毎に、あるいは何日ごとにfsckをかけるというオプションがあるらしいので、これを使うのが良いらしい。

そこで、ルートとしてマウントされる論理ボリュームには、どんな設定がされているのか見てみた。

すると、回数は-1、日付は無期限になっていて、つまり、fsckはしない、という設定になっている。(これはCentOS5.2デフォルトの設定だと思う。)

この意図するところがわからないのだが、つまりfsckは再起動しても永久にかかることはなさそうだ。

では、他にWindowschkdskのようにお手軽に確認する方法はないものだろうか?(あれもシステムドライブは起動時にチェックするしかないけれど。)

レスキューモードで立ち上げれば、むろん可能だが、論理ボリュームを使っているのならばスナップショットを使うことで確認はできるようである。

lvcreate --snapshot --size=1G --name=snap /dev/VolGroup00/LogVol00
fsck -f /dev/VolGroup00/snap

こんな感じでスナップショットを作れば、それに対してチェックはできるようである。

ただし、仮に修復してもsnapshotへの書き込みは本体へは反映されないので、その場合はレスキューモードでやることになるのだと思う。

とりあえず、これでシステムを止めずに確認することはできそう。*2

サイズの大きなボリュームに対して起動時にfsckをかけるのはbad ideas、やるならスナップショットをとってやれ、と、どこかの掲示板に書かれていたが、たぶん、CentOS5.2の標準でそうなっているのは、そうゆう理由なのだと思う。

*1:やってみましたよorz。仮想イメージだったからよかったけれど、これが実機だったら最悪ですね。もう、本当に確実に壊れてくれました。

*2:物理的に問題があればスナップショットの作成時点でエラーになりそうな気が一瞬したのだけれど、そうじゃないのか。スナップショットを作成した時点では物理ディスクを走査したりコピーしたりするわけではないから、その時点ではエラーはわからないのか。なので、fsckでチェックすれば実際のボリュームに対してチェックをかけているのとイコールということになりそう。これは、たしかに良い方法かもしれない。