fsck コマンド

目的

ファイルシステムの整合性を検査し、対話式に修復します。

構文

fsck [ -n ] [ -p ] [ -y ] [ -dBlockNumber ] [ -f ] [ -ii-NodeNumber ] [ -o Options ] [ -tFile ] [ -V VfsName ] [ FileSystem1 - FileSystem2 ... ]

説明

重要: システムが誤動作したときは、必ずファイルシステムに対して fsck コマンドを実行してください。修正作業を行うと、データの一部が失われることがあります。 それぞれの整合性に関する修正のデフォルト・アクションは、オペレーターによる yes または no の入力を待機することです。 該当するファイルシステムへの書き込み許可がない場合、実際の応答にかかわらず、fsck コマンドでは、デフォルトで no の応答になります。
注:
  1. fsck コマンドは、マウント済みのファイルシステムの修正は行いません。
  2. 修復以外の理由であれば、fsck コマンドをマウント済みのファイルシステムで実行できます。しかし、ファイルシステムがマウントされたときに誤ったエラー・メッセージが戻される場合があります。

fsck コマンドは整合性のないファイルシステムを検査して、対話式に修正します。 ファイルシステムをマウントする場合は、事前にこのコマンドを実行してください。 その場合、ファイルシステムが存在するデバイス・ファイルを読み取れなければなりません (例えば、/dev/hd0 デバイス)。 通常、ファイルシステムは整合性を持っているので、fsck コマンドは単にファイルシステム内のファイル数、使用ブロック数、フリー・ブロック数などを報告するだけです。 ファイルシステムに不整合がある場合は、fsck コマンドは発見された不整合についての情報を表示し、修正の許可を求めるプロンプトを表示します。

fsck コマンドは修正作業にあたっては慎重で、正しいデータを失う恐れのあるアクションを避けようとします。 しかし場合によっては、fsck コマンドが損傷のあるファイルの破壊を勧めることもあります。 fsck コマンドで必要な修復を実行できないようにすると、ファイルシステムの整合性が損なわれることがあります。 整合性のないファイルシステムをマウントすると、システムがクラッシュすることがあります。

JFS2 ファイルシステムにスナップショットがある場合、fsck コマンドはそれを保存しようとします。 このアクションが失敗した場合、スナップショットに、スナップされたファイルシステムの変更前のすべてのイメージが含まれていることは保証されません。 fsck コマンドは、スナップショットおよびスナップショット論理ボリュームを削除します。fsck コマンドがファイルシステムを変更した場合は、内部スナップショットが削除されます。

FileSystem パラメーターでファイルシステムを指定しないと、 fsck コマンドは /etc/filesystems ファイルに登録されたすべてのファイルシステムを検査して、 check 属性が真に設定されているかどうかを調べます。スタンザに次の 1 行を追加すると、この検査を実行できます。

check=true
ファイルシステムを /etc/filesystems ファイルにグループ化して、 複数のファイルシステムで検査を行うこともできます。 これを行うには、/etc/filesystems ファイルの中の check 属性を次のように変更してください。
check=Number

Number パラメーターは、fsck コマンドに、 特定のファイルシステムがどのグループに含まれているかを通知します。 共通ログ・デバイスを使用するファイルシステムは、同じグループに入れる必要があります。 ファイルシステムの検査は、一度に 1 つずつ、グループ順に、次に /etc/filesystems ファイル に登録されている順に行われます。すべての check=true ファイルシステムはグループ 1 にあります。fsck コマンドは、コマンド・ラインまたは /etc/filesystems ファイル内で指定された順序に関係なく、 どのファイルシステムよりも前にルート・ファイルシステムを検査しようとします。

