IMG_1746実家のWindows Vista PCが、起動画面で長らく待たされたあと自動で再起動する動作を繰り返すようになってしまいましたが、何とか復旧しました。

ハードディスクのファイルシステムに障害が発生したことが原因でした。



状況

PCを起動させると、Vistaのロゴと経過を示すバーが動いたまま進展しなくなり、しばらくすると自動で再起動してしまいます。またセーフモードで起動させると、「crcdisk.sys」が読み込み中であることを表示したまま、それ以上進まなくなります。

起動しないPCではいろいろと調べるにも不都合なので、ハードディスクを取り外して自宅に持ち帰り、USB接続用のケースに入れ、別のPCに接続して確認しました。

Windows Vistaに接続した場合

エクスプローラで表示しようとすると、フォーマットが必要である旨が表示されます。
2

「管理ツール」の「ディスクの管理」では、ファイルシステムが「RAW」と表示されます。RAWというのは通常、ファイルシステムが作成されていない状態を意味します。
3

また、ハードディスクのプロパティを見ようとして右クリックしても反応が無く、見られません。

Ubuntu (Linux) に接続した場合

「ファイルシステムをマウントできません」と表示されます。
hdd_err

メッセージ内容
Error mounting: mount exited with exit code 13: $MFTMirr does not
match $MFT (record 0).
Failed to mount '/dev/sdb1': Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.
メッセージの意味(翻訳)
マウントエラー:マウントはコード13で終了しました:MTFMirrはMTFと一致しません(行0)
「/dev/sdb1」のマウント失敗:入力/出力エラー
NTFSは不一致、またはハードウェア障害 、またはソフトウェアRAIDもしくはハードウェアを利用したソフトウェアRAID(FakeRAID)です。最初の場合、「chkdsk /f」をWindowsで実行して再起動することを、2回行って下さい。書式の「/f」パラメーターはとても重要です。機器がソフトウェアRAIDもしくはハードウェアを利用したソフトウェアRAIDの場合、最初に設定を有効化して別のディレクトリにマウントして下さい。これ以上の情報は、「dmraid」のマニュアルを参照して下さい。

MFTMirrとMFTについては、以下に情報がありました。

