last_modified: 2026-01-07
1. はじめに
chkdsk は Windows において長年利用されてきたファイルシステム検査・修復ツールであり、現在でも NTFS / FAT 系ボリュームの論理整合性確認において重要な役割を担っている。本記事では、chkdsk の内部動作をファイルシステム実装の観点から整理し、実務で注意すべき点を明確化する。
※本記事は NTFS を主対象とする。ReFS については設計思想と修復モデルが大きく異なるため、限定的な注記に留める。
2. chkdsk の基本的な役割
chkdsk(Check Disk)は、主として以下を目的とする。
- ファイルシステムメタデータの論理整合性検査
- 不整合の修正(
/f) - 不良セクタの検出と隔離(
/r)
対象となるのは NTFS、FAT32、exFAT であり、ReFS は自己修復を前提とした設計のため、従来型 chkdsk によるオフライン修復の対象とはならない(後述)。
3. NTFS 内部構造と検査対象
3.1 MFT と File Record Segment
NTFS では、すべてのファイル・ディレクトリが MFT(Master File Table) に記録される。MFT は固定長のレコードから構成され、各レコードは File Record Segment(FRS) と呼ばれる。
chkdsk の初期段階では、以下が検査対象となる。
- 各 FRS の整合性(ヘッダ、属性構造)
- 使用中・未使用レコードの整合性
- 孤立したレコード(orphan)の検出
3.2 インデックス(ディレクトリ構造)
ディレクトリは B+ 木構造のインデックスとして管理されており、ファイル名と MFT レコードの対応関係が検査される。リンク切れや重複エントリはこの段階で検出される。
3.3 セキュリティ記述子
NTFS では ACL がセキュリティ記述子として一元管理されている。chkdsk はこれらの参照関係を検査し、不要または破損した記述子を整理する。
4. chkdsk のステージ構成
4.1 Stage 1〜3(基本ステージ)
通常の chkdsk 実行では、以下の 3 ステージが実行される。
- ファイル(MFT / FRS)の検査
- インデックス(ディレクトリ)の検査
- セキュリティ記述子の検査
これらは論理構造のみを対象とし、物理セクタの全面スキャンは行わない。
4.2 Stage 4 / 5(/r 指定時)
/r オプションを指定した場合、以下が追加される。
- 使用中クラスタの物理読み取り検査
- 未使用クラスタの物理読み取り検査
この処理は全クラスタを対象とするため、ディスク容量や状態によっては非常に長時間を要する。
※各ステージの所要時間は、ファイル数、MFT サイズ、ディスク性能に強く依存し、割合を固定的に見積もることはできない。
5. 不良クラスタと $BadClus
NTFS では、不良クラスタは特殊なメタファイル $BadClus によって管理される。/r 実行時に検出された不良クラスタはここに記録され、以降ファイル割当から除外される。
これは論理的な「使用禁止マーキング」であり、物理的な修復を行うものではない点に注意が必要である。
6. ダーティビットと起動時チェック
ボリュームが正常にアンマウントされなかった場合、NTFS の Dirty Bit が立てられる。これが検出されると、次回起動時に autochk が実行される。
- 状態確認:
fsutil dirty query C: - 起動時チェックの管理:
chkntfs/BootExecute
chkntfs /x による除外は可能だが、根本原因を解決しない限り推奨されない。
7. ReFS に関する注意
ReFS(Resilient File System)は、オンライン自己修復と冗長構成(Storage Spaces 等)を前提に設計されている。そのため、NTFS のように chkdsk /f /r によるオフライン修復を行う設計ではない。
ReFS 環境での整合性問題は、ボリューム管理層・冗長構成・イベントログを含めた別の診断フローで扱う必要がある。
8. 実務上の重要な注意点
/rは全クラスタ読み取りを行うため、物理的に劣化した HDD では故障を促進する可能性がある- 物理障害が疑われる場合、まずディスクイメージの取得を優先すべきである
- Windows 8 以降では
/scan・/spotfixによるオンライン修復モデルが導入されており、通常運用ではこちらを優先する
9. まとめ
chkdsk は NTFS における論理整合性回復の中核ツールであり続けているが、万能ではない。ファイルシステムの設計思想(特に ReFS)やストレージの物理状態を理解した上で、適切に使い分けることが重要である。
参考文献
- Microsoft Learn: chkdsk コマンド
- Microsoft Learn: fsutil dirty
- Microsoft Open Specifications: NTFS ($BadClus)
- Microsoft Learn: chkntfs
- Microsoft TechCommunity: ReFS architecture