fsck コマンドは次の不整合を検査します。

  • 複数のファイルに割り当てられたブロックまたはフラグメント。
  • 重複するブロック番号またはフラグメント番号がある i ノード。
  • 範囲外のブロック番号またはフラグメント番号がある i ノード。
  • ファイルに対するディレクトリーの参照数とファイルのリンク・カウントとの差。
  • 不正に割り当てられているブロックまたはフラグメント。
  • ディスク・マップ内で空きを示すマークが付いているブロック番号またはフラグメント番号が入っている i ノード。
  • 破壊されたブロック番号またはフラグメント番号がある i ノード。
  • i ノード内の最後のディスク・アドレスでないフラグメント。この検査は、圧縮されたファイルシステムには適用されません。
  • フラグメントがある 32KB を超えるファイル。この検査は、圧縮されたファイルシステムには適用されません。
  • サイズ検査:
    • 間違ったブロック数。
    • 512 バイトの倍数でないディレクトリー・サイズ。
    これらの検査は、圧縮されたファイルシステムには適用されません。
  • ディレクトリー検査:
    • i ノード・マップ内で空きを示すマークが付いている i ノード番号があるディレクトリー・エントリー。
    • 範囲外の i ノード番号。
    • 存在していない、またはディレクトリー自身を指していないドット (.) リンク。
    • 存在していない、または親ディレクトリーを指していないドット・ドット (..) リンク。
    • 参照されていないファイル、または到達できないディレクトリー。
  • 整合性のないディスク・マップ。
  • 整合性のない i ノード・マップ。

孤立ファイルや孤立ディレクトリー (アクセス不可) は、指定により、ファイルシステムの / (ルート) ディレクトリー内の lost+found サブディレクトリーに入れると再接続できます。指定する名前は i ノード番号です。 fsck コマンドが孤立ファイルに再接続できるように指定しないと、 コマンドは、ファイルを破棄する許可を要求します。

fsck コマンドは、メッセージの他に、終了値により検査と修復の結果を記録します。 終了値は次の条件の合計になります。

項目 説明
0 検査済みファイルシステムにはすべて問題ありません。
2 検査または修復終了前に fsck コマンドが中断されました。
4 fsck コマンドがファイルシステムを変更しました。ユーザーは直ちにシステムを再始動させなければなりません。
8 ファイルシステムには未修復の損傷が含まれています。

fsck コマンドを実行するには、ファイル・システムの基礎となる論理ボリューム・デバイスへの排他的アクセスが必要です。基礎となるデバイスが使用不可であるために fsck が失敗した場合、デバイスが空いてオープンできるようになった後で fsck を再試行する必要があります。

システムをディスクからブートすると、ブート・プロセスは //usr/var/tmp ファイルシステム で -f および -p フラグを指定した fsck コマンドを明示的に実行します。fsck コマンドがこのいずれかのファイルシステム上で失敗に終わると、システムはブートしません。 このシステムをブートする前には、取り外し可能なメディアからブートし、保守作業を実行する必要があります。

//usr/var/tmp において fsck コマンドが正常に実行されると、 続いて通常のシステム初期設定が行われます。通常のシステム初期設定中に、 -f および -p フラグを指定した fsck コマンドが /etc/rc ファイルから実行されます。このコマンド・ シーケンスは、check 属性が真に設定されている ( check=true) すべてのファイルシステムを検査します。/etc/rc ファイル から実行された fsck コマンドでファイルシステムの整合性を保証できない場合でも、 システムの初期設定は続行されます。 ただし、整合性のないファイルシステムをマウントできないことがあります。マウントできなければ、システムの初期化が完了しないことがあります。
注: デフォルトでは、 //usr/var/tmp ファイルシステムの check 属性は、 /etc/filesystem スタンザ内で、 偽 (check=false) に設定されています。この属性は、次の理由で偽に設定されています。
  1. ブート・プロセスは、//usr/var/tmp ファイルシステムに対して、 明示的に fsck コマンドを実行します。
  2. //usr/var/tmp ファイルシステムは、 /etc/rc ファイルが実行されるときにマウントされます。 fsck コマンドは、マウントされたファイルシステムを変更しません。 また、マウントされたファイルシステム上で fsck コマンドを実行すると、信頼性のない結果が生成されます。

System Management Interface Tool (SMIT) の smit fsck 高速パスを使用して、このコマンドを実行できます。

フラグ

項目 説明
-dBlockNumber 指定されたディスク・ブロックへの参照を検索します。 fsck コマンドは、指定されたブロックを含むファイルを検出するたびに、 関連する i ノード番号とすべてのパス名を表示します。 JFS2 ファイルシステムの場合、指定されたブロックを参照している i ノード番号は表示されますが、 パス名は表示されません。
-f 高速検査を行います。 通常は、正しい方法で電源を切らずにシステムを停止したために影響を受けるのは、 そのときにマウントされているファイルシステムだけです。 -f フラグを指定すると、fsck コマンドは、 正常にアンマウントされたファイルシステムの検査を行いません。 fsck コマンドは、ファイルシステム・スーパーブロック内の、 s_fmod フラグを検査することにより、 正常にアンマウントされたファイルシステムを判別します。

