CHKDSK (チェックディスク) とは
CHKDSK(チェックディスク)は、主にWindows
オペレーティングシステムに付属するシステムユーティリティコマンドです。その主な役割は、ディスクボリュームの
ファイルシステム整合性をチェックし、論理的なエラーを修復することです。
UNIX系OSにおける`fsck`コマンドと同様の機能を有します。また、初期の
MS-DOS環境では、メモリの使用状況を確認する手段としても用いられていました。
CHKDSK の機能
CHKDSKは、ディスクのエラーを検出するだけでなく、修復する機能も備えています。具体的には以下の様な機能があります。
ファイルシステム整合性のチェックと修復: ファイルシステムに矛盾がないかを確認し、エラーを検出した場合は修復を試みます。
不良セクタの検出: ディスク表面の不良セクタを検出し、使用不可としてマークします。
RAID構成でのデータ修復: Windows Server環境では、
RAID1や
RAID5構成のディスクで不良セクタが見つかった場合、他の正常なディスクからデータを修復することができます。
CHKDSK の実行方法
CHKDSKは、以下の様な場所から実行することができます。
DOSプロンプト
Windowsエクスプローラー (GUI)
Windows
コマンドプロンプト (CUI)
回復コンソール
CHKDSK の処理フェーズ
Windows NT系のCHKDSKは、ファイル
メタデータのテストに複数のフェーズがあり、エラー検出と修復を行います。ただし、明示的に修復を指定しない限り、エラーが検出されても修復は行われません。大容量ディスクや低性能ディスクでは処理に時間がかかるため、明示的に指定する必要があります。また、ボリュームへの排他的書き込みアクセスを要求します。
フェーズ1: ファイルのチェック
マスターファイルテーブル (MFT) 内の各ファイルレコードセグメントを検証します。これにより、ファイルやディレクトリを一意に識別します。
使用中のファイルレコードセグメントを表すビットマップと、使用中のクラスタを示すビットマップを作成します。
MFTとディスク上のビットマップを比較し、不整合があれば情報を出力します。
フェーズ2: インデックスのチェック
ディレクトリ内のファイルやサブディレクトリが、MFT内の有効なレコードセグメントとして存在するかを確認します。
ディレクトリの循環参照がないか、ファイルのタイムスタンプやサイズが最新かを確認します。
孤立したファイルを適切なディレクトリに戻したり、仮ディレクトリを作成して格納します。
ディレクトリリストに対応するファイル実体がない場合は、そのディレクトリを削除して整合性を保ちます。
フェーズ3: セキュリティ記述子のチェック
ファイルやディレクトリの所有者、NTFSアクセス許可、監査に関する情報など、セキュリティ記述子の整合性を確認します。ただし、ユーザーやグループの存在、アクセス許可の適切性は検証しません。
フェーズ4: セクタのチェック
ディスクの空き領域にある不良セクタをチェックします(/Rオプションまたは/Bオプション)。
不良セクタを検出し、データ修復を試みます。修復不能な場合は、0xFFバイトのパターンを新しいクラスタに設定します。
CHKDSK の関連モジュール
コマンドラインからCHKDSKを実行する場合は`Chkdsk.exe`が使用され、`Untfs.dll`や`Ufat.dll`などのDLLも利用されます。再起動時に実行されるスケジュールされたCHKDSKの場合は、`Autochk.exe`が実行され、同様のDLLを使用しますが、仮想メモリやWin32サービスは使用しません。
NTFSにおけるCHKDSKの役割
NTFSでは、トランザクションログを使ってファイルの
メタデータ(未使用セクタや不良セクタの情報など)を管理しています。CHKDSKは、この
メタデータとファイルの実体を紐付ける情報の整合性をチェックし、修復します。ただし、ファイルの実データそのものの整合性は保証されません。
注意点
修復できないファイル: CHKDSKで修復できないファイルや、修復後も内部的な破損が残る場合があります。
処理時間: 大容量ディスクや低性能ディスクでは、CHKDSKの実行に時間がかかる場合があります。
排他的アクセス: CHKDSKの実行中は、ボリュームへの排他的書き込みアクセスが必要になります。
Windows Vista以降の自己回復機能
Windows Vista以降では、
ファイルシステムの自己回復機能が追加されており、標準で有効になっています。これにより、物理
ファイルシステムエラーが検出され、暗黙的に修復されるため、CHKDSKの実行で表示される前に多くの問題が解決されます。自己回復機能は`fsutil repair`コマンドで管理できます。
既知の欠陥とバグ
過去のバージョンには、以下のような既知の欠陥やバグが存在します。
MS-DOS 5.0のバグ: CHKDSK /Fを実行するとデータが消失するバグが存在しました(
MS-DOS 5.0aで修正)。
PC DOS J6.3/Vのバグ: USモードで実行すると日本語文字のファイルやディレクトリが消去されるバグが存在しました。
Windows 7のバグ疑惑: Windows 7では、
メモリリークの疑惑が報告されましたが、後に否定されています。
関連項目
デフラグメンテーション