Solaris のシステム管理 (基本編)

ファイルシステムの状態はどのように記録されるか

fsck コマンドは、スーパーブロックに格納された状態フラグを使用して、ファイルシステムの状態を記録します。また、このフラグを使用して、ファイルシステムの整合性をチェックする必要があるか判断します。このフラグは、ブート時に /sbin/rcS スクリプトによって使用されるか、fsck -m コマンドによって使用されます。fsck -m コマンドの結果を無視する場合は、状態フラグの設定に関係なく、すべてのファイルシステムをチェックできます。

スーパーブロックについては、スーパーブロックを参照してください。

表 43–1 に状態フラグの値とその説明を示します。

表 43–1 ファイルシステムの状態フラグの値

状態フラグの値  

説明 

FSACTIVE

ファイルシステムのマウント後、変更されると、状態フラグが FSACTIVE に設定される。ファイルシステムの整合性が失われている可能性がある。変更後のメタデータがディスクに書き込まれるまでは、ファイルシステムに FSACTIVE マークが付けられる。ファイルシステムが正常にマウント解除されると、状態フラグは FSCLEAN に設定される。FSACTIVE フラグが設定されたファイルシステムは、整合性が失われている可能性があるので、fsck コマンドでチェックしなければならない。

FSBAD

ルート (/) ファイルシステムが、FSCLEAN でも FSSTABLE でもない状態のときにマウントされると、状態フラグが FSBAD に設定される。カーネルが、このファイルシステムの状態を FSCLEAN または FSSTABLE に変更することはない。ブートの処理の一部として、ルート (/) ファイルシステムに FSBAD フラグが設定された場合、ルートファイルシステムは読み取り専用としてマウントされる。ルートの raw デバイスに対して fsck コマンドを実行できる。その後で、ルート(/)ファイルシステムを読み取り / 書き込み用にマウントし直す。

FSCLEAN

ファイルシステムが正しくマウント解除された場合は、状態フラグが FSCLEAN に設定される。FSCLEAN 状態フラグが設定されているファイルシステムは、システムのブート時にチェックされない。

FSLOG

UFS ロギングを有効にしてファイルシステムがマウントされた場合は、状態フラグが FSLOG に設定される。システムのブート時、状態フラグが FSLOG のファイルシステムはチェックされない。

FSSTABLE

ファイルシステムはマウントされている (またはされた) が、前回のチェックポイント (sync または fsflush) 以後に変更がなかった。チェックポイントは、通常は 30 秒ごとに発生する。たとえば、カーネルはファイルシステムがアイドル状態かどうかを定期的にチェックし、アイドル状態であれば、スーパーブロック内の情報をディスクにフラッシュさせて FSSTABLE マークを設定する。システムがクラッシュした場合、ファイルシステムの構造は正しいが、少量のデータが失われている可能性がある。FSSTABLE マークが付いたファイルシステムは、マウント前のチェックをスキップできる。ファイルシステムの状態が FSCLEANFSSTABLE 、または FSLOG のいずれでもない場合は、mount コマンドによってファイルシステムを読み取り / 書き込み用にマウントできない。

次の表に、fsck コマンドを使用して、初期状態に基づいて状態フラグを変更する方法を示します。

表 43–2 fsck による状態フラグの変更内容

初期状態 : fsck の実行前

 

fsck の実行後

 

 

エラーなし 

すべてのエラーを修正済み 

エラーが未修正 

不明 

FSSTABLE

FSSTABLE

不明 

FSACTIVE

FSSTABLE

FSSTABLE

FSACTIVE

FSSTABLE

FSSTABLE

FSSTABLE

FSACTIVE

FSCLEAN

FSCLEAN

FSSTABLE

FSACTIVE

FSBAD

FSSTABLE

FSSTABLE

FSBAD

FSLOG

FSLOG

FSLOG

FSLOG