トップページコラム > > Windows XP 障害HDDの修復





Windows XP 障害HDDの修復

作成日: 2012年5月30日
更新日: (なし)

STOPエラー:0x000000EDで起動不可

あるパソコンのトラブル対応に付き合いました。 OSはWindows XPで、電源を入れても起動しない状態ということでした。 電源を入れてみると確かに起動できません。 Windowsのロゴが出る画面(ピロピロ画面)の次に移ろうかというタイミングで、「STOPエラー:0x000000ED」のブルー・スクリーンに陥ります。 STOPエラー:0x000000EDは「UNMOUNTABLE_BOOT_VOLUME」です。 持ち主に話を聞いてみると、Windowsが固まったので電源ボタンを長押しして強制終了したそうです。 その後、電源を入れても(以下、省略)。

HDDの状況

ここでは起動できなくなったパソコンのHDDを「障害HDD」と呼んでおきます。 その障害HDDはデータ流出防止のために丸ごと暗号化されていたので、まずはかけられた暗号を復号化する必要がありました。 そのために障害HDDをパソコンから取り出して、SATA-USB変換アダプターを使って他のパソコンとUSB接続させました。 その辺りの話は暗号化ツールのことなので割愛します。

HDD障害時のディスクの管理の画像

左の画像は障害HDDを他のパソコンと接続させた状態で取得した「ディスクの管理」の画面キャプチャーです。 「ディスク0」は他のパソコンが元から使っていたHDD、「ディスク1」がUSB接続で他のパソコンに認識させた障害HDDです。

画像の赤線で囲っている「ディスク1」の「E:」ドライブとして認識されているパーティションが障害HDDでシステム領域(C:ドライブ)として使われていたところです。

「SERVICEV001」はパソコンを初期出荷状態に戻す操作で使われるOSイメージなどが格納された特別なパーティションです。 他のパソコンにも「SERVICEV001」が備えられているので、ディスク0とディスク1にそれぞれ存在する形になります。 よく見ると、正常な状態では「NTFS」と表示される「ファイル システム」の箇所が空欄になっています。

HDD障害時のイベントログの画像1

右の画像はイベントログの画面をキャプチャーしたものです。 「Harddisk1」に不良ブロックがあると出力されています。 この状態でデバイスマネージャからUSB接続した障害HDDを確認すると、「このデバイスは正常に動作しています」と表示されていました。

それと、エクスプローラから「E:ドライブ」にアクセスできませんでした。 エクスプローラがしばらく「応答なし」に陥って、それから「ドライブEのディスクはフォーマットされていません。今すぐフォーマットしますか?」というポップアップが出てきます。 全く乱暴な作りで、流れで「はい」をクリックしようものなら(以下、省略)。

HDD障害時のイベントログの画像2

もう一つ、イベントログにメッセージが出力されていました。 「ディスクのファイル システム構造は壊れていて使えません。chkdskユーティリティをボリュームE:で実行してください。」というメッセージです。 こちらのように具体的で分かり易いメッセージは大歓迎です。

他に有用な情報は見当たりませんでした。 強いて挙げるなら障害HDDのアクセス・ランプが規則的に点滅していたことくらいです。 通常のデータの読み書きのようにランダムに点滅するのではなくて、同じタイミングと長さのアクセスが規則的に続いているような感じでした。

chkdskの実行

結果から先に書くと、chkdsk(「chkdsk /f」コマンド)を実行することで障害HDDを修復できました。 それだけでブルー・スクリーンにハマることなくWindowsを起動できるようになりました。

chkdskを実行するに至った一番の理由は「ディスクの管理」での障害HDDの認識のされ方です。 「E:ドライブ」の中身は見えないものの、容量や別のパーティション(SERVICEV001)の情報は取得できていました。 ここからディスクのパーティション情報は壊れていないと推測しました。 パーティション情報が壊れている場合は修復ツールを使い分けながら対応しないといけなかったようなのでラッキーでした。 後はruurooさんの「chkdsk」と修復オプションのページを読んでchkdskの勉強をしてから実行しました。

chkdskコマンドの処理時間は障害HDDの容量約300GBのところを15分ほどで終わりました。 それと、「証明書〜」といったファイルをいくつか削除したとありますが、これは電源ボタン長押しで強制終了した時に開いていたファイルだったそうです。 以下はchkdskコマンドの出力です。

C:\>chkdsk E: /f
ファイル システムの種類は NTFS です。
ボリューム ラベルは Preload です。

CHKDSK はファイルを検査しています (ステージ 1/3)...
ファイル レコード セグメント 17780 を読み取れません。
ファイル レコード セグメント 17781 を読み取れません。
ファイル レコード セグメント 17782 を読み取れません。
ファイル レコード セグメント 17783 を読み取れません。
ファイルの検査を完了しました。
CHKDSK はインデックスを検査しています (ステージ 2/3)...
ファイル 11 内のインデックス $I30 のインデックス エントリ $UsnJrnl を削除します。
ファイル 25 のインデックス $O からインデックス エントリを削除します。
ファイル 25 のインデックス $O へインデックス エントリを挿入しています。
ファイル 71 内のインデックス $I30 のインデックス エントリ ~DFEEC1.tmp を削除します。
ファイル 119151 内のインデックス $I30 のインデックス エントリ 証CD06~1.DOC を削除します。
ファイル 119151 内のインデックス $I30 のインデックス エントリ 証明書(4).doc を削除します。
インデックスの検査を完了しました。
CHKDSK は破損ファイルを回復しています。
孤立したファイル 証CD06~1.DOC (133569) をディレクトリ ファイル 119151 に回復します。
孤立したファイル 証明書(4).doc (133569) をディレクトリ ファイル 119151 に回復します。
孤立したファイル ~DFA290.tmp (133583) をディレクトリ ファイル 71 に回復します。
CHKDSK はセキュリティ記述子を検査しています (ステージ 3/3)...
セキュリティ記述子の検査を完了しました。
CHKDSK は、Usn 情報をリセットしています...
1 個の不良クラスタを不良クラスタファイルに追加します。
マスタ ファイル テーブル (MFT) のデータ属性エラーを修復します。
CHKDSK はマスタ ファイル テーブル (MFT) ビットマップに割り当て済みとして マークされている空き領域を検出しました。
ボリューム ビットマップ エラーを修復します。
ファイルシステムを修正しました。

  308526079 KB : 全ディスク領域
  50337988 KB : 137683 個のファイル
  48160 KB : 15264 個のインデックス
  4 KB : 不良セクタ
  233099 KB : システムで使用中
  65536 KB : ログ ファイルが使用
  257906828 KB : 使用可能領域

  4096 バイト : アロケーション ユニット サイズ
  77131519 個 : 全アロケーション ユニット
  64476707 個 : 利用可能アロケーション ユニット

C:\>

HDD復旧後のディスクの管理の画像

chkdskの実行後の「ディスクの管理」の画面キャプチャーです。 空欄になっていた「ファイル システム」の箇所にしっかり「NTFS」が入っています。 同じく空欄だったボリューム名も「Preload」と元々あった名前が見えるようになっています。 もちろん、エクスプローラからE:ドライブにアクセスすると、中身を見ることができるようになっていました。

最後に障害HDDをパソコンに戻し、Windowsが無事起動できることを確認をして修復完了となりました。 私も電源ボタン長押しで強制終了することはありますが、起きる時は起きるんだなと実感しました。 その程度で壊れるファイルシステムは困ったものですが、コマンド一発で修復できたことは評価したいです。

更新履歴

更新日 更新内容
2012年5月30日 新規作成