FSCK(8)

名前
fsck - Linux ファイルシステムのチェックと修復を行う

書式
fsck [ -sAVRTNP ] [ -C [ fd ] ] [ -t fstype ] [filesys ... ] [--] [ fs-specific-options ]

説明
fsck は (ひとつまたは複数の) Linux ファイルシステムをチェックし、 また指定すれば修復も行う。 filesys に指定できるのは、デバイス名 (例: /dev/hda1, /dev/sdb2)、 ファイルシステムのマウントポイント (例: /, /usr, /home)、 ext2 ラベルまたは UUID 指定 (例: UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd, LABEL=root) である。 通常 fsck は、 物理的に異なるディスク上にある複数のファイルシステムを並列的にチェックし、 全ファイルシステムのチェックに要する時間を短縮しようとする。

コマンドラインからファイルシステムがひとつも指定されず、かつ -A オプションも指定されなかった場合は、 fsck はデフォルトの動作として /etc/fstab に書かれているファイルシステムを逐次的にチェックする。 これは -As オプションを指定した場合の動作と同じである。

fsck の返り値は、以下の状態を表す数の和となる。
    0    - エラーなし
    1    - ファイルシステムのエラーが修正された
    2    - システムをリブートする必要がある
    4    - ファイルシステムのエラーが修正されないまま
      残っている
    8    - 操作エラー
    16    - 利用法・文法のエラー
    32    - fsck がユーザ要求によってキャンセルされた
    128    - 共有ライブラリのエラー
複数のファイルシステムをチェックした場合の返り値は、 チェックした各ファイルシステムの返り値に対して、 ビットごとの OR をとったものになる。

fsck は、実際には Linux で利用できるさまざまなファイルシステムチェッカー (fsck.fstype) への単なるフロントエンドにすぎない。 ファイルシステム固有のチェッカーは、 /sbin, /sbin/fs.d, /sbin/fs, /etc/fs, /etc, 環境変数 PATH 内のディレクトリの順にサーチされる。 詳細はファイルシステム固有のチェッカーのマニュアルを参照すること。

オプション

-s  fsck の動作を逐次的にする。 複数のファイルシステムを インタラクティブ (対話) モードでチェックする際に有用。 (注意: デフォルトでは e2fsck(8) の動作は対話モードである。 e2fsck(8) を非対話モードで動作させるには、 -p オプションか -a オプションを使用する。また非対話的にエラーを自動修復させたい場合は -n オプションを利用する。)

-t fslist
    チェックするファイルシステムのタイプを指定する。 -A オプションが指定されている場合は、 fslist にマッチするファイルシステムのみをチェックする。 fslist パラメータは、コンマで区切られた ファイルシステムとオプション指定のリストである。 このコンマ区切りのリストに含まれるファイルシステムのすべてに、 否定演算子 'no' または '!' を前置することもできる。 これにより、 fslist にリストされていないファイルシステムだけがチェックされる。 fslist のファイルシステムすべてに否定演算子が付けられていない場合は、 fslist にリストされているファイルシステムのみがチェックされる。 (訳註: リストの一部だけに否定演算子を付けることはできない)

    オプション指定をコンマで区切った形で fslist に含めても良い。 これらは opts=fs-option という書式でなければならない。 オプション指定が存在すると、 /etc/fstab のマウントオプションのフィールドに fs-option があるファイルシステムのみがチェックされる。 オプション指定の前に否定演算子がある場合は、 /etc/fstab のマウントオプションのフィールドに fs-option がないファイルシステムのみがチェックされる。

    例えば、 opts=ro を fslist に指定すると、 /etc/fstab にリストされているファイルシステムのうち、 ro オプションを持つものだけがチェックされる。

    fsck プログラムへの非公式なユーザインターフェース変更に 依存したブートスクリプトを使っている Mandrake ディストリビューションとの互換性のため、 fslist にファイルシステムタイプ loop があった場合、 -t オプションの引き数として opts=loop が指定されていると仮定する。

    通常ファイルシステムのタイプは、 filesys を /etc/fstab ファイルから検索して見つかったエントリから取得する。 ファイルシステムのタイプが取得できず、 かつ 1 つのファイルシステムだけが -t オプションの引き数になっている場合、 fsck はそれを利用する。 指定してあるファイルシステムタイプを利用できない場合は、 デフォルトのファイルシステムタイプ (現時点では ext2) を利用する。

