Windowsは、「chkdsk」というディスクのエラーチェックツールを備えています。
ハードディスク等について何らかのエラーが出た場合には、まずお世話になるプログラムだと思います。

chkdsk c: /f

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

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

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

従って、ハードディスクにエラーがあるかどうかを調べるために「chkdsk」を走らせるというのは、
誤った使用方法であると言ってもいいかもしれません。
たとえば、すでにそのパーティションのファイルシステムで認識されているセクタエラーについては、
「chkdsk」を実行しても無視され、正常終了します。

ハードディスクのエラーチェックが主目的である場合には、
Drive Fitness Test」のような、各ハードディスクメーカーから提供されているツール等を使うべきでしょう。
そもそも「chkdsk」は、ハードディスクのセクタエラーチェックツールではないのですから。

何も修復しない「chkdsk」

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

「chkdsk」は、ハードディスクに対して負荷の高いプログラムです。
特にハードディスクが末期的な状態の時は、「chkdsk」で修復を試みるのは、極力後回しにしたほうがいいです。
「chkdsk」を走らせたっきり、終了しなくなる可能性が高いです。

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

また、「chkdsk」によるファイルシステムの修復作業は、データを上書きすることによって行われます。
つまり、後戻りできない作業なのです。

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

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

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

「chkdsk」を実行する

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

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

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

chkdsk c:

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

「chkdsk」の修復オプション

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

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

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

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

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

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

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

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

chkdsk c: /f

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

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

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

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

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

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

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

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

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

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

となっています。

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

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

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

Windowsが起動できるのであれば、GUIからチェックディスクを行ったほうが楽ですね。
それでもこれを最初に書かなかったのは、チェックディスクによる修復の危険性を認識してほしかったからです。

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