Hyper-Vで、仮想マシンを単純にエクスポート・インポートで複数複製すると、
仮想マシンのUUIDが重複してしまう問題が起きます。
このUUID重複は、UUIDを使用して一意のマシンを特定しているソフトウェアで、問題が起きるケースがあります。
(Cylance, ARCserve等)
レジュメ
Hyper-Vの仮想マシンインポートの種類での違い
Hyper-Vでのインポートには、上記画像のように三種類のインポート方法があります。
- 仮想マシンをインプレースで登録する(既存の一意なIDを使用する)
- 仮想マシンを復元する(既存の一意なIDを使用する)
- 仮想マシンをコピーする(新しい一意なIDを作成する)
これらの選択肢のどれを選んで仮想マシンを複製しても、残念ながら
複製元と複製先ではUUIDが重複します。
環境・前提条件
- Windows Server 2016のHyper-Vホスト
環境で確認しました。
Hyper-Vの「一意なID」というのは「UUID」とは異なるの?
残念ながら、Hyper-Vの「一意なID」というのは、「UUID」とは
異なります。
ここで言いますUUIDは、BIOS GUIDとも言われるUUIDのことを言っています。
では、Hyper-Vの「一意なID」いったい何かといいますと、「Hyper-Vホスト管理上での内部ID」です。
具体的には、
C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines
配下に、仮想マシンの設定ファイルがあるのですが、その設定ファイル名がここでいう「一意のID」です。
ファイル名なので、同一ホスト上では、同じIDは存在しえないIDとなります。
となりますと、インポート元の仮想マシンがあります同一Hyper-Vホスト上で、複製目的でインポート出来る種類の選択肢としては、
- 仮想マシンをコピーする(新しい一意なIDを作成する)
しかありません。
しかし、UUID(BIOS GUID)は重複してしまうのです。
既存の一意なIDを使用する(仮想マシンをインプレースで登録する、仮想マシンを復元する)
既定の一意なIDを使用するインポート選択肢は、インポート元の存在するHyper-Vホスト上では実行できません。(Hyper-Vの内部IDが重複してしまうため)
別のホストでは、インポートの種類として実行可能なのですが、違いとしては
- 「仮想マシンをインプレースで登録する 」は、インポート元データをそのまま仮想マシンとして使用する
- 「 仮想マシンを復元する 」は、インポート元データをコピーして仮想マシンとして使用する
という違いがあります。
時間がかかるのは、後者になります(コピー時間が差になります)。
Hyper-VにはUUIDを重複させない仮想マシン複製方法はないのか?
実はあります。
Hyper-Vで新規の仮想マシンを作成しつつ、
コピーした仮想ハードディスクを選択する方法
です。
もしくは、新規の仮想マシンを作成した上で、仮想ハードディスクの指定を変更し、複製元からコピーした仮想ハードディスクを指定します。
新規の仮想マシンを作成すれば、さすがにUUID(BIOS GUID)は変更され、
その上、コピーした仮想ハードディスクを使用しているので、仮想マシンの複製がされています。
注意点としましては、Sysprepを実行しWindows内部のSIDを重複させないように注意することです。
参考までに、VMwareではUUIDの重複はおきませんでした。
- 仮想マシンのクローン
- 仮想マシンのOVFエクスポート・インポート