Windowsは、「chkdsk」というドライブのエラーチェックツールを備えています。

chkdsk NTFS

ただ同時に、「chkdsk」は誤解を招きやすいプログラムでもあります。
「chkdsk」は、ハードディスクのエラーをチェックするためのプログラムではありません
ましてや、ハードディスクのエラーを修復するプログラムでもありません。

「chkdsk」は、ファイルシステムのエラーをチェックし、修復するためのプログラムです。
つまり、「chkdsk」がチェックして修復する対象は、あくまでもソフトウェア的なものであり、
決してハードウェア的なものではない
のです。

一応、「chkdsk」で副次的にハードディスクのエラーをチェックすることもできますが、
内容はセクタエラーのチェックに限られ、しかも、管理はクラスタ単位で行われます。
これは、そもそも「chkdsk」の役割が、
異常の可能性があるWindowsのファイルシステムをチェックし、修正するためのものだからです。

従って、ハードディスクにエラーがあるかどうかを調べるために「chkdsk」を走らせるというのは、
誤った使用方法であると言ってもいいかもしれません。
たとえば、すでにそのパーティションのファイルシステムで管理されているセクタエラーについては、
「chkdsk」を実行しても無視され、そのまま終了します。
ハードディスクのエラーチェックが主目的である場合には、
各ハードディスクメーカーから提供されているツール等を使うべきです。

何も修復しない「chkdsk」

「chkdsk」には、いろんな動作オプションがあります。
「chkdsk」はオプションを指定せずに実行すると、一切の修復作業を行いません
文字通り、ディスク(というよりドライブ)のチェックを行うだけです。
これは、自動で修復まで行うと、それが原因で状況がより悪化してしまう危険性があるからです。

「chkdsk」による修復の目的は、Windowsにとって正しいファイルシステムにすることです。
ユーザーにとって必要なファイルを修復することではありません。
従って、その過程でユーザーにとって必要なデータが上書きされることがあります
そもそも、Windowsにはユーザーの必要とするデータがわかりません。
必要なデータを判断する前提となるファイルシステム自体に異常があるからです。
必要なデータがどれなのか、はっきりしない状態で機械任せに作業を行うことになるため、
ユーザーにとって必要なデータが失われる可能性があるのです。

また、「chkdsk」はハードディスクに対して負荷の高いプログラムです。
「chkdsk」で修復を試みるのは、極力後回しにしたほうがいいです。
特に、ハードディスクのセクタエラーが頻発するような状況で修復を行うと、
いつまで経っても「chkdsk」が終了しなくなる恐れがあります。

ただのチェックだけならまだしも、
「chkdsk」での修復作業が完了しないというのは、とってもまずい状態なんです。
ほぼ確実に、パーティション内のファイルシステムの整合性が断たれてしまうからです。
その結果、今まで認識できていたものまで認識できなくなってしまいます。

そして、「chkdsk」による修復作業は、インデックスを上書きすることによって行われます。
つまり、後戻りできません

必要なデータは、「chkdsk」を実行する前に必ずバックアップを取っておいてください
とはいえ、ファイルシステムに問題がある状態では、ファイル操作がままなりません。
従って、ファイルシステムを無視してデータを扱う必要があります。
このような操作ができるソフトとしては、ファイナルデータ等があります。

しつこいようですが、「chkdsk」で修復作業を実行した後、データを元に戻すことはできません
「chkdsk」による修復作業を行う際には、このようなリスクがあることを事前に把握しておいてください。

「chkdsk」を実行する

ここでは、コマンドプロンプトから「chkdsk」を実行します。
そのほうがより詳細な情報を得ることができ、また回復コンソールでの使用等、応用がきくからです。
というわけで、コマンドプロンプトを管理者として実行します。

まず、文字通り「chkdsk」と入力し、
半角スペースの後、続けてチェック対象となるドライブを入力します。

例えば「Cドライブ」をチェックしたい場合は、

chkdsk c:

と入力します。
まだ「Enter」キーは押さないでください。

読み取り専用モード

ちなみに、オプションを指定せずそのまま「Enter」キーを押すと、
「chkdsk」が読み取り専用モードで実行されます。

読み取り専用モードでも、ファイルシステムのエラーはチェックできます。
修正されないだけです。
また、ファイルシステムに関する現在の情報を確認できるので、これはこれで使いみちがあります。

「chkdsk」の実行対象

ドライブレターを入力することからもわかるように、
「chkdsk」を実行するには、少なくとも対象となるドライブを認識している必要があります
ドライブレターが与えられていない場合、つまりパーティションを認識していない場合は、
「chkdsk」を実行できません。
TestDisk」等を使って、パーティションの復旧を試みてください。