-A  /etc/fstab に列記されているファイルシステムをすべてチェックする。 このオプションを用いれば、複数のファイルシステムに対して fsck をひとつひとつ単独で実行しなくてもよいため、 システムの初期設定ファイルである /etc/rc 中でよく利用される。

    -P オプション (後述) が指定されていなければ、 ルートファイルシステムが最初にチェックされる。その後、 /etc/fstab ファイルの第 6 フィールドである fs_passno の順序にしたがって他のファイルシステムがチェックされる。 fs_passno の値が 0 であるファイルシステムは、スキップされて一切チェックされない。 fs_passno の値が 0 より大きいファイルシステムは、小さい fs_passno 値を持ったものを優先し、順番にチェックされる。 同じ番号が指定されているファイルシステムが複数ある場合には、 fsck はそれらを並列してチェックしようとする。 しかし同じ物理ディスクにあるファイルシステムの同時チェックは避ける。

    したがって、 /etc/fstab に対する最も普通の設定は、ルートファイルシステムの fs_passno を 1 とし、他のすべてのファイルシステムの fs_passno を 2 とするものである。こうすると fsck は、(効果が期待できる場合には) 自動的にファイルシステムチェッカーを 同時に並列して動作させる。 何らかの理由で複数ファイルシステムの 並列チェックをしたくない場合には、システム管理者はこの設定をしてはいけない。 たとえばマシンのメモリが少なく、余分なページングが 問題になる場合などがこれにあたる。

-C [  fd  ]
    作業完了分・残り分の棒グラフをサポートしている ファイルシステムチェッカー (現在 ext2 と ext3 用のものだけ) に、 表示を行わせる。 fsck は一度にひとつのチェッカーだけが表示を行うように、 複数のチェッカーを管理する。 GUI フロントエンドにはファイルディスクリプタ fd を指定することができる。 この場合、棒グラフの情報はファイルディスクリプタに送られる。

-N  実際には実行せず、何が行われるかだけを表示する。

-P  -A オプションが指定されている場合、 ルートファイルシステムを他のファイルシステムと並列にチェックする。 ルートファイルシステムが壊れている場合には e2fsck(8) 自体が壊れている可能性もあるため、 このオプションを用いるのは安全性を損なうことになる。 このオプションは、 ルートファイルシステムを小さくコンパクトなパーティションに切りなおしたくない システム管理者向けのオプションである (ルートファイルシステムを小さくコンパクトにまとめるのが正しい解なのだが)。

-R  -A オプションを用いて全てのファイルシステムをチェックする際に、 ルートファイルシステムをチェックしないようにする (ルートファイルシステムがすでに read/write でマウントされている場合)。

-T  起動時にタイトルを表示しない。

-V  fsck から起動されるシステム固有のコマンドを含め、詳細な表示をする。

fs-specific-options
    fsck が理解しないオプションは、ファイルシステム固有のチェッカーに渡される。 これらのオプションは引き数をとってはならない。 なぜなら、どのオプションが引き数をとるか (とらないか) を fsck が正しく判断できる方法がないためである。

    -- 以降に指定したオプションと引き数は、ファイルシステム固有のオプションとして ファイルシステム固有のチェッカーに渡される。

    fsck は任意の複雑なオプションをファイルシステム固有のチェッカーに渡すようには 設計されていない点に注意すること。 複雑なことをやろうとするときは、 ファイルシステム固有のチェッカーを直接実行してほしい。 非常に複雑なオプションと引き数を fsck に渡した場合に、期待した動作をしなかったとしても、 バグとして報告するには及ばない。 fsck にやらせるべきではないことを、あなたがやったのだから。

