fsck コマンドは、スーパーブロックに格納された状態フラグを使用して、ファイルシステムの状態を記録します。また、このフラグを使用して、ファイルシステムの整合性をチェックすべきかどうかが判断されます。このフラグはブート時には /sbin/rcS スクリプトによって使用され、コマンド行からは fsck に -m オプションを指定した場合に使用されます。fsck の -m オプションの結果を無視するのなら、状態フラグの設定に関係なく、すべてのファイルシステムをチェックできます。
表 31-1 に状態フラグを示します。
表 31-1 状態フラグの値
状態フラグの値 |
説明 |
---|---|
FSCLEAN |
ファイルシステムが正しくマウント解除されていない場合は、状態フラグが FSCLEAN に設定される。FSCLEAN 状態フラグが設定されているファイルシステムは、システムのブート時にチェックされない。
|
FSSTABLE |
ファイルシステムはマウントされている (またはされた) が、前回のチェックポイント (sync または fsflush) 以後に変更がなかった。チェックポイントは、通常は 30 秒ごとに発生する。たとえば、カーネルはファイルシステムがアイドル状態かどうかを定期的にチェックし、アイドル状態であれば、スーパーブロック内の情報をディスクにフラッシュさせて FSSTABLE マークを設定する。システムがクラッシュした場合、ファイルシステムの構造は安定しているが、少量のデータが失われる。FSSTABLE マークが付いたファイルシステムは、マウント前のチェックをスキップできる。ファイルシステムの状態が FSCLEAN でも FSSTABLE でもなければ、mount(2) システムコールではファイルシステムは読み取り/書き込み用にマウントされない。 |
FSACTIVE |
ファイルシステムがマウントされ、後から変更されると、状態フラグが FSACTIVE に設定される。ファイルシステムには整合性のなくなったものが含まれていることがある。変更後のメタデータがディスクに書き込まれる前に、ファイルシステムに FSACTIVE マークが付けられる。ファイルシステムが正常にマウント解除されると、状態フラグは FSCLEAN に設定される。FSACTIVE フラグが設定されたファイルシステムは、整合性がないので、fsck でチェックしなければならない。 |
FSBAD |
ルート (/) ファイルシステムが、状態が FSCLEAN でも FSSTABLE でもないときにマウントされると、状態フラグが FSBAD に設定される。カーネルは、このファイルシステムの応対を FSCLEAN または FSSTABLE に変更しない。ルート (/) のファイルシステムにブートプロセスの一部として FSBAD フラグが設定されると、読み取り専用としてマウントされる。row のルートデバイス上で fsck を実行できる。その後で、ルート (/) ファイルシステムを読み取り/書き込みとしてマウントし直す。 |
表 31-2 は、状態フラグが変更される場合を示しています。
表 31-2 状態フラグが変更される場合
fsck の前 |
fsck の後 |
|
|
---|---|---|---|
|
|
新しい状態 |
|
初期状態 |
エラーなし |
すべてのエラーを修正済み |
エラーが未修正 |
不明 |
安定 |
安定 |
不明 |
有効 |
安定 |
安定 |
有効 |
安定 |
安定 |
安定 |
有効 |
クリーン |
クリーン |
安定 |
有効 |
不良 |
安定 |
安定 |
不良 |