Jaa


Hyper-V Beta の Snapshot をマージするには

Windows Server 2008 RTM 日本語版のダウンロード開始が目前にせまった今日この頃ですが、いかがお過ごしでしょうか。

既に英語版をダウンロードしてお使いの方も多いと思いますが、そんな方々は、きっと Hyper-V もご堪能かと思われます。

つい先日、IT Pro 道場 運用管理基盤構築編 の週末開催 が終わり、ひとまずこのシリーズも終息したわけですが、道場で使用したデモ環境はすべて Hyper-V上で動作しておりました。Hyper-V には Snapshot という便利な機能が実装されており、これがでも環境を構築するのに実に役立ったわけで、もう Hyper-V 無しではでも環境を構築する気がおきないほど依存していました。

そして本日、Snapshot だらけになった環境を、1つの VHD に統合しようとしたところ、サーバーマネージャのHyper-V管理コンソールに「スナップショットをマージする」といったコマンドが見当たらないことに気付きました。

どうしたものかと情報をあさったところ、Hyper-V Beta では、少し面倒な手順でマージを行う必要があるとのこと。もしかすると、同じ理由で困っている方もいらっしゃるかもしれませんので、以下に手順のまとめておきたいと思います。

<注意>

    • この手順は、Hyper-V Beta 上での手順であり、正式にマイクロソフトによりサポートされた手順でないことに留意してください
    • 以下の手順を実施するまえに、必ずバックアップをとってください。くれぐれもお願いいたします
    • マージが完全に完了するまでは、VHDファイルを起動することができませんので、こちらも合わせて留意してください
    • 必ず、以下の手順を全て確認後、マージ処理を開始してください

まずは、手順の概要を理解してください。以下の環境があったとします。

[ おおもとのVHDファイル ] ← インストール直後の環境
└[Snapshot 1]
 └ [Snapshot 2]
   └ [Snapshot 3]  ← 最新のスナップショット(現在はこの環境で動いている)

上記の環境であることを踏まえ、マージを行うには、以下の手順を実施します。

  1. [Snapshot 3] を [Snapshot 2] にマージ
  2. [Snapshot 2] を [Snapshot 1] にマージ
  3. [Snapshot 1] を [おおもとのVHDファイル] にマージ

すなわち、起点となるスナップショットの数だけマージを行う必要があるわけです。

それでは、実際の手順を確認しましょう。

  1. 構成ファイルから現在のスナップショットファイルを確認する

    Virtual Machine を作成時に指定したフォルダ配下の、Virtual Machineフォルダを開く。

    ここに、XMLファイルが保存されているので、これをメモ帳等で開く。

  2. 構成ファイル(XML)から現在のスナップショットファイルのファイル名を見つける

    構成ファイルを開くと、以下の記述が見つかる。<pathname>タグに記載されているのが、現在使用されているスナップショットファイルだ。Virtual Machine にマウントされているVHDファイルが1つの場合には、pathname も1つだけだが、以下の例では、1つの Virtual Machine に3つの VHD ファイルがマウントされており、それぞれのスナップショットが記載されていることがわかる。

    ちなみに、以下に記載されているとおり、スナップショットファイルの拡張子は、avhd となる。

    <pathname type="string"> ~(略)~\DJDPM01_A97EBB85-2F82-40A4-AA3D-46AF2579A92C.avhd</pathname>
    <type type="string">VHD</type>
    <pathname type="string"> ~(略)~\BackupStrage_49F5E94F-E9A8-43B5-AFEA-0ED657653C98.avhd</pathname>
    <type type="string">VHD</type>
    <pathname type="string"> ~(略)~\WSBackup_AE3A4CE0-3F3D-4D0C-B189-802AE6A34FEF.avhd</pathname>
    <type type="string">VHD</type>
  3. avhd ファイルの拡張子を vhd に変更する

    2. で確認したファイルの拡張子を vhd に変更する。

    ここでは、

    DJDPM01_A97EBB85-2F82-40A4-AA3D-46AF2579A92C.avhd

    DJDPM01_A97EBB85-2F82-40A4-AA3D-46AF2579A92C.vhd

    に変更したものとする。

    ちなみに、スナップショットファイル(avhd)は、以下のに示すように、Snapshotフォルダ配下の「構成ファイルのファイル名と同じ名前のフォルダ」にまとめて格納されている。

  4. Edit Disk ウィザードを起動する

    サーバーマネージャの [役割] - [Hyper-V] - [Microsoft Hyper-V Servers] - [<Server Name>] を右クリックして [Edit Disk] をクリックする。

  5. スナップショットファイルを指定する

    「Loacte Virtual Hard Disk」画面で、拡張子を変更したスナップショットファイル(DJDPM01_A97EBB85-2F82-40A4-AA3D-46AF2579A92C.vhd)を指定して、[Next] をクリックする。

  6. Merge を選択する

    「Choose Action」画面で、Merge を選択し、[Next] をクリックする。

  7. To the parent virtual hard disk を選択する

    「Merge Changes from Differencing Disk」画面で、[To the parent virtual hard disk」を選択して、[Next] をクリックする。

  8. Parent Virthal Hard Disk のファイル名を確認する

    「Completing the Edit Virtual Hard Disk Wizard」画面が表示されるので、これからマージしようとしているマージ先の親ファイルを必ず確認する。

    ここでは、以下の通り、DJDPM01_23E2F300-0C-~(略)~.avhd であることがわかる。

    このファイル名が、「おおもとのVHDファイル」(拡張子 vhd)となったら、これが最後のマージだ。

    マージ先の親ファイルをメモしたら、[Finish] をクリックしてマージを開始する。

  9. マージ完了を待つ

    マージ完了までに要する時間は、スナップショットファイルの容量にもよるが、10分~30分程度であろうと思われる。 

  10. マージ後の親ファイルを確認する。

    マージが完了したら、3. で開いたフォルダを参照し、親ファイルのタイムスタンプが最新(現在)になっていることを確認する。

    この時点で、マージ先の親ファイルが最新のスナップショットとなった。

    以降、このファイル(ここではDJDPM01_23E2F300-0C-~(略)~.avhd )の拡張子を vhd に変更し、3. ~ 9. を繰り返す。

    8. にも書いたとおり、マージ先の親ファイルが「おおもとのVHDファイル」となったら、最後のマージとなる。

  11. 新しい Virtual Machine を作成する

「おおもとのVHDファイル」へのスナップショットのマージが完了後、既存の Virtual Machine を起動しようとしても起動することはできない。

いったん、既存の Virtual Machine を削除し、新しい Virtual Machine を作成する必要がある。

Virtual Machine 作成ウィザードでは、VHDファイルの指定画面において、マージしたVHDファイルを指定ればよい。

以上で手順は完了です。

一度マージをはじめたら後戻りはできません。くれぐれも、既存環境を壊さないよう、注意して作業を行ってください。