ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

Windows Server 2008 R2のHyper-Vで、仮想ゲストOSを異なるサーバーにコピーする方法

Windows Server 2008 R2上に構築されたシステムの運用を委託されました。
Hyper-Vを利用して、1台のハードウェア上に平均3台くらいの仮想ゲストを動作させています。

ハードディスクの空き容量が足らない

Hyper-V自体を初めて操作するので、操作方法を覚えるために仮想ゲストをコピーしようとしました。
検索すると、Hyper-Vマネージャでエクスポートして、名前を変更して、インポートしなおすという方法が見つかりました。
Hyper-V 仮想マシンの複製方法 - 年中暁を覚えず・・・・

ハードディスクの空き容量を確認すると、3台動作している仮想ゲストOSのどれを選んでもエクスポートできるほどの空き容量がありません。

異なるサーバーにエクスポートできない

ハードウェアは何台かあるので別のハードウェアを確認すると、エクスポートできるだけのハードディスクの空き容量がありました。
共有フォルダを作成し、権限をEveryone フルコントロールにして、Hyper-Vマネージャでエクスポートしましたが、

仮想マシンのエクスポート中にエラーが発生しました。
エクスポート中にファイルをコピーできませんでした。
ファイルを'D:\VHD\test1\test1.vhd'から
'\\192.168.1.11VHD\test1\test1.vhd'にコピーできませんでした
:エラー:一般のアクセスが拒否されました (0x80070005)

とエラーが表示されコピーできません。

検索すると、単純には回避できない現象のようです。
Hyper-V 共有フォルダへの仮想マシンエクスポート

同一ハードウェア上で一旦エクスポートしてから、別のハードウェアにコピーをすれば、結果として同じことはできることはわかりましたが、ハードディスクの空き容量が不足しているので、エクスポートができません。

.vhdファイルだけをコピーする

エクスポートできない場合どうすればいいんだと、いろいろ検索した結果、新しく仮想マシンを作成して、コピーしたい仮想ゲストOSがインストールされた.vhdファイルを指定すればできそうだとわかりました。

以下試してみた結果です。

1.vhdファイルをコピーします。

2.Hyper-Vマネージャで、新規→仮想マシンを選択します。
f:id:AJYA:20151215123707p:plain

3.次へをクリックします。
f:id:AJYA:20151215123839p:plain

4.名前は元と同じ名前にします。「仮想マシンを別の場所に格納する」にチェックを入れ、コピーした.vhdが存在するふぉ
f:id:AJYA:20151215124029p:plain

5.コピー元と同じメモリにします。
f:id:AJYA:20151215124154p:plain

6.適切なネットワークを選択します。
f:id:AJYA:20151215124303p:plain

7.「既存の仮想ハードディスクを使用する」を選んで、コピーした.vhdファイルを指定します。
f:id:AJYA:20151215124420p:plain

8.完了をクリックします。
f:id:AJYA:20151215124452p:plain

Hyper-Vマネージャに新たな仮想マシンが追加されたら、起動します。

.vhdファイルだけをコピーした場合の注意点

ネットワークアダプタが作り直されるようです。
コピー前と同じIPアドレスを割り振りなおすと、以前アダプタ名違いで同じIPアドレスを使っていたが、大丈夫このままで大丈夫かと質問されます。
問題は現時点では発生していない、大丈夫だと阪大しています。