Archive for 2016年7月30日

Takanori

ハードディスク障害の顛末

2日ほど、パソコンが起動しなくなって対応をしていた。
パソコンのトラブルというのは、まぁ、いろいろあるのだが、起動してくれないことにはなにもできないので、データを失うことの次ぐらいに起動しないことは大問題である。

結果的には解決したのであるが、どうせなら次に同じようなことがあった場合に対応できるように、少し記録をまとめておこうと思う。

[障害発生]

Windows10にアップデートするかどうか迷いながら、まぁ、起動ディスクのバックアップを取ってから考えようとして、システムがはいったディスクと同じサイズの安価な3TBのハードディスクを入手し、バックアップを取ることにした。
Windowsがはいったディスクのバックアップを取るのに、Windows7のバックアップは使えない。
2TBを越えるハードディスクには対応していないからだ。

そこで、これまで通り、Acronis TRUE Image というソフトを使ってシステムディスクの「クローン」を作ることにした。
いざというときにも、そのディスクと入れ替えればシステムが起動する「はず」であるからだ。

すでに Acronis TRUE Image はインストールしてあったので、購入したディスクを接続し、クローンを作る作業を始めた。
何度か再起動をしながらクローンを作ってくれるので、その間はパソコンを離れて他の作業をしていた。

何度目かの確認時に、へんなメッセージが出て停止していた。
原因が分からず、できる操作を一通りしたあとに、やむなく、電源を落としてしまった。

あとから振り返れば、この時点で起きていたことは、システムディスクのクローニングに関係のないUSBの外付けディスクがつながっていることが障害になっていたようなのだが、そこでは気付かなかった。

クローニングなどの操作を行うときには、関係のないドライブなどはつながない、というのが原則なのであるが、その原則を忘れてしまったのが原因だ。
恐らくではあるが、これまでの実績から Acronis TRUE Image そのものの障害とは思えない。

そして、電源を投入したのであるが、起動ディスクが見つからない、というようなメッセージが表示され起動しなくなってしまった。

教訓は「原則を大切にしよう」である。
[調査]

このような場合に最初に確認しなければならないのが、データが保存されているかどうかであるが、パソコンが起動できないと当然ながら確認作業もできない。
他のパソコンにつないでみる、というのも1つの方法であるが、今後の作業のことも考えて古いハードディスク(1TB)を引っ張り出してきて、それにWindows7をインストールした。
そのハードディスクから起動し(これはなんなく成功)、障害を起こしたオリジナルのハードディスクと、クローンした先のハードディスクの中身を確認し、データが残されている(だろう)ことを確かめられた。
オリジナルにも、クローンにもデータがあるので、とりあえずクローンのハードディスクをパソコンに接続して起動を試してみたが、症状は同じだった。
どちらも起動できない。

これまで起動ができなくなったときには、MBR(マスターブートレコード)を書き直す、というのが基本的なテクニックだったが、今回はその方法を使えない。

なぜならば、3TBを越えるボリュームにWindowsをインストールするためには、UEFIという仕組みを使って起動しなければならないからだ。

問題は、私がUEFIの仕組みをよく知らないことであった。

UEFIはマザーボードに載っているプログラムと、ディスクのUEFI関連の情報が関連しながら動作することになっているようで、単純にMBRを上書きすればよい、という仕組みではない(というのを、今回いろいろと調べる中で初めて知った)。

調べてみると、回復用のコンソールを使う方法がいろいろ見つかったので、Windows7のインストールディスクを引っ張り出してきたが、回復コンソールまでたどり着けないことがあり、Windows8のインストールディスクを使うことにした。

教訓は「ちゃんと理解して使おう」である。
[対応]
回復コンソール(コマンドプロンプト)が起動できたら使う可能性があるコマンドはおよそ次の通りである。

diskpart
bcdedit
bootsect
bootrec

UEFIではEFIシステムパーティションにファイルが存在し、その中の \EFI\Microsoft\Boot フォルダに BCD というファイルがあり、そのファイルがおかしくなっていると起動できないらしい。

今回はパーティションが破壊されているわけでもなく、BCDファイルのような設定ファイルが壊れているだけだったと考えられたので、これらのコマンドを使いながらBCDファイルなどの復元を試みた。
コマンドの詳細なオプションなどは検索すれば出てくるのでそれを参照して欲しいが、とりあえず効果があったと思えるコマンドは次のようなものだった。

bcdboot c:\windows /v /s s: /l ja-JP /f UEFI

このコマンドを実行するためには、diskpart コマンドも使わなければならない。

なお、これらの対応は、クローン先のハードディスクに対して行った。
復旧できる方法を見つけたらオリジナルのハードディスクに同じ方法を試すためである。

だが、いろいろ調べて、何度やっても起動できない。

一度は、他のツールを使ってうっかりMBRを書き換えるような操作をしてしまい、上記のコマンドを使って復旧する必要があった。
UEFIではMBRを使わないので、へんな操作をすると事態をより複雑にしてしまう。

コマンドをいろいろなパラメータで実行してみたが、正しいコマンドかどうか自信の持てないときのほうが多かった。
UEFIの仕組みをきちんと理解していないからだ。
試行錯誤をしたのだが、ここでの試行錯誤が問題をさらに見つけづらくしていたかもしれない。

ここでも教訓は「ちゃんと理解して使おう」である。
[復旧]
いろいろ試してみたし、何度かUEFI(BIOS)を起動して起動ドライブの設定などを試していたのだが、その中に1つ思い込みがあった。
UEFIで起動しているはず(実際にGPTフォーマットになっている)なのだから、起動モードは「UEFI」である、というものである。

そんなことで起動モードを「UEFI」にしていたのだが、オプションの説明を見てもそれっぽいことが書いてあったのでまったく疑わなかったのだ。

だが、あるサイトの記述を参考に「非UEFI」にして起動してみた。

そうしたら、すんなりと起動してしまった。
あまりにもあっけなく起動したので、笑ってしまったぐらいだ。

UEFI の環境では、マザーボードとディスクが協調して動くので、これらの設定が合っていないと起動ドライブとして認識さえしてくれない。

もちろん、障害が起きたときのままでは起動できなかったので、コマンドを使ってディスクの設定を変えたことは意味があったはずなのだが、途中から起動できない理由が起動モードの設定が合っていなかったことになっていたらしい。
教訓は「思い込みは敵である、正しいはずというのは正しいとは言えない」である。
かくして、元通りの環境を手に入れることができ、データのバックアップも取れ、いざとなったらオリジナルのハードディスクに手を入れないで Windows 7 を新規インストールできるようにと買った 4TB のディスクが手元に残った。
UEFIの仕組みもまぁまぁ理解できたし、復旧用のツールも使えるようになった。

そして、対策をしているうちに、Windows 10 の無料アップデートの期間が終了してしまった。
アップデートするかどうかで悩まなくてよくなったのはいいのだが・・・なんか損をした気分ではある。

最後の教訓は「余裕を持って行動しよう」である。