このフラグはファイルシステムをマウントするたびに設定され、 正常にアンマウントすると消去されます。ファイルシステムが正常にアンマウントされれば、 何も問題が発生するようなことはありません。 ほとんどのファイルシステムは正常にアンマウントされるため、 このようなファイルシステムは検査されず、検査に要する時間が短縮できます。

-ii-NodeNumber 指定された i ノードへの参照を検索します。fsck コマンドは、指定された i ノードのディレクトリー参照を検出するたびに、 参照先への絶対パス名を表示します。
-n fsck コマンドのすべての質問に対して no と いう応答が与えられるものと見なします。指定したファイルシステムは書き込み用にオープンされません。
-o Options fsck コマンドにコンマで区切られたオプションを渡します。 以下のオプションは現在、JFS に対してサポートされます (これらのオプション は新規のファイルシステムでは古いものとなり、無視される可能性があります)。
mountable
対象のファイルシステムがマウント可能な (現在アンマウントされている) 場合、 値 0 を戻して fsck コマンドを正常終了させます。 ファイルシステムがマウント可能でない場合、 fsck コマンドは値 8 を戻して終了します。
mytype
該当するファイルシステムが、/etc/filesystems ファイル内で指定されたものか、コマンド・ライン上の -V フラグで指定されたものと同じタイプである場合に、fsck コマンドを正常終了 (0) させます。 その他の場合は 8 の値が戻されます。 例えば、 / (ルート・ファイルシステム) がジャーナル・ファイルシステムであれば、 fsck -o mytype -V jfs / は 0 値で終了します。
-p 小さな問題についてのメッセージは表示せず自動的に修正します。 このフラグは、-y フラグとは異なり、 すべてをシステム側にまかせるわけではありません。 システムの通常の始動時に自動検査を行う場合に役に立ちます。システムが自動的に実行される場合は常に、システム始動手続きの一部として、このフラグを使用する必要があります。1 次スーパーブロックが壊れている場合は、2 次スーパーブロックが確認され、1 次スーパーブロックにコピーされます。
-tFile fsck コマンドでテーブルを格納するための十分なメモリーが 獲得できない場合に、File パラメーターを検査対象のファイルシステム以外のファイルシステム上のスクラッチ・ファイルとして指定します。 -t フラグを指定せず、 fsck コマンドがスクラッチ・ファイルを必要としている場合には、 fsck コマンドはスクラッチ・ファイル名を求めるプロンプトを表示します。 ただし -p フラグを指定している場合は、 fsck コマンドは正常に実行されません。スクラッチ・ファイルがスペシャル・ファイルでなければ、fsck コマンド終了時に除去されます。
-V VfsName /etc/filesystems ファイルの代わりに、VFSName 変数で指定された仮想ファイルシステムの記述を使って、記述を決定します。コマンド・ラインに -V VfsName フラグを指定しないと、 /etc/filesystems ファイルが検査され、 一致するスタンザの vfs=Attribute が、 正しいファイルシステム・タイプであると見なされます。
-y fsck コマンドが発行するすべての質問に対して、 yes という応答が与えられるものと仮定します。このフラグによって、 fsck コマンドは必要と考えられるすべての処理を行います。 このフラグは、損傷の激しいファイルシステムだけに使用してください。

セキュリティー

RBAC ユーザーおよび Trusted AIX ユーザーへの注意: このコマンドは特権命令を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権についての詳細情報は、「セキュリティー」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. すべてのデフォルトのファイルシステムを検査するには、次のように入力します。
    fsck
    このコマンドは、/etc/filesystems ファイル内の check=true のマークが付いているファイルシステムすべてを検査します。このフォーマットの fsck コマンドはファイルシステムに何らかの変更を行う前に、発行者に許可を求めます。
  2. デフォルトのファイルシステムに関する小さな問題を自動的に修正するには、 次のように入力します。
    fsck -p
  3. 特定のファイルシステムを検査するには、次のように入力します。
    fsck /dev/hd1
    このコマンドは、/dev/hd1 デバイス上でアンマウントされたファイルシステムを検査します。

ファイル

項目 説明
/usr/sbin/fsck fsck コマンドが入っています。
/etc/filesystems 既知のファイルシステムをリストし、その特性を定義します。
/etc/vfs 仮想ファイルシステムのタイプに関する記述が入っています。
/etc/rc システム始動時に実行されるコマンド (fsck コマンドなど) が入っています。