Chkdsk.exe で使用可能な新しいスイッチ /C および /I について

文書翻訳 文書翻訳
文書番号: 314835 - 対象製品
Microsoft Windows 2000 および Windows NT 4.0 については、次の資料を参照してください。 187941
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Windows XP の CHKDSK プログラムに含まれている新しい 2 つのスイッチ /C および /I について説明します。これらのスイッチにより、CHKDSK または AUTOCHK の実行によって発生するダウンタイムの管理が容易になります。

警告 : /f スイッチを指定して CHKDSK を実行する場合は、CHKDSK の処理を中断しないことをお勧めします。CHKDSK プログラムの処理が中断された場合、マイクロソフトではディスクの整合性を保証できません。

詳細

Chkdsk.exe は、ファイル システムの論理的な整合性を検証する CHKDSK プログラムのためのコマンド ライン インターフェイスです。Chkdsk.exe は、ファイル システムのデータで論理的な不整合を検出すると、読み取り専用モードでない場合、ファイル システムのデータを修復する処理を実行します。

/C スイッチおよび /I スイッチは、NTFS ファイル システムでフォーマットされたドライブに対してのみ有効です。この新しいスイッチはどちらも、CHKDSK のルーチンに対して、NTFS データ構造の整合性を検証するために通常実行する特定の操作を省略するように指示するためのものです。

オンラインで CHKDSK を実行する場合、実際に検証を実行するコードは、Untfs.dll や Ufat.dll などのユーティリティ DLL 内にあります。CHKDSK で呼び出される検証ルーチンは、エクスプローラやディスクの管理などのグラフィカル ユーザー インターフェイス (GUI) でボリュームの検証を行うときに実行されるルーチンと同じものです。

ただし、コンピュータの再起動時に実行されるようにスケジュールされた CHKDSK の場合、検証のコードが含まれているバイナリ モジュールは、Autochk.exe というネイティブの Windows プログラムです。Autochk.exe はコンピュータの起動処理の早い段階で実行されるため、Autochk.exe では仮想メモリや Win32 サービスが利用されません。

Autochk.exe では、Chkdsk.exe ユーティリティの DLL で生成されるのと同様のテキストが出力されます。Autochk.exe では、このテキスト出力が起動処理中に表示され、アプリケーション イベント ログにもイベントが出力されます。ログに出力されるイベント情報には、イベント ログのデータ バッファに格納可能な範囲で、テキスト出力と同様の内容が含まれます。

Autochk.exe と Chkdsk.exe ユーティリティの DLL に含まれている検証コードは、どちらも同じソース コードに基づいているため、この資料では、Autochk.exe と Chkdsk.exe を総称して CHKDSK と呼びます。また、この資料では NTFS ボリュームに関する CHKDSK の変更点のみを対象としているため、CHKDSK で実行される処理に関する記述はすべて、NTFS ボリュームで CHKDSK を実行した場合の処理を指します。

/C スイッチおよび /I スイッチを使用すると、CHKDSK の実行後もボリュームの破損箇所が修復されない可能性があります。このため、ダウンタイムを最小限に抑える必要がある場合にのみ、これらのスイッチを使用することをお勧めします。これらは、非常に容量の大きいボリュームに対して CHKDSK を実行する必要があり、発生するダウンタイムを柔軟に管理する必要がある場合にのみ使用するためのスイッチです。

どのような場合に /C スイッチと /I スイッチを使用するのが適切であるかを判断するには、NTFS 内部のデータ構造、発生する可能性のある破損の種類、ボリュームの検証時に CHKDSK で実行される処理、および CHKDSK の通常の検証処理を省略した場合に発生する可能性のある結果についてある程度の基礎的な知識が必要です。

CHKDSK で実行される処理について

ボリューム上にあるすべてのメタデータの検証中に CHKDSK で実行される処理は大きく 3 つのフェーズに分けられ、さらにオプションの 4 つ目のフェーズがあります。

