パソコン関連サービス

コマンド プロンプトのCHKDSKって何やってんだ?
 

■CHKDSKコマンドを使った表示で

CHKDSK はファイルを検査しています (ステージ 1/3)...
CHKDSK はインデックスを検査しています (ステージ 2/3)...
CHKDSK はセキュリティ記述子を検査しています (ステージ 3/3)...
117234305 KB : 全ディスク領域
31729400 KB : 26795 個のファイル
8572 KB : 2533 個のインデックス
8 KB : 不良セクタ
99537 KB : システムで使用中
65536 KB : ログ ファイルが使用
85396788 KB : 使用可能領域・・・・

とか出ますよね。
なんとなく解るような記述もありますけど
さて、本当のところはとか思いませんか?
知っておくとハードディスクの状態が理解できるようになります。
 

一般にチェックディスクがフェーズ1〜5までの検証が行われます
そのうち一般テスト(chkdsk)では1〜3がFATに対するchkdskコマンド。
NTFSの場合でchkdskオプションスイッチFおよびRを実行した場合は、5ステージまでの詳細スキャンが行われます。

Chkdsk (Chkdsk.exe) は、ハード ディスク ドライブのボリュームに問題がないかどうかを調べるコマンド ライン ツールです。
また、このツールは検出した問題箇所の修復も試みます。
たとえば、Chkdsk では、不良セクター、消失したクラスター、クロスリンク ファイル、およびディレクトリ エラーに関連する問題を修復できます。
Chkdsk を使用するには、管理者、または Administrators グループのメンバーとしてログオンする必要があります。

■CHKDSK はファイルを検査しています (ステージ 1/5)...

 ファイルを検証します。
 主に読み取りが正常に行えるか、正しい容量であるかなどをチェックしますが、内部状態までは詳しくチェックしません。

■CHKDSK はインデックスを検査しています (ステージ 2/5)...

 MFT(マスターファイルテーブル)やFAT(ファイルアロケーションテーブル)を確認します。
 主に、ファイルとインデックスの整合性があるかどうかをチェックします。
 インデックスにないファイルまたはその逆に不要なインデックスが存在した場合は、削除されますので、Chkdsk実行中にそのドライブへの変更はしないでください。
 Defragを行う前に行えば余計な動作が減るのでDEFRAG前は、CHKDSKを行ったほうが良いとおもう一つの理由です。

■CHKDSK はセキュリティ記述子を検査しています (ステージ 3/5)...

 ここではファイル/フォルダのセキュリティ記述子を確認します。
 ここから先はNTFSファイルシステムにおける処理です。
 chkdskはUSNジャーナル確認しています。
 USNジャーナルはNTFSファイルシステムにおける変更履歴情報です。
 これを確認することで、データが正しい状態かどうかを確認します。

■CHKDSK はファイルデータを検証します。(ステージ 4/5)

 ここではファイルデータを検証します。
 フェーズ1で行うチェックとは異なり、ファイルの詳しい精査を行います。
 主に全領域の読み取りと書き込みを確認します。
 これで、エラーが発生した場合は、速やかにファイルを別領域に移動し、スキップセクタ(不良セクタ)のマークを行います。
 この作業は、恐ろしく時間がかかりますが、エラー検証の信頼度は高くなります。
 (ただし、ドライブの破損率が酷い場合は、データ喪失の原因になります)
 

■CHKDSK は空き領域を確認しています (ステージ 5/5)

 上記の処理を空き領域でも行います。
 空き領域で読み書きを行い不良セクタ(ビット化けなどを起こす領域)を探します。
 おかしな領域があれば、そこへのデータ保存を行わないように不良セクタのマークを行います。
 この作業もかなりの時間を要します。
 

■ログファイル

 ボリュームの整合情報を保存しています。
 確保領域は通常65536KBです。
 通常は無視して構いません。
 変更する場合は、CHKDSK /Lスイッチを利用します。
 

■不良セクタ

 これは、スキップセクタが割り振られた、読み取りもしくは書き込みがエラーとなる箇所です。
 この場所にデータが万が一入ってしまうと、データが壊れる読み取りが正常にできなくなる恐れがあります。
 これが急増するとディスクの破損が疑われます。
 