NTFSシステムファイル( http://support.microsoft.com/kb/103657/ja )
$mft, Master File Table (MFT): Contains a record for every file on the NTFS volume in its Data attribute. 
$mftmirr, Master File Table2 (MFT2): Mirror of the MFT used for recoverability purposes. 

これによると、MFTMirrとMFTはWindows VistaのファイルシステムであるNTFSのファイル属性を管理する管理データであり、上記のメッセージは「管理データとそのバックアップが一致しない」というものです。MFTとMFTMirrは、通常、一致するもののようなので、MTFに障害がある場合、MFTMirrを使用して修復ができる場合があるようです。

対応の検討

このようにディスクやパーティションが認識されているもののファイルシステムが正常に認識されない場合、Windowsで「chkdsk /f」(チェックディスク)というコマンドを実行することでファイルシステムの修復が行えるようです。つまり、ハードディスクが物理的に壊れているということではなく、OSが扱う管理データが一部壊れている状況です。ただし、物理的な障害によって、このような状況となる場合も可能性としてはあり得ます。

ハードディスクが物理的に認識されている場合は、一般にデータ復旧ソフトが使用できます。データ復旧ソフトは、誤って削除したファイルを復元したり、正常に認識されなくなったハードディスクからデータを復元するソフトです。

Windowsの「chkdsk」コマンドは最低限の機能しか無く、修復できなかったファイルなどの扱いに若干の不安があります。その点、データ復旧ソフトは専用のソフトで多機能なので、一先ず、データ復旧ソフトでハードディスクを確認し、可能であれば必要なファイルを復元してバックアップすることにしました。

そのあとで、ディスクの修復を試みます。

バックアップ

データ復元ソフトとしては、ファイナルデータが有名で、復元が可能であるかどうか、購入前にダウンロードして試用することもできます。

ファイナルデータ9.0plus 特別復元版



最新版の9.0はWindows Vista/7に対応していますが、Windows 95/98/NT4.0/Me/2000/XPに対応したバージョン2.0を持っていたので、とりあえず、これで試してみました。NTFSはOSが新しくなるごとにバージョンアップしていますが、基本機能に関しては互換性があるため、何とかなるだろうという目論見です。

finaldata

手順

  1. ハードディスクをUSB接続用ケースに入れ、別のPCに接続し、Windows Vistaを起動
  2. FINALDATA 2.0を管理者として実行
  3. ファイルメニューから対象のドライブを選択
  4. データチェックのための各種スキャン
  5. 認識されたデータの復元

画面コピー

finaldata2 finaldata3
finaldata4 finaldata5

クラスタスキャンの残り時間に「22時間19分19秒」と表示されました。

クラスタスキャンはハードディスクの管理データではなく、実際のデータ(300GB)を総なめにしてデータを確認する作業です。

ファイルシステムの管理データが大きく壊れた場合にはこの方法が必要ですが、22時間は厳しいので、キャンセルして目視でざっと状況を確認したところ特に欠損無く認識されていたため、重要なファイルをひと通り復元しておきました。

ディスクの修復

上記の対応は、接続が手軽であるUSBのハードディスクケースを使用して行いましたが、「chkdsk /f」コマンドを実行するにあたり、速度的に有利なSATAケーブルにつなぎ変えました。速度の向上具合によっては、バックアップで諦めたクラスタスキャンも可能かもしれないとの思いもあります。

SATAケーブルにつなぎ変えてVistaを起動すると、予想外なことに、起動中に新たに接続したハードディスクのファイルシステム障害をOSが検出し、CHKDSKの実行要否を問われたので、実行を指示しました。

しばらくすると正常にVistaが起動し、ドライバのインストールが行われたために再起動が必要な旨のメッセージが表示されたため再起動を行い、あらためてそのディスクにアクセスすると、問題なくアクセスができるようになりました。

予想外な手順となりましたが、ファイルシステムが正常に修復されたようなので、ディスクを外して実家に持ち帰り、元のPCに接続すると問題なく起動し、一先ず、一件落着となりました。

その他の方法

復旧に至った手順が予想外だったのですが、本来の方法としては以下のような手順があったのではないかと思います。

システム回復オプション

Windows XP以前に用意されていた回復コンソールに該当する機能で、Windows VistaのインストールディスクからPCを起動することで使用でき、その中にコマンドプロンプトがあるため、そこから「chkdsk /f」を実行します。また、システム回復オプションのスタートアップ修復を行うことでも、同様の作業が行われるようです。
回復コンソールの後継機能
http://windows.microsoft.com/ja-JP/windows-vista/What-happened-to-the-Recovery-Console

最近のPCはOSのインストールディスクが同梱されず同等の内容がハードディスクに収められている場合があります。その場合はメーカーが回復コンソールへのアクセス方法を別途用意していることがあるので、それに従います。
<NECの場合>
121ware.com > サービス&サポート > Q&A > 情報番号 009688
Windows Vista(R)でシステム回復オプションからシステムの復元を行う方法
http://121ware.com/qasearch/1007/app/servlet/qadoc?QID=009688

ただし、この場合は障害が発生しているディスクからの修復に使用するツールを実行しようとする行為になるため、障害の内容によってはこの機能が呼び出せない場合もあると思います。

Windows PE

Windows PEは、Windowsプレインストール環境と呼ばれ、インストールやトラブルシューティングの目的で使用できる無償のOSで、マイクロソフトのサイトからダウンロードし、誰でも使用できます。Windows PEからPCを起動し、それから「chkdsk /f」を実行することができます。

改訂 管理者必携! 最強のデータ・サルベージ・ツールWindows PE 3.0(前編) − @IT
Windows PE 完全活用ガイド―[1]PEを使いこなすための基礎知識 - Computerworld

実は最初にこの方法を試したのですが、何故か、ハードディスクに障害が発生した実家のPCでは起動に非常に時間がかかり、最終的に表示されるはずのコマンドプロンプトが表示されるに至りませんでした。同じ起動CDで別のPCは起動したため、ハードディスク以外にも、なんらかのハードウェアに関する障害があるのかもしれません。

USBハードディスクケースで接続した状態で起動時に「chkdsk /f」

今回、SATAケーブルにつなぎ変えて起動した際に自動でchkdskが実行されましたが、もしかすると、USBハードディスクケースの電源が入った状態で接続して起動することが無かっただけで、USBの場合でも自動でchkdskが実行されるかもしれません。

USBハードディスクで接続した状態でコマンドプロンプトから「chkdsk /f」

USBハードディスクで接続した状態でドライブのプロパティを見ようとすると何も表示されない状態でしたが、もしかすると、コマンドプロンプトから「chkdsk /f」を実行することはできたかもしれません。