メタデータとは、データに関するデータのことです。メタデータは、ボリュームに保存されているすべてのファイルに関する情報を追跡するための、いわば、ファイル システムのオーバーヘッドです。メタデータには、特定のファイルのデータを構成するアロケーション ユニットに関する情報、使用されていないアロケーション ユニット、不良セクタが含まれているアロケーション ユニットに関する情報などが含まれています。これに対して、ファイルに含まれているデータは、ユーザー データと呼ばれます。NTFS では、トランザクション ログを使用してメタデータを保護しています。この方法は、ユーザー データの保護には使用されていません。

フェーズ 1 : ファイルのチェック

CHKDSK の第 1 のフェーズでは、CHKDSK でファイルの検証を実行していることを通知するメッセージが表示され、既に完了した検証処理の割合が 0 〜 100% で表示されます。このフェーズでは、ボリュームのマスター ファイル テーブル (MFT) 内の各ファイル レコード セグメントが検証されます。

MFT 内の特定のファイル レコード セグメントにより、NTFS ボリューム上の各ファイルおよびディレクトリが一意に識別されます。このフェーズで表示される CHKDSK の "パーセント終了しました" というメッセージは、CHKDSK で検証された MFT のパーセンテージを示しています。このフェーズでは、各ファイル レコード セグメントの内部的な整合性が検証され、使用中のファイル レコード セグメントを表すビットマップと、ボリューム上の使用中のクラスタを示すビットマップの 2 つのビットマップが作成されます。

このフェーズの最終段階では、MFT 内とボリューム全体の両方について、使用中の領域と使用可能な領域が CHKDSK で認識されています。NTFS では、ディスク上に保存されている独自のビットマップでこの情報を追跡しています。その結果は、NTFS が保持するビットマップと比較されます。差分があった場合、その差分が CHKDSK の出力情報に表示されます。たとえば、使用中のファイル レコード セグメントに破損が検出された場合、そのファイル レコード セグメントに関連付けられているディスク クラスタは、CHKDSK のビットマップでは "使用可能" と見なされますが、NTFS のビットマップでは "使用中" と見なされます。

フェーズ 2 : インデックスのチェック

第 2 のフェーズでは、CHKDSK でインデックスを検証中であることを示すメッセージが表示され、再度、完了の割合が 0 〜 100% で表示されます。このフェーズでは、ボリューム上の各インデックスが検証されます。

インデックスは原則的に NTFS ディレクトリです。このフェーズで表示される CHKDSK の "パーセント終了しました" というメッセージは、ボリュームのディレクトリのうち、チェックが済んだディレクトリの総数のパーセンテージを示しています。このフェーズでは、ボリューム上の各ディレクトリに対して、内部的な整合性のチェックと、MFT 内の 1 つのファイル レコード セグメントで表される各ファイルおよびディレクトリが少なくとも 1 つのディレクトリで参照されているかどうかの検証が行われます。CHKDSK により、ディレクトリ内で参照されているすべてのファイルやサブディレクトリが、MFT 内の有効なファイル レコード セグメントとして実際に存在しているかどうかが確認され、ディレクトリの循環参照についてもチェックされます。最後に、ディレクトリの一覧にあるファイルのタイム スタンプとファイル サイズの情報が最新の情報であるかどうかが確認されます。

このフェーズの最終段階では、"孤立した" ファイルがないこと、および、ディレクトリ一覧にあるファイルがすべて正当なものであることが CHKDSK で確認されます。孤立したファイルとは、正当なファイル レコード セグメントが存在するものの、どのディレクトリ一覧にも存在しないファイルのことです。孤立したファイルは、適切なディレクトリが存在する場合は、多くの場合そのディレクトリに復元できます。適切なディレクトリが既に存在しない場合は、CHKDSK によりルート ディレクトリにディレクトリが作成され、そこにファイルが格納されます。使用中でなくなったファイル レコード セグメント、または使用中であってもディレクトリ一覧に対応するファイルがないファイル レコード セグメントが、ディレクトリ一覧で検出された場合、そのファイル レコード セグメントに対するディレクトリ エントリは削除されます

フェーズ 3 : セキュリティ記述子のチェック

第 3 のフェーズでは、CHKDSK でセキュリティ記述子を検証中であることを示すメッセージが表示され、再度、完了の割合が 0 〜 100% で表示されます。このフェーズでは、ボリューム上のファイルおよびディレクトリに関連付けられている各セキュリティ記述子が検証されます。

