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 (
[email protected])
/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).