また、「chkdsk」がファイルシステムのスキャンをするには、
「chkdsk」が認識できるファイルシステムである必要があります。
たとえば、Microsoftが開発したNTFS、FAT32は対象となりますが、
Linuxのファイルシステムであるext4は対象外です。
指定したドライブのファイルシステムは、「chkdsk」が自動で判別します。

「chkdsk」の修復オプション

比較的よく使う、「chkdsk」の代表的な修復オプションを列挙します。

/f ファイルシステムを修復する
あくまでもソフトウェア的な修復で、ハードディスクのセクタチェックは行わない。
つまり、インデックスの修正に特化したもの
インデックスの修正が主目的である場合は、これ一択でいいです。
最も使用頻度の高いオプション。
/r 不良セクタを特定し、不良クラスタから読み取り可能なデータは回収する
また、「/f」のオプションを包括する。
領域内の全セクタをチェックするため、非常に時間がかかる。
読み取り不能のデータはそのまま失われるので、過信は禁物。
ちなみに、「/f」でダメだと、こっちでもダメな場合がほとんどです。
/b インデックスに登録されている不良クラスタをチェックし直す※Vista以降。
また、「/r」のオプションを包括する。
壊れかけのハードディスクから新しいハードディスクへ、パーティション丸ごと移した場合に有効かと。

上記3つのオプションは、完全な包括関係にあります。
「/r」のオプションを指定すると、「/f」も指定したことになり、
「/b」を指定すると、「/r」も「/f」も指定したことになります。

でも実際には、ほとんど「/f」しか使いません
「/f」だけ覚えておいてもいいくらいです。

負荷の高い「/r」オプション

「/r」のオプションは、「/f」とは比べものにならないぐらい時間がかかります
倍とか、そんな生やさしいもんじゃないです。
10倍をはるかに超える時間がかかることも多いので、覚悟しておいてください。

相応に、ハードディスクに対する負荷も高いです。
壊れかけのハードディスクが応答しなくなっても知りません。

大は小を兼ねる的発想で、一見「/r」を使いたくなる気持ちもわからなくはないんですが、
「chkdsk」を実行する目的が何なのかをよく考えたうえで、オプションを選択すべきです。
個人的に、「chkdsk」を使用する状況ではハードディスクの動作が怪しいことが多いので、
極力余計なことはしないほうがいいと考えます。
「/r」オプションを実行するのは、最後でいいです。

chkdsk c: /f

「chkdsk」による修復作業が必要な場合は、
上の画像のように修復オプションを入力し、「Enter」キーを押します。

対象がシステムパーティションの場合、
Windowsの動作中に、修復オプションを指定して「chkdsk」を実行することはできません

ファイルシステムを修正するにはインデックスを書き換える必要があるので、
修復対象のパーティションを一旦マウント解除する必要があります。
でも当然ながら、システムパーティションはシステムの動作中にマウント解除できません。
なので、再起動時に「chkdsk」を実行するかどうか、確認を求められます。

「Y」と入力して「Enter」キーを押すと、再起動時に「chkdsk」が実行されます。
「chkdsk」による修復が目的であれば、即座に再起動してください。

「chkdsk」プログラムは、完了するまでに非常に長い時間を要する場合もありますが、
ひたすら待って、一連の作業を完了させてください。

GUIのチェックディスクとの対応

「chkdsk」は、GUIから実行することもできます。
ディスクのプロパティからの「チェックディスク」と言えば、わかるでしょうか。

チェックディスク

  1. ドライブ(「Cドライブ」等)の右クリックメニューから「プロパティ」
  2. 「ツール」タブの「チェックする」
  3. 修復オプションを選択してから「開始」

というのが一連の操作です。

操作がGUIになっているだけで、裏でやっていることは結局同じです。
「Windows 7」だと2つのオプションがあり、それぞれ

  • ファイルシステムエラーを自動的に修復する
  • 不良セクタをスキャンし、回復する

となっています。

コマンドラインのオプションと対比させるとよくわかりますが、

ファイルシステムエラーを自動的に修復する /f
不良セクタをスキャンし、回復する /r

ということです。
ただし、GUIのオプションは包括関係になく、チェックボックスの見た目通り、個別に選択できます。

Windowsが起動できるのであれば、GUIからチェックディスクを行ったほうが楽です。
ただし、詳細な情報は得られません
一応、GUIでも実行後に「詳細の表示」をクリックすると、内容を確認できますが、
不良セクタに関する項目が表示されなかったりします。
また、「Windows 8」以降はチェックボックスもなく、エラーがあれば修正を試みるといった感じで、
より自動的になっています。
面倒でなければ、コマンドプロンプトから「chkdsk」を実行したほうが、内容を理解できると思います。

ちなみに、「不良セクタをスキャンし、回復する」と書かれていますが、
不良セクタが復活するわけではありませんので、誤解なきよう。
不良セクタを含んだクラスタは不良クラスタとして、ファイルシステム上使わないようにするだけです。