同OSはVHDX形式ファイルをExplorer上にマウントできるので、VHDXファイルからデータを取り出す事が可能です。
しかし、正しい操作を行わないと時によっては招かざる客(仮想OSの起動エラー)を招く事があります。というより、招いてしまいました。
今回は仮想OSを起動すると「仮想ハード ディスクのチェーンにアクセスできません。~」のエラーがでた場合の対処法をメモ。
現象
下記環境および操作によってVHDXファイルを破損させてしまいました。- Windows 7 Home Basic 32bitをインストールしたVHDXファイルには差分ファイルが存在している
- 親のVHDXファイルをホストOS(Windows 8)上でマウント
- Windowsフォルダ配下のDLLを操作
- [ディスク管理]からVDHXドライブを切断
- ホストOS上のHyper-Vから仮想OSを起動すると下記エラーが表示され、仮想OSが起動しない
エラーメッセージ
‘xxxxx’の状態を変更しようとして、アプリケーションでエラーが発生しました。
‘xxxxx’は復元できませんでした。
Microsoft Emulated IDE Controller(インスタンスID xxxxxxxxx): 復元できませんでした。エラー ‘仮想ハード ディスクのチェーンにアクセスできません。チェーン上位の仮想ハード ディスクを開く際にエラーが発生しました。’
アタッチメイント ‘x:\xxxxx\xxxxx.avhdx’を開けませんでした。エラー:’仮想ハード ディスクのチェーンにアクセスできません。チェーン上位の仮想ハード ディスクを開く際にエラーが発生しました。'
仮想ディスク ‘x:\xxxxxx.avhdx’を開けませんでした。差分ディスクのチェーンの仮想ディスクを開くときに問題が発生しました。’x\xxxxxx\xxxx.vhdx’: ‘仮想ハード ディスクのチェーンが壊れています。親の仮想ハード ディスクのIDと差分ディスクのIDが一致しません。’
原因
エラーメッセージに書いてある[仮想ハード ディスクのチェーンが破損]が今回の原因でしょうが、気になったのでもう少し詳しく調べてみました。Technet[よく寄せられる質問: Windows 7 および Windows Server 2008 R2 の仮想ハード ディスク]のVHDファイルの種類にある[差分]を見ると
差分 VHD の親に変更を加えることはできません。と明記されています。
親 VHD が変更されたり、(ファイル名が同じであっても) 別の VHD に置き換えられた場合は、親と差分 VHD の間のブロック構造が一致しなくなり、差分 VHD が壊れます。
現象に明記した作業によってブロック構造が変わり、親ディスクを破損したと考えられます。
対処法
現象に書いた作業は今後も行うと思いますので、そうなった時に対応できるよう対処法をメモ。手順は知っていれば簡単です。
- 仮想OSの[設定]をクリック
- [ハード ドライブ]→[検査]をクリック
- [仮想ハード ディスクのプロパティ]ウィンドウに明記されているエラー[差分仮想ハード ディスク チェーンが壊れています。適切な親仮想ハード ディスクに子を再接続してください。]のとおり、[再接続(R)…]をクリック
- [仮想ハード ディスク]の編集ウィザードにそって操作。
途中、[IDを無視する]のチェックボックスがありますので、チェックをします。
チェックを忘れ、再接続を行うと下記エラーがでます。