FSCK_FFS(8)

名称
fsck_ffs - Fast File System の一貫性のチェック、および、対話的な修正

書式
fsck_ffs [-B byte order] [-b block#] [-c level] [-d] [-f] [-m mode] [-p] [-y] [-n] filesystem ...

解説
fsck_ffs は、コマンドラインで指定した各ファイルシステムの一貫性のチェックや 修復を対話的に行います。通常は fsck(8) から起動されます。

カーネルは、ハードウェアやソフトウェアの障害が起きない限り、ある特定のクラスの 無害なファイルシステム上の不整合しか起こさないように動作します。 これには以下のものがあります:

参照されていない inode
inode のリンクカウントの過多
フリーマップ中にないフリーブロック
フリーマップとファイルの両方にあるブロック
スーパーブロックのカウント異常

``preen'' モード (-p オプションつきのモード) での fsck_ffs では、上記の不整合だけを修正します。これら以外の不整合を発見すると、 fsck_ffs は異常を表す終了ステータスをもって終了します。 不整合を修正するたびに、修正が行われたファイルシステムと 修正の内容が表示されます。 ファイルシステムの修正に成功すると、 fsck_ffs はファイルシステム中のファイル数、使用中ブロックとフリーブロックの数、 フラグメントの割合を表示します。

ファイルシステムのチェック中に QUIT シグナルが送られると、 fsck_ffs はチェックを終了させて、異常を表す終了ステータスをもって終了します。

-p オプションがない場合には、 fsck_ffs はファイルシステムの検査を行い、不整合を対話的に修正します。 もしファイルシステムに不整合があると、修正を行う前にオペレータに確認を 求めます。 -p オプションによって修正できないような修正作業は、 ファイルのデータがいくらか失われる可能性があることに注意すべきです。 失われるデータの量とその致命度は、診断出力から知ることができます。 デフォルトでは、個々の一貫性修正は、オペレータが yes または no と答えるまで待つことになっています。 オペレータにファイルシステムへの書込み権限がない場合には、 fsck_ffs は -n フラグの動作をデフォルトとします。

fsck_ffs は、以前使われていた check や dcheck, fcheck, icheck の組合せよりもより詳しい一貫性チェックを行います。

fsck_ffs は以下のフラグを解釈します:

-B  必要であれば、ファイルシステムのメタデータを指定されたバイトオーダに コンバートします。 バイトオーダは `be' と `le' を受け付けます。 もし がメタデータのバイトオーダの入れ換え中に割り込まれると、 そのファイルシステムは復旧不可能になります。 は、インタラクティブモードであれば、ファイルシステムのバイトオーダと ホストのバイトオーダが違う場合にメッセージを出力します。

-b  このフラグの直後に指定した番号のブロックを、ファイルシステムの スーパーブロックとして使用します。 通常は、ブロック番号 32 が代替スーパーブロックになります。

-c  ファイルシステムを指定したレベルへ変換します。 ファイルシステムのレベルは上げることのみが可能であることに注意してください。
    現在は、以下の 4 レベルが定義されています。

    0   ファイルシステムは古い (静的テーブル) フォーマットです。

    1   ファイルシステムは新しい (動的テーブル) フォーマットです。

    2   ファイルシステムは 32 ビットの UID と GID 、 inode 内へ格納される短いシンボリックリンクをサポートします。 また、ディレクトリはファイルタイプを示す追加フィールドを持ちます。

    3   maxcontig が 1 より大きい場合、連続したブロックを探す助けとなる フリーセグメントマップを作成します。 maxcontig が 1 の場合は、存在しているセグメントマップは全て削除されます。

    対話モードでは、 fsck_ffs は実行される変換の内容を表示して、実際に変換を行うかどうかを 問い合わせます。 no と答えると、ファイルシステムへのそれ以上の操作は行われません。 preen モードでは、変換が可能ならばユーザへの問い合わせなしに行われます。 preen モードでの変換は、すべてのファイルシステムを一度に変換してしまいたい 場合に最適です。ファイルシステムのフォーマットは、 dumpfs(8) の出力の 2 行目から知ることができます。

-d  デバッグ出力を表示します。

-f  ファイルシステムのチェックを強制します。 通常は、unmount が手際よく行われていた場合には、カーネルは “clean フラグ” をそのファイルシステムのスーパブロックにセットし、 fsck_ffs はそのファイルシステムのチェックを行いません。このオプションは、 clean フラグの状態に関係なく fsck_ffs にファイルシステムのチェックを強制させます。

-m  lost+found ディレクトリを作成する場合のファイル属性を、デフォルトである 1700 の 代りに、このフラグの直後で指定した 8 進数の値を使用します。 特に、失われたファイルをシステム上の全てのユーザにアクセスされないように するためには、より制限の厳しい 700 などの許可属性にすべきです。

-n  fsck_ffs からの ‘CONTINUE?’ を除くすべての問い合わせに no と答えます。 このオプションでは、ファイルシステムを書込み属性ではオープンしません。

-p  上で示した ``preen'' モードを指定します。

-y  fsck_ffs からのすべての問い合わせに yes と答えます。 このオプションを指定すると、 本質的な過度のトラブルに遭遇した後でも無制限に作業を続行するので、 充分に注意して使用すべきです。

ファイルシステムは、以下の点について検査されます:
1.  複数の inode やフリーマップから使用されているブロック
2.  ファイルシステム領域外の inode から使用されているブロック
3.  不正なリンクカウント
4.  サイズのチェック:
    サイズが DIRBLKSIZ の倍数でないディレクトリ
    部分的に切り詰められているファイル
5.  不正な inode フォーマット
6.  どこからも使用されていないブロック
7.  ディレクトリのチェック:
    割り当てられていない inode を指しているファイル
    範囲外の inode 番号
    最初の 2 つのエントリが `.' と `..' でないか、不正な inode 番号を持つ ディレクトリ
8.  スーパーブロックのチェック:
    ファイルシステムにある inode よりも多いブロック
    不正なフリーブロックマップフォーマット
    フリーブロックの総数やフリーな inode の総数の誤り

親のいないファイルやディレクトリ (割り当てられているが参照されていない) は、 オペレータへ問い合わせたあとで lost+found ディレクトリ下に再接続されます。その際のファイル名は inode 番号になります。 もし lost+found ディレクトリが存在しない場合は、新たに作成されます。 充分なスペースがない場合には、そのサイズが拡張されます。

ブロックデバイスとバッファキャッシュの不一致を避けるため、 つねに raw デバイスを指定すべきです。

診断
fsck_ffs が提供する診断の仕組みは、 Fsck - The UNIX File System Check Program. の Appendix A に全て列挙し説明してあります。

関連項目
fstab(5), fs(5), fsdb(8), newfs(8), reboot(8), fsck(8)