FSCK(8)

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

書式
fsck -p [-f] [-m mode] [filesystem] ... fsck [-ny] [-b block#] [-c level] [-l maxparallel] [-m mode] [filesystem] ...

解説
fsck の最初の書式は、標準のファイルシステムのセットや指定された ファイルシステムの状態を整えるのに使われます。 通常は、自動リブートの間に /etc/rc スクリプトの中で使用されます。 この時 fsck は /etc/fstab を読んで、チェックするファイルシステムを決定します。 fstab 内の ``rw,'' ``rq,'' ``ro'' のいずれかのオプションで マウントされる、 0 以外のパス番号をもつパーティションのみが チェックの対象です。 パス番号 1 を持つファイルシステム (通常はルートファイルシステムだけです) は、 一つずつ順番にチェックされます。 パス 1 が完了すると、残りのすべてのファイルシステムは、 ディスクドライブごとに一つのプロセスを使ってチェックされます。 ファイルシステムが含まれるディスクドライブは、 デバイス名のうち最後が数字である最も長い文字列として認識されます。 残りの文字列はパーティションを示すと解釈されます。

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

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

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

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

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

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

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

fsck は、以前使われていた check, dcheck, fcheck, icheck の組み合わせよりもより詳しい不整合チェックを行ないます。

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

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

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

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

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

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

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

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

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

-l  同時チェックの並列度を、指定した数に制限します。 デフォルト値はディスク数であり、 ディスク毎に一つのプロセスが実行されます。 これより小さい値を指定すると、 各ディスクを、ファイルシステムを一つずつ ラウンドロビン方式でチェックします。

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

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

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

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

ファイルシステムを指定せずに fsck を実行すると /etc/fstab ファイルから読み込まれたファイルシステムのリストが対象になります。

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

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

ブロックデバイスとバッファキャッシュの内容は一致しないかもしれないので、 必ずロー (raw) デバイスを指定してください。

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

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

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