ファイルシステム固有の fsck のオプションは、標準化されていない。 確かでない場合は、ファイルシステム固有のチェッカーの man ページを調べること。 保証されたものではないが、以下のオプションは ほとんどのファイルシステムチェッカーでサポートされている。

-a  質問なしで自動的にファイルシステムを修復する (このオプションの使用には注意を要する)。 ほとんどのファイルシステムチェッカーは -a オプションに対応しているが、 e2fsck(8) においては -a オプションは過去互換性のために準備されているだけである。 したがって e2fsck では、このオプションは (安全に利用できる) -p オプションにマップされ、 いくつかのフィルシステムチェッカーがサポートしている -a にはマップされない。

-n  ファイルシステム固有のチェッカーの中には、 -n オプションが指定されると、 問題点を修復するのではなく、その問題点を単に標準出力に書き出すものもある。 しかし全てのファイルシステム固有のチェッカーが、 このような動作をするわけではない。 特に fsck.reiserfs(8) は、このオプションが指定されても破損箇所を報告しない。 また fsck.minix(8) は、 -n オプションを全くサポートしていない。

-r  対話的にファイルシステムを修復する (確認を求める)。 注意: fsck が並列に動作している場合にこのオプションを利用するのは あまり賢いとはいえない。 e2fsck においては並列動作がデフォルトであり、 このオプションは過去互換性のためにのみ準備されている。

-y  ファイルシステム固有のチェッカーの中には、 -y オプションが指定されると、検出されたファイルシステムの破損箇所を 常に自動的に修復しようとするものもある。 エキスパートは、より上手に fsck を手動で実行させることができる場合もある。 全てのファイルシステム固有のチェッカーが、 このオプションを実装しているわけではない点に注意すること。 この man ページを書いている時点では、特に fsck.minix(8) と fsck.cramfs(8) は -y オプションをサポートしていない。

著者
Theodore Ts'o (tytso@mit.edu)

ファイル
/etc/fstab

環境変数
fsck プログラムの振舞いは、以下の環境変数による影響を受ける。

FSCK_FORCE_ALL_PARALLEL
    この環境変数が設定されていると、 fsck は指定されたファイルシステムすべてを、 それらのファイルシステムが同じデバイス上にあるように見えるかどうかを問わず、 並列にチェックしようとする。 (これは IBM や EMC などの会社から販売されているような、 RAID システムやハイエンドのストレージシステムで有用である。)

FSCK_MAX_INST
    この環境変数は、同時に動作するファイルシステムチェッカーの最大数を制限する。 この指定を行えば、多数のディスクを備えたシステムにおいて fsck がたくさんのファイルシステムチェッカーを同時に起動し、 システムで利用できる CPU やメモリなどの資源に 過度の負荷を与えてしまうことを避けることができる。 この値を 0 にすると、spawn するプロセス数の制限がなくなる。 現在はこれがデフォルトだが、 fsck の将来の版では、OS からアカウンティングデータを取得することにより、 同時に行うファイルシステムチェックの数を自動的に決めるようになるかもしれない。

PATH
    PATH 環境変数はファイルシステムチェッカーを探索する際に用いられる。 まず最初に、一連のシステムディレクトリが検索される。これらは /sbin, /sbin/fs.d, /sbin/fs, /etc/fs, /etc である。これに続いて PATH 環境変数に指定されたディレクトリ群が検索される。

FSTAB_FILE
    この環境変数を用いると、システム管理者は /etc/fstab ファイルの標準的な置場所を変更できる。 これは fsck のテストを行う開発者にとっても便利である。

関連項目
fstab(5), mkfs(8), fsck.ext2(8) または fsck.ext3(8) または e2fsck(8), cramfsck(8), fsck.minix(8), fsck.msdos(8), fsck.jfs(8), fsck.nfs(8), fsck.vfat(8), fsck.xfs(8), fsck.xiafs(8), reiserfsck(8).