■user\folder-a\file_name.jpg のファイル 12340 の不良 クラスタを置き換えました。

 12340はディスク上での場所情報を表しています。
 ディスクはトラック(線の本数/円盤でいう一周を1トラック)、
 シリンダ(円盤が複数枚ある場合の記録箇所/例ディスク裏表ならシリンダが2、それが2枚あれば4となる)
 セクタ(データ記録時の最小単位/セクタ容量が256バイトなら例え1バイトのデータでも保存すると256バイトで保存されます)から構成されます。

 これらを組み合わせて住所(アドレスが)LBAなどのルールによって決められています。
 この情報によってディスク(SSDでは便宜的に利用していますが)の場所を管理しているのです。
 (尚、現在最新のパソコンであれば2の48乗/48Bitの英数の場所コードが1セクタ毎に与えられます)

 クラスタとは、セクタに替わってWindowsなどのOSが管理するデータ保存の最小単位です。
 セクタは本当にバイト単位でデータを管理します。
  しかし、それだけの管理を行うと、場所を管理するインデックス(見出し)領域の容量が多くなるだけでなく、アクセスにも途方もない時間がかかるようになります。
  しかも、容量が増えればそれだけ、管理するための領域が大きくなりデータを保存できる領域が減少するという欠点があります。
  そこで、OS上ではセクタ単位ではなくクラスタ単位でデータを保存します。
  そして、ディスクの容量毎にクラスタのサイズを決めているのです。

 クラスタはディスクの容量に応じて4KB〜32KB程度が一般的です。
  これは、例え1バイトのデータでもディスク上では最小4KB〜32KBは消費するということになります。
  クラスタを置き換えたというのは、12340のクラスタ箇所に不具合が見つかったため、そこにあったデータを丸ごと別の場所に移したという意味です。
  その結果として、不良セクタに表示される不良セクタが作られたと考えることができます。

 また、チェックしたときに、14371や2といった連番や近い値で大量に置き換えが発生した場合は、ディスク故障の危険があります。
 該当ディスクの交換を早めに行うとよいです。
 

■CHKDSK /Fコマンド

/Fというオプション(FIXスイッチといいます)で
 
気を付けなければならないのは、
CHKDSKで検出、修復されても時間の経過、環境により新たな欠損部分は、発生するかもしれないということです。
CHKDSKを行った時点で不良セクタなどが検出されるような原因が残されている可能性があるためです。
特に、HDDのI/Oのエラー処理においては、次のような手順で処理されると思います。
1.既定値回数だけリトライする。
   既定値は、64回、32回、16回とOSや媒体により異なる。
   通常64回です。これで、成功すれば、エラーとしての認識はされません。
2、既定値回数だけリトライして失敗すると、同一媒体内の代替トラックやセクタが用意されているので、そこへ変更するように書き換えます。
   この代替トラックやセクタがある限り、表面上は、エラー表示はされません。
3.代替えトラックやセクタを使い尽きると、表面上にエラー表示されます。
   ファイルの書き換えや不良セクタを検出したのであればこの状態です。
よって、HDDの信頼度は、限りなくゼロに近いと考えたほうが良いです。

CHKDSKコマンドは以下のようなスイッチが用意されています。

C:\Windows\system32>chkdsk /?
ディスクをチェックし、現在の状態を表示します。

CHKDSK [ボリューム[[パス]ファイル名]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:サイズ ]] [/B]

ボリューム ドライブ文字
        (文字の後にはコロンを付ける)、マウントポイント、 ボリューム名を指定します。

ファイル名 FAT/FAT32 のみ: 断片化をチェックするファイルを指定します。

/F ディスクのエラーを修復します。

/V FAT/FAT32: ディスクの全ファイルの完全なパスと名前を表示 します。
   NTFS: クリーンアップ メッセージがあればそれも表示します。

/R 不良セクターを見つけて、読み取り可能な情報を回復します
    (/Fスイッチも暗黙的に指定されます)。

/L:サイズ NTFS のみ:
       指定されたキロバイト数にログ ファイル サイズを 変更します。サイズが指定されていないときは、現在のサイズを 表示します。

/X 必要であれば、最初にボリュームを強制的にマウント解除します。
   ボリュームに対して開かれているすべてのハンドルは、無効になり ます (/F も暗黙的に指定されます)。

/I NTFS のみ: インデックス エントリのチェックを抑制して実行しま す。

/C NTFS のみ: フォルダー構造内の周期的なチェックをスキップ します。

/B NTFS のみ: ボリューム上の不良クラスターを再評価します (/R も 暗黙的に指定されます)。

/I または /C スイッチは、ボリュームの特定のチェックをスキップして、Chkdsk の 実行時間を短縮します。

C:\Windows\system32>
 

copyright 2003-2012 Neue Ziele System
03-3944-5857