セキュリティ記述子には、ファイルまたはディレクトリの所有者、NTFS アクセス許可、および監査に関する情報が含まれています。このフェーズで表示される CHKDSK の "パーセント終了しました" というメッセージは、ボリューム上のチェック済みのファイルおよびディレクトリの割合を示しています。CHKDSK により、セキュリティ記述子の構造が正しく構成されていること、および、内部的に整合性が取れていることが検証されます。記載されているユーザーまたはグループが実際に存在するかどうか、および、付与されているアクセス許可が適切であるかどうかは検証されません。

フェーズ 4 : セクタのチェック

/R スイッチが有効になっている場合、CHKDSK では 4 つ目のフェーズが実行され、ボリュームの空き領域にある不良セクタの検出が行われます。ボリューム上のすべてのセクタが読み取られ、セクタが使用可能であるかどうかが確認されます。/R スイッチが指定されていない場合でも、メタデータに関連付けられているセクタは必ず読み取られます。ユーザー データに関連付けられているセクタは、/R スイッチが指定されている場合に CHKDSK の初期の段階で読み取られます。

CHKDSK で読み取り不能なセクタが検出されると、NTFS により、そのセクタを含むクラスタが不良クラスタの一覧に追加されます。その不良クラスタが使用中の場合、CHKDSK は不良クラスタに代わる新しいクラスタを割り当てます。フォールト トレラントなディスクを使用している場合、NTFS により不良クラスタのデータが修復され、新しく割り当てられたクラスタにデータが書き込まれます。データの修復ができない場合、新しいクラスタには、0xFF バイトのパターンが設定されます。

NTFS の通常の処理中に読み取り不能なセクタが検出された場合、CHKDSK の実行時と同様の方法で、NTFS によりセクタの再割り当てが行われます。このため、通常は /R スイッチを使用する必要はありません。ただし、ディスクに不良セクタが存在する疑いがある場合、ボリューム全体のスキャンを行うために /R スイッチを使用すると便利です。

CHKDSK の所要時間について

CHKDSK 実行時のフェーズに関するここまでの説明は、NTFS ボリュームの整合性を検証するために CHKDSK で実行される主要なタスクの大まかな概要のみです。CHKDSK では、この他にも各フェーズで多くの特別なチェックが実行され、フェーズとフェーズの間でもいくつかの簡易チェックが実行されます。しかし、このような大まかな概要からも、これ以降に説明する可変要素が CHKDSK の実行時間に与える影響や、Windows XP で使用できる新しい /C および /I スイッチの影響について、ある程度理解することができます。

可変要素 1 : "インデックス" フェーズ

CHKDSK 実行の第 1 および第 3 のフェーズ (ファイルのチェックおよびセキュリティ記述子のチェック) では、"パーセント終了しました" で示される処理の進行は比較的スムーズです。未使用のファイル レコード セグメントでは処理の所要時間が少なく、サイズの大きなセキュリティ記述子では処理の所要時間が多くなりますが、全体的には "パーセント終了しました" で示される割合は、フェーズの実行に必要な実際の時間をほぼ正確に反映しています。

しかし、CHKDSK でインデックス (NTFS ディレクトリ) が検証される第 2 のフェーズでは、このようなパーセンテージと時間の関係が必ずしも当てはまりません。ディレクトリの処理にかかる時間はそのディレクトリ内にあるファイルやサブディレクトリの数に密接に関係していますが、このフェーズの "パーセント終了しました" という表示は CHKDSK で検証が必要なディレクトリの数のみに基づいています。たとえば、ファイルやサブディレクトリの数がきわめて多いディレクトリの処理の場合でも、所要時間の調整は行われません。ボリューム上の各ディレクトリに含まれているファイル数がほぼ同じでない限り、第 2 のフェーズの "パーセント終了しました" で示される進度には、このフェーズで実際に必要な時間が正確に反映されません。

さらに、通常、CHKDSK の処理で実行に最も時間がかかるのが第 2 のフェーズであるため、CHKDSK の実行中に進行の度合いがわからなくなった場合、正確な予測を立てるのは困難です。

可変要素 2 : ボリュームの状態

