Hyper-V の仮想マシンにおける エクスポート / インポート の互換性


Hyper-V を長年使っておりますが、エクスポートとインポートの互換性が徐々にややこしくなっているので、整理を兼ねて一度まとめておこうと思います。

今回は、Windows Server 2012 以前の Hyper-V にてホストしていた仮想マシンを 2012 R2 環境へと移行する場合を想定して、異なる OS 間での Hyper-V 仮想マシンのエクスポート / インポートがどこまで可能なのかについて検証しました。”結論だけ知りたい” という方は、表 2 をご確認ください。

 

[検証 1] 実際に仮想マシンを作成して、エクスポート / インポートを試してみました

Hyper-V マネージャーから仮想マシンを新規作成し、エクスポートを実行します。

以下は 2012 R2 での画面です。

 image

なお、今回利用したホスト OS は以下の通りとなります。

  • Windows Server 2008 SP2
  • Windows Server 2008 R2 SP1
  • Windows Server 2012
  • Windows Server 2012 R2

 

上記の 4 つの Hyper-V ホストにてエクスポートを行いました。

2012 R2 では 2012 以前で作成していた “第一世代 仮想マシン” と ”第二世代 仮想マシン” という 2 種類の仮想マシンの作成が行えるため、Gen1, Gen2 として 2 種類を作成しています。

image 

 

エクスポートした 5 つの仮想マシンを、4 つの OS にてインポートを試みた結果、以下のようになりました。

  • 新しい OS にて作成した仮想マシンを古い OS のホストにインポートする事は不可
  • Windows Server 2012 R2 でインポート可能なのは 2012 / 2012 R2 で作成した仮想マシンのみ

    (こちらについては検証 2 もご覧ください)

 

Export元\Import先 2008 2008 R2 2012 2012 R2
2008 ×
2008 R2 × ×
2012 × ×
2012 R2 (Generation 1) × × ×(*1)
2012 R2 (Generation 2) × × ×(*1)

表 1 : エクスポート / インポート 実施結果

 

[検証 2] Windows Server 2012 R2 に 2008 / 2008 R2 上の仮想マシンをインポートする方法を模索

Hyper-V マネージャー からエクスポート / インポートを行った場合については上記のような結果となりましたが、何らかの方法で 2008 / 2008 R2 → 2012 R2 を行う事は出来ないのか検証しました。

そもそも、Windows Server 2012 ではインポート出来るのに、なぜ 2012 R2 でインポートが出来ないのか。

その原因については こちら (英語) *2 にて解説されていました。

要約すると、Windows Server 2012 より、仮想マシンのインポート / エクスポートの方式に改善が加えられており、2008 / 2008 R2 と 2012 /2012 R2 では利用されている WMI 名前空間 (内部の管理用 API のようなもの) が異なる(ざっくり言うと、インポート / エクスポート方式が異なる)という事のようです。そして、Windows Server 2012 では 2008 / 2008 R2 以前の方式もサポートされていましたが、2012 R2 より削除されたため、検証 1 のような結果となっています。(*3)

Windows Server 2012 以降で行われた、インポート / エクスポート方式の改善というのは、エクスポートの処理を実行していない場合であっても、構成ファイルや仮想 HDD ファイルが揃っていればインポートが可能というものです。裏を返すと、それ以前(2008 R2 以前)の環境では、Hyper-V マネージャーよりエクスポートを実行していないと、インポートを行う事は出来ませんでした。

それならばという事で、2008 / 2008 R2 の仮想マシンをファイル コピーでインポートが可能か試します。

Windows Server 2008 / 2008 R2 から 2012 R2 へファイルをコピーします。

  • 仮想ハード ディスク ファイル (VHD ファイル)
  • 構成ファイル、スナップショット一式

既定ではそれぞれ以下に保存されていますが、設定を変更されている場合は Hyper-V の設定を確認してください。

  • C:UsersPublicDocumentsHyper-VVirtual hard disks
  • C:ProgramDataMicrosoftWindowsHyper-V

Windows Server 2012 R2 へコピーが完了したら、Hyper-V マネージャーの [仮想マシンのインポート] よりインポートを行います。

フォルダーの検索にて、コピーした Virtual Machines フォルダを指定して [次へ] を選択すると、2008 / 2008 R2 の仮想マシンが表示されます。

 

image

image

そのまま進むと、仮想ハード ディスクが見つからない等のエラーが表示される場合がありますが、コピーした VHD ファイルを選択して進みます。

image

問題なくインポート出来るかと思いきや…

2008 R2 のものは問題なくインポートできましたが、2008 のものは以下のようなエラーになりました。

image

イベント ビューアーを開き、イベント ログを確認してみます。

[アプリケーションとサービス ログ] – [Microsoft] – [Windows] – [Hyper-V-VMMS] – [Admin] に、以下のエラー イベントが表示されています。

  • 14242 (仮想マシン <仮想マシン名> の VM バージョン 1.0 はサポートされていません。)
  • 14236 (仮想マシン <仮想マシン名> の VM バージョンをアップグレードできませんでした: エラーを特定できません (0×80004005)。)
  • 19600 (<仮想マシン名> は認識できませんでした。)

image

どうやら 2008 は VM のバージョン(2012 R2 より導入された ”世代” とは異なります。)がサポートされないという事のようです。

 

[結果]

以上をまとめると仮想マシンのエクスポート / インポートは表 2 のような結果となります。

(あくまでも検証した結果であり、動作が保障されるものではない事をご了承ください)

Export元\Import先 2008 2008 R2 2012 2012 R2
2008 ×(?)
2008 R2 × △(検証2)
2012 × ×
2012 R2 (Generation 1) × × ×(*1)
2012 R2 (Generation 2) × × ×(*1)

表 2 : 今回の検証結果

まあ、ぶっちゃけエクスポート / インポートじゃなくて、VHD だけコピーして仮想マシン作り直せばいいよねっていう話もあるのですが。構成情報とかスナップショット維持したままとなると、そうもいかないわけで。

[補足]

ホスト OS によって、サポートされるゲスト OS が異なります。詳しくは以下の URL をご確認ください。

 

[参考 URL]

(*1)

Importing a VM that is exported from Windows Server 2012 R2 into Windows Server 2012 is not supported

http://support.microsoft.com/kb/2868279/en-us (英語)

http://support.microsoft.com/kb/2868279/ja (機械翻訳版)

(*2)

Windows Hyper-V 2012 & 8.1 Hyper-V Did Not Find Virtual Machine to Import

http://blogs.technet.com/b/rmilne/archive/2013/10/22/windows-hyper-v-2012-amp-8-1-hyper-v-did-not-find-virtual-machine-to-import.aspx (英語)

(*3)

Features Removed or Deprecated in Windows Server 2012 R2 – WMI rootvirtualization namespace v1 (in Hyper-V)

http://technet.microsoft.com/en-us/library/dn303411.aspx (英語)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください