FSCK_FFS(8)

名称
fsck_ffs, fsck_ufs - ファイルシステムの整合性チェックと対話的修正

書式
fsck_ffs [-BFpfny] [-b block#] [-c level] [-m mode] filesystem ...

解説
指定したディスクパーティションやファイルシステムをチェックします。 preen モードでは、各ファイルシステムのスーパブロックの クリーン (clean) フラグを調べ、 クリーンでないファイルシステムのみをチェックします。 ファイルシステムがクリーンとマークされるのは、 アンマウントされた時、読み取り専用でマウントされた時、 fsck_ffs が成功裏に実行された時です。 -f オプションを指定した場合、クリーンフラグの状態にかかわらず ファイルシステムをチェックします。

カーネルは、ハードウェアやソフトウェアに障害が起きない限り、 ファイルシステムには限定された無害な不整合しか起こさない様に 動作します。 それらの不整合には以下の物があります。

参照されない inode
inode のリンクカウントが多すぎる
フリーマップ中にないフリー (空き) ブロック
フリーマップとファイルの両方にあるブロック
スーパブロック内の数値の異常

-p オプション付の fsck_ffs では、上記の不整合のみを修正します。その他の不整合を発見すると、 fsck_ffs は異常終了のステータスを返して終了し、自動リブートは失敗します。 不整合を修正するたびに、ファイルシステムと修正内容が表示されます。 ファイルシステムの修正に成功した後で、 fsck_ffs はファイルシステム中のファイル数、使用中ブロックとフリーブロックの数、 フラグメントの割合を表示します。

fsck_ffs がファイルシステムをチェックしている間に QUIT シグナルを送ると、 fsck_ffs はチェックを続けますが、終了時に異常終了のステータスを返し、 自動リブートを失敗させます。 これは、自動リブートによるファイルシステムチェックは行いたいが、 チェック完了後にマルチユーザモードに移行したくない場合に有用です。

fsck_ffs が SIGINFO シグナルを受信すると ( stty(1) の “status” 引数を参照してください)、 現在チェック中のデバイスと現在フェーズ番号とフェーズ固有の進捗情報を示す行が、 標準出力へ書かれます。

-p オプションなしでは、 fsck_ffs はファイルシステムの状態の検査をおこない、それを対話的に修正します。 ファイルシステムに不整合がある場合、修正を実施する前にオペレータへ 確認を求めます。 -p オプションでは直せない修正では、データが失われる可能性があることに 注意すべきです。 失われるデータの量とその致命度は、診断メッセージから判断して下さい。 デフォルト動作では、修正を実行する前に、オペレータが yes か no と応答するまで待ちます。 オペレータにファイルシステムの書き込み権限がない場合、 fsck_ffs は、 -n オプションの動作をデフォルトにします。

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

-F  ファイルシステムをすぐにフォアグラウンドでクリーンにする必要があるか、 それともバックグラウンドにして遅らせることができるかどうかを判定します。 バックグラウンドクリーニングのためには、 ソフトアップデートで実行しており、 フォアグラウンドでのチェックが必要という印が付いておらず、 バックグラウンドチェックの終了時にマウントされ書き込みされることが必要です。 これらの条件に合致すると、 fsck_ffs は終了状態 0 で終了します。 そうでない場合には非 0 の終了状態で終了します。 ファイルシステムがクリーンの場合、 非 0 の値で終了し、フォアグラウンドのチェックにおいて ファイルシステムがクリーンであることが確認され報告されるようにします。 -F フラグ付きで起動された場合、 クリーンアップはなにも実行されないことに注意してください。 fsck_ffs が実施するのは、 フォアグラウンドとバックグラウンドのいずれが必要であるかの判定と、 適切な終了コードでの終了だけです。

-B  指定された、もしかすると使用中かもしれないファイルシステムに対し、 チェックを実施します。 実施可能な修正は preen モード (-p フラグ参照) での実行時のものに限定されます。 予期しないエラーがみつかると、 ファイルシステムにはフォアグラウンドチェックが必要という印が付けられ、 fsck_ffs は更なるクリーニングを試みずに終了します。

-b  指定した番号のブロックをファイルシステムの スーパブロックとして使用します。 ブロック番号 32 は普通、代替スーパブロックになっています。

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

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

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

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

    3   maxcontig が 1 より大きい場合、 連続ブロックをみつけるためのフリーセグメントマップを作成します。 maxcontig が 1 の場合、既存のセグメントマップを削除します。

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

-f  preen モードの場合でも、 ‘クリーン’ なファイルシステムをチェックするようにします。

-m  lost+found ディレクトリを作る時のモードとして、デフォルトの 1777 の代わりの 値を 8 進数で指定します。 失われたファイルをすべてのユーザには見せたくないシステムでは、 より制限の厳しい 700 を使うべきです。

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

-p  ファイルシステムを整えます (上記参照)。

-y  fsck_ffs からのすべての質問に yes と答えます。 このオプションは、 修正によって新たな不整合を生むような誤った修正に対しても無制限な 許可を与えてしまうものですから、 十分に用心して使用すべきです。

ファイルシステムは、以下の点について検査されます。

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

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

関連ファイル
/etc/fstab
    チェックを行なうファイルシステムのデフォルトリストを含む

診断

fsck_ffs の出す診断メッセージは、 Fsck - The UNIX File System Check Program. の Appendix A にすべて列挙され説明されています。

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