CHKDSK の処理に要する時間の長さには、ボリュームの状態にかかわるさまざまな要素が影響します。あるボリュームに対して CHKDSK を実行するのに必要な時間を予測するには、ファイルとディレクトリの数、ボリュームの全体的な断片化の度合い、および特に MFT での断片化の度合い、ファイル名の形式 (長い名前、8.3 形式の名前、両者の混在)、CHKDSK で修復が必要な実際の破損の量などを計算に入れる必要があります。

可変要素 3 : ハードウェアの問題

ハードウェアの問題も、CHKDSK の実行時間に影響します。影響する要素には、利用可能なメモリの量、CPU 速度、ディスク速度などがあります。

可変要素 4 : CHKDSK の設定

/R スイッチを指定しない場合、対象のハードウェア プラットフォームが同じであれば、実行時間に最も影響を与えるのは、ボリューム自体のサイズよりも、ボリューム上にあるファイルとディレクトリの数です。

たとえば、/R スイッチを指定せずに、サイズの大きなデータベースが 1 つか 2 つしかない 50 GB のボリュームに対して CHKDSK の実行時間は数秒しかかからないとします。この場合に、/R スイッチを指定すると、CHKDSK ではボリューム上のすべてのセクタを読み取って検証する必要があるため、ボリュームが大きいと必要な時間は著しく増加します。これに対して、CHKDSK の実行対象が比較的サイズの小さいボリュームでも、ボリューム上に数十万、数百万の小さなファイルが存在すると、/R スイッチを指定したかどうかに関係なく、実行に数時間かかる場合があります。

CHKDSK の実行に必要な時間の予測

このように、CHKDSK の実行にかかる時間には、それぞれの状況に応じて数秒から数日の幅があります。ある特定のボリュームに対して CHKDSK を実行するのに必要な時間を予測する最も良い方法は、システムの使用率が低い時間帯に読み取り専用モードで実際にテスト実行してみることです。

ただし、以下の理由から、この方法を使用する場合には十分な注意が必要です。
  • 読み取り専用モードでは、初期段階でエラーが発生した場合、3 つのフェーズがすべて完了する前に CHKDSK が終了します。このときに通知されるエラーは、適切でない可能性があります。たとえば、CHKDSK がディスクを検証中に NTFS によってディスク領域が変更された場合、ディスクの破損が報告されることがあります。検証が正しく行われるためには、ボリュームが安定している必要があり、確実に安定した状態を保つには、ボリュームをロックする以外に方法がありません。CHKDSK では、/F スイッチ (または、/F スイッチが暗黙的に含まれている /R スイッチ) を指定した場合にのみボリュームがロックされます。読み取り専用モードで CHKDSK の 3 つの処理がすべて完了するためには、CHKDSK を繰り返し実行することが必要な場合があります。
  • CHKDSK は CPU とディスクの使用率が高いプログラムです。CHKDSK の実行に要する時間は、システムの負荷の状態と、オンラインで実行されているのか Windows XP の起動時に実行されているのか、に左右されます。どの要素が最も影響が大きいかは、ハードウェアの構成に依存しますが、読み取り専用モードで CHKDSK を実行しているときに、CPU の使用率が高い場合やディスクの入出力負荷が高い場合に CHKDSK の実行時間は長くなります。また、Autochk.exe の実行環境は Chkdsk.exe とは異なります。Autochk.exe から CHKDSK を実行すると、CHKDSK は CPU および I/O リソースを排他的に使用できますが、仮想メモリを使用できません。Autochk.exe の実行速度が Chkdsk.exe より速いと予想されている場合でも、コンピュータで使用できる RAM の容量が比較的少ないと、Autochk.exe の方が実際の実行時間が長い場合があります。
  • 破損の修復を行うと、所要時間が長くなります。読み取り専用モードでは、CHKDSK で重大な破損が検出されなかった場合にのみ、最後まで実行されます。ディスクに軽微な破損しかない場合、問題の修正を行っても、CHKDSK の実行のみに必要な時間と大きな違いはないことが予想できます。しかし、ハードウェアの重大なエラーなど、CHKDSK で重大な破損が検出された場合は、修復が必要な破損ファイルの数に比例して、CHKDSK の実行時間が長くなることが予想できます。極端な場合、CHKDSK の実行に必要な時間が 2 倍以上になることがあります。

/C および /I スイッチの導入

/C スイッチ

/C スイッチを指定すると、ディレクトリ構造の循環を検出するチェックが省略されます。循環は、サブディレクトリが自分自身を親として持つ、きわめてまれな形態の破損です。

/C スイッチを指定すると、CHKDSK の速度が 1 〜 2% 向上しますが、NTFS ボリューム上のディレクトリのループがそのままになる可能性があります。ループになっている場合、ディレクトリ ツリーの他の部分からアクセスできません。このため、バックアップ プログラムを含め、Win32 プログラムでファイルが認識されず、一部のファイルが孤立したファイルになることがあります。

/I スイッチ

/I スイッチを指定すると、ディレクトリ エントリを、対応するファイル レコード セグメントと比較するチェックが省略されます。このスイッチが有効になっていると、ディレクトリ エントリの内部的な整合性はチェックされますが、ディレクトリ エントリと、対応するファイル レコード セグメント内に格納されているデータとの整合性は保証されません。

/I スイッチを指定した場合にどの程度所要時間が短縮されるかを予測するのは困難です。通常、/I スイッチを指定すると CHKDSK の処理時間が 50 〜 70% 短縮されますが、これは、ファイルとディレクトリの比率や、CPU 速度に対するディスク入出力の速度などの要素に依存します。

/I スイッチの使用には、以下の制限があります。
  • 適切でないファイル レコード セグメントを参照するディレクトリ エントリが存在する可能性があります。その場合、そのエントリを使用するプログラムでエラーが発生します。
  • どのディレクトリ エントリからも参照されていないファイル レコード セグメントが存在する可能性があります (ファイルの孤立が発生するもう 1 つのケースです)。ファイル レコード セグメントで表される、実際には正常なファイルが、バックアップ プログラムなどの Win32 プログラムで認識されない可能性があります。

/C および /I スイッチの値

ボリューム上でディスクの破損が検出された場合の対応として、3 つの基本的な選択肢があります。

1 つ目は、何も実行しないという選択肢です。24 時間常にオンラインであることが必要な基幹サーバーでは、多くの場合、この方法を選択する必要があります。ただし、比較的小規模な破損が雪だるま式に蓄積され、重大な破損に発展するおそれがあります。このため、破損しているボリュームに格納されているデータの整合性を保護することよりも、サーバーのオンライン状態を維持することの方が重要な場合にのみ、この方法を選択するようにしてください。破損したボリューム上のデータはすべて、CHKDSK を実行しない限り、危険にさらされていると考える必要があります。 2 つ目は、CHKDSK の完全な処理を実行して、ファイル システムのすべてのデータを修復し、自動処理で修復可能なユーザー データをすべて復元することです。ただし、CHKDSK の完全な処理を実行すると、ダウンタイムが数時間に及ぶ可能性があり、必要なときに基幹サーバーを利用できない場合があります。 3 つ目は、/C および /I スイッチのどちらかまたは両方を使用して簡略な CHKDSK 処理を実行することです。これにより、CHKDSK の完全な処理の実行に要するよりもはるかに短い時間で、大きな問題に発展する可能性のある破損を修復できます。

ただし、簡略な CHKDSK 処理を実行しても、存在する破損がすべて修復されるわけではないことに注意してください。修復可能なデータがすべて修復された状態にするには、いずれ完全な CHKDSK を実行する必要があります。

ディスクの破損が発生した場合、すぐに CHKDSK の完全な処理を実行しても、NTFS ではユーザー データの整合性は保証されないことにも注意してください。CHKDSK では修復できないファイルが存在する場合や、CHKDSK で修復したファイルに内部的な破損が残っている場合があります。定期的にバックアップを実行したり、より堅牢なデータ回復の方法を使用したりして、重要なデータを保護することが非常に重要です。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 314835 (最終更新日 2004-07-20) を基に作成したものです。

プロパティ

文書番号: 314835 - 最終更新日: 2007年12月1日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Professional x64 Edition
キーワード:?
kbinfo kbfea KB314835
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com