Windows Server 2016 TP4による仮想Hyper-Vホスト間ライブマイグレーション実行例

2015年11月20日に日本語版Windows Server 2016 Technical Preview 4(TP4)がリリースされました。
このWindows Server 2016 TP4ではWindows 10 Insider Preview Build 10565で先行公開されたNested Virtualization機能が使用できます。
そのWindows 10 Insider PreviewのHyper-VはクライアントHyper-Vですので記憶域だけの移動しかできません。
一方のWindows Server 2016 TP4のHyper-Vでは仮想マシンと記憶域の両方のライブマイグレーションが可能です。
しかも今回のWindows Server 2016 TP4でのNested Virtualization機能を使用すれば1台の物理PC上でライブマイグレーションのテストができるようになります。
1台の物理PC上でライブマイグレーションを実現するには以下のHyper-V仮想マシンを用意すればOKです。
※物理Hyper-VホストはWindows Server 2016 TP4(またはWindows 10 Insider Preview Build 10565以上)とします。
・ドメインコントローラ用仮想マシン
・ドメインメンバーにしたWindows Server 2016 TP4の仮想マシン2台
・ライブマイグレーションでの移動対象となる仮想マシン

下記はWindows Server 2016 TP4を実Hyper-Vホストとする環境で2重にネストされた仮想マシンのデスクトップ例です。
※Nested Virtualization環境での実Hyper-Vホスト上で直接実行される仮想マシンをThe first layer VMといいます(日本語では第1レイヤ仮想マシン/第1レベル仮想マシン)。
・Hyper-Vホスト上の第1レベルの仮想マシン(Windows Server 2016 TP4) :HVWS16TP4DM1VML1b(ホスト名:WS16TP4DM1VML1b)
・第1レベルの仮想マシン(HVWS16TP4DM1VML1b)上の第2レベルの仮想マシン[その1](Windows Server 2016 TP4):HVWS16TP4VML2b
・第1レベルの仮想マシン(HVWS16TP4DM1VML1b)上の第2レベルの仮想マシン[その2](Windows 10 Home):mySMBVM1(仮想マシンと記憶域をSMBに配置したものです)



・実寸画像はこちらです。

極端なネスト例ですが下記はWindows Server 2016 TP4を実Hyper-Vホストとする環境で第1レベル〜第5レベルの仮想マシンまですべてWindows Server 2016 TP4とした例です(仮想マシンの5多重化例)。


尚、Hyper-V環境で急にインターネット接続ができなくなっても仮想Hyper-Vホストやその上で動作する仮想マシンから例えばiPhoneへのテザリング機能を介してUSB接続での無線LAN接続によるインターネット接続が可能となります。
インターネット接続ができなくなった仮想Hyper-Vホストとその上で動作する仮想マシンの様子
・iPhoneへのテザリング機能を介してインターネット接続が可能となった仮想Hyper-Vホストとその上で動作する仮想マシンの様子



・実寸画像はこちらです(iPhoneへの無線LAN接続ではそのIPアドレスが172.20.10.xになります)。

実Hyper-Vホストと仮想Hyper-Vホストについては以下の全ケースが動作します。
(1)実Hyper-Vホスト(Windows Server 2016 TP4) - 仮想Hyper-Vホスト(Windows Server 2016 TP4)
(2)実Hyper-Vホスト(Windows Server 2016 TP4) - 仮想Hyper-Vホスト(Windows 10 Insider Preview Build 10565[以降])
(3)実Hyper-Vホスト(Windows 10 Insider Preview Build 10565[以降]) - 仮想Hyper-Vホスト(Windows 10 Insider Preview Build 10565[以降])
(4)実Hyper-Vホスト(Windows 10 Insider Preview Build 10565[以降]) - 仮想Hyper-Vホスト(Windows Server 2016 TP4)

下記は上記(4)に準じる例で、実Hyper-VホストがWindows 10 Enterprise Build 10586(評価版)でその上で実行されている仮想Hyper-VホストがWindows Server 2016 TP4の例です。



・実寸画像はこちらです(1920x1200)。

ライブマイグレーションを実行するにはドメイン環境が必要ですが今回は既存のHyper-V Server 2012 R2上で構築したWindows Server 2016 TP3ベースのドメインコントローラ用仮想マシン(HVSWS16TP3DC)が既にありましたのでそれをドメインコントローラとして使用することにしました。
Windows Server 2016 TP4を使用したライブマイグレーションのテスト環境の構築の流れは以下の通りです。
  1. Windows Server 2016 TP4の実Hyper-Vホストの構築
    今回構築した実Hyper-Vホストのホスト名はWS16TP4HVHOSTです。

  2. Windows Server 2016 TP4がドメインメンバーになれるドメインコントローラの構築(または既存ドメインコントローラの利用)
    今回利用した既存のドメインコントローラのホスト名はHVSWS16TP3DCです。

  3. 実Hyper-Vホスト上での仮想Hyper-Vホスト(その1)の構築
    ・最初はワークグループの所属でOKです。
    ・Nested Virtualization機能の有効化(Enable-NestedVm.ps1スクリプトの利用)
    今回最初に構築した仮想Hyper-Vホスト(その1)の仮想マシン名はHVWS16TP4DM1VML1bでホスト名はWS16TP4DM1VML1bです(DM1はDomain Member #1の意)。

  4. 実Hyper-Vホスト上での仮想Hyper-Vホスト(その2)の構築
    これは仮想Hyper-Vホスト(その1)のクローン仮想マシンとして作成すると手間が省けます。
    今回クローンとして構築した仮想Hyper-Vホスト(その2)の仮想マシン名はHVWS16TP4DM2VML1bでホスト名はWS16TP4DM2VML1bです(DM2はDomain Member #2の意)。

  5. 仮想Hyper-Vホスト群のドメインメンバー化とHyper-Vの設定におけるライブマイグレーションの有効化

  6. Active Directoryに登録された仮想Hyper-Vホスト群に対するドメインコントローラでの制約付き委任の設定
    制約付き委任は移行元Hyper-Vホスト(ソースホスト)のプロパティでの「Delegation」タブで移行先Hyper-Vホスト(宛先ホスト)とサービスを指定します。

  7. 仮想Hyper-Vホスト上でライブマイグレーションの対象とする仮想マシンの作成
    今回はWindows 10 Homeをインストールした仮想マシンとしてHVSW10Home(ホスト名も同じ)を用意しました。

  8. ライブマイグレーションの対象とする仮想マシンにHyper-Vマネジャで接続する仮想マシン
    今回はWindows 10 Proをインストールした仮想マシンとしてHVSW10ProDM(ホスト名も同じ)を用意しました。
    このHVSW10ProDMもドメインメンバー化しておきます。

  9. 留意事項
    (1)仮想Hyper-VホストのOSは2個ともWindows Server 2016 TP4とします。
    実Hyper-VホストのOSがWindows Server 2012 R2の場合、Windows Server 2016 TP4の(実/仮想)Hyper-VホストからWindows Server 2012 R2のHyper-Vホストへのライブマイグレーションは「プロトコルバージョン(プロトコルバージョン6.0)がサポートされていないため、接続を確立できませんでした。」というエラーになります。
    ここでのプロトコルバージョンとはKerberos認証のバージョンであり、Windows Server 2012 R2ではバージョン5でWindows Server 2016 TP4ではバージョン6が実装されています。
    ※逆方向(Windows Server 2012 R2側からWindows Server 2016 TP4側)のライブマイグレーションは可能です。

今回使用したPCのハードウェア/ソフトウェア構成は以下の通りです。


Nested Virtualization機能の有効化を含めた説明についてはWindows 10 Insider PreviewでのNested Virtualization利用手順をご参照下さい。
ここではいきなりライブマイグレーションの実行手順を紹介します。


■ ライブマイグレーションの実行手順

  1. ライブマイグレーション対象仮想マシン(HVSW10Home)への接続と起動
    下記は仮想Hyper-Vホスト(その2)に存在する仮想マシン(HVSW10Home)に接続・起動したデスクトップです。
    今回のライブマイグレーションではこの仮想マシン(HVSW10Home)を実行させた状態のまま仮想Hyper-Vホスト(その1)に移動させます。
    ライブマイグレーションではこの仮想マシンの表示がほとんど停止することなく(実際には仮想マシン接続での接続先切り替えの数秒間は接続画面での仮想マシン表示無し)、その仮想マシンを実行するHyper-Vホスト(ここでは仮想Hyper-Vホスト)が切り替わります。
    切り替わりの瞬間は仮想マシン接続画面のタイトルが「WS16TP4DM2VML1B上のHVSW10Home」から「WS16TP4DM1VML1B上のHVSW10Home」に切り替わる時点と考えてOKです。
    ※実際には移動対象仮想マシンのHyper-Vホストが切り替わってから仮想マシン接続画面のタイトルが変わります。




    下記はライブマイグレーションで注目すべき部分を赤枠で示したものです。



  2. ライブマイグレーションの移動ウィザード
    今回のライブマイグレーションは仮想マシンの利用者ではなくHyper-Vサーバ管理者が行うというシナリオで移動ウィザードは移行元の仮想Hyper-VホストのHyper-Vマネジャから直接行っています。
    ※Windows Server 2016 TP4ではHyper-V Serverと違って移動については移行のソースホスト(移行元)から移行操作が開始されることが基本です(移行元でないホストから移行操作が開始された場合のエラー内容はこちらです)。

    今回の移動ウィザードで指定した内容は以下の通りですが、今回の移動対象仮想マシンはSMB共有を一切使用せず仮想マシンと記憶域は共にソースホスト側のローカルディスクにあるものとします。
    ・移動の種類:[仮想マシンを移動する]
    ・宛先コンピュータ:WS16TP4DM1VML1b
    ・移動オプション:[項目を移動する場所を選択して仮想マシンのデータを移動する]
    ・移動の詳細オプション:[仮想マシンのデータを自動的に移動する]
    下記は移動ウィザードの要約です。



  3. ライブマイグレーションの開始
    移動ウィザードの「要約」ページ(画面)で<完了>ボタンをクリックするとライブマイグレーションが開始され「移動を実行しています」でプログレスバーが表示されます。
    今回の場合、プログレスバーが80%位に達してから僅かその2秒後にはいきなり95%位になりました。
    (1)80%位になった時点においてHyper-VマネジャのWS16TP4DM2VML1b側にHVSW10Homeが表示されていますがその仮想マシンの状態は「停止中」となっています。



    (2)その2秒後の95%位の時にはHyper-VマネジャのWS16TP4DM2VML1b側からHVSW10Homeが削除されていました。



  4. 仮想Hyper-Vホストの自動切り替え
    ライブマイグレーションが実行されているHVSW10Homeに接続・表示しているユーザ側においては仮想マシン接続のウィンドウタイトルが「WS16TP4DM2VML1B上のHVSW10Home」から「WS16TP4DM1VML1B上のHVSW10Home」に自動的に切り替わっています。


■ 逆方向ライブマイグレーションの実行例

上記では移行元ホストとしてのWS16TP4DM2VML1bから宛先ホストのWS16TP4DM1VML1bへのライブマイグレーション例を紹介致しました。
ここではその逆方向のライブマイグレーション例を簡単に紹介致します。
(1)ここでの逆ライブマイグマイグレーションはソースホストとしてのWS16TP4DM1VML1bから宛先ホストのWS16TP4DM2VML1bへのライブマイグレーションです。
(2)ライブマイグレーションの対象とする仮想マシンは上記と同じHVSW10Home仮想マシンです。
(3)[移動]ウィザードの実行は移行元ホストとしてのWS16TP4DM1VML1bから実行します。
※[移動]ウィザードの実行を移行先ホスト(宛先ホスト)から実行して<完了>ボタンを押すと「ホスト'宛先ホスト名'との接続を確立できませんでした」エラーとなります。
(4)移動ウィザードの設定は移行元ホストと宛先ホストが逆になること以外は上記と同じです。
(5)ライブマイグレーション実行中は移行対象仮想マシン(HVSW10Home)の中で「1秒毎にデスクトップをキャプチャして連番を付け、その連番付きデスクトップ画像をファイルファイルサーバに転送する」処理を実行させておきました。
(6)移行対象仮想マシン(HVSW10Home)に仮想マシン接続画面で接続している別の仮想マシン(HVSW10ProDM)自体を表示させているWindows 8.1から移行対象仮想マシン(HVSW10Home)にPowerShellにて「ping -n 1 移行対象仮想マシン(HVSW10Home)アドレス」を連続発行させてping発行時刻とping結果をログ出力させてみました(移行対象仮想マシンへのpingログ取得)。

移行対象仮想マシン(HVSW10Home)をホストする仮想Hyper-VホストがWS16TP4DM1VML1bからWS16TP4DM2VML1bに切り替わる時点の直前・直後の様子を時系列形式で下記にまとめておきます。
尚、下記の表の中で[停止中]というのは強制的なシャットダウン相当の[停止]ではなく[一時停止]に相当する状態のようです。

時刻ソースホスト(WS16TP4DM1VML1b)と
宛先ホスト(WS16TP4DM2VML1b)の状態
移行対象仮想マシン(HVSW10Home)に仮想マシン接続画面で接続しているHVSW10ProDMの様子移行対象仮想マシン(HVSW10Home)の中でキャプチャしたデスクトップ
13:02:38
HVSW10Homeの状態:[実行中]
移動を実行しています:約80%の状態

HVSW10Homeの状態:[実行中]
仮想マシン接続のタイトル:[WS16TP1DM1VML1B上のHVSW10Home]

キャプチャ画像転送OK
画像番号:795(ソースホストでの停止直前のキャプチャ画像番号)

13:02:39
HVSW10Homeの状態:[実行中]
移動を実行しています:約80%の状態
HVSW10Homeの状態:[実行中]
仮想マシン接続のタイトル:[WS16TP1DM1VML1B上のHVSW10Home]
13:02:39から13:02:41までの間はキャプチャ画像の取得・転送が停止されています。

尚、移行対象仮想マシンへのpingログの内容を確認したところHyper-Vホストの切り替わり前後8秒間に3回移行対象仮想マシンへのpingが「要求がタイムアウトしました。」エラーとなっていました(「宛先ホストに到達できません。」エラーではありません)。
13:02:40
HVSW10Homeの状態:[停止中]
移動を実行しています:約80%の状態

HVSW10Homeの状態:まだ[実行中]のまま
仮想マシン接続のタイトル:[WS16TP1DM1VML1B上のHVSW10Home]

13:02:41
HVSW10Homeの状態:未確認
移動を実行しています:未確認
HVSW10Homeの状態:[停止中]
仮想マシン接続のタイトル:[WS16TP1DM1VML1B上のHVSW10Home]
仮想マシン接続の内容:ブラックスクリーン

13:02:42
ソースホスト及び宛先ホストの両方にHVSW10Homeの表示なし
移動ウィザードは残存状態

(実寸画像はこちらです)
HVSW10Homeの状態:未確認
[補足]
ソースホスト及び宛先ホストの両方にHVSW10Homeの表示がない状態になった直後、タイミングによってはソースホストへの仮想マシン接続のブラックスクリーンが瞬間的に「応答なし」表示になることがあります。

キャプチャ画像転送OK
画像番号:796(時刻13:02:38時点の画像番号795の次の番号になっていますので仮想Hyper-Vホストの実質的な切り替えが完了して宛先ホストでのHVSW10Homeの実行が再開された直後のキャプチャ画像番号と思われます)

13:02:43
HVSW10Homeの状態:宛先ホストにて[実行中]
移動ウィザードは自動的に閉じられました

(実寸画像はこちらです)
ソースホスト(WS16TP4DM1VML1B)側でのHVSW10Homeの表示消え
仮想マシン接続のタイトル:[WS16TP1DM2VML1B上のHVSW10Home]
仮想マシン接続の内容:ブラックスクリーン

(実寸画像はこちらです)
-
13:02:44
HVSW10Homeの状態:宛先ホストにて[実行中]

(実寸画像はこちらです)
仮想マシン接続のタイトル:[WS16TP1DM2VML1B上のHVSW10Home]
仮想マシン接続の内容:'HVSW10Homeに接続しています...'

キャプチャ画像転送OK
画像番号:797

13:02:45
同上同上
('HVSW10Homeに接続しています...'表示が消えた直後再度ブラックスクリーンになります)
キャプチャ画像転送OK
画像番号:798

13:02:46
同上仮想マシン接続のタイトル:[WS16TP1DM2VML1B上のHVSW10Home]
仮想マシン接続の内容:HVSW10Homeのデスクトップ

キャプチャ画像転送OK
画像番号:799

ライブマイグレーションのポイントを時系列的にまとめたものが下表です。
「移動」ウィザードで<完了>ボタンを押した時点からの流れです。

時点ソースホスト(WS16TP4DM1VML1b)宛先ホスト(WS16TP4DM2VML1b)備考
A時点
HVSW10Homeの状態:[実行中]

B時点
HVSW10Homeの状態:[停止中]
(仮想マシン接続画面:ブラックスクリーン)


C時点
VM一覧からHVSW10Homeが消えます
(仮想マシン接続画面:ブラックスクリーン)

ソースホスト及び宛先ホストの両方にHVSW10Homeの表示がない状態です
D時点
(仮想マシン接続画面:ブラックスクリーン[応答なし])
B時点からD時点の間がソースホスト側で仮想マシンの停止処理が行われる期間です(ホスト間でのメモリ転送含む)
E時点
(仮想マシン接続画面:ブラックスクリーン)VM一覧にHVSW10Homeが出現
HVSW10Homeの状態:[実行中]

F時点

HVSW10Homeの状態:[実行中]
(仮想マシン接続画面:ブラックスクリーン)

G時点

HVSW10Homeの状態:[実行中]
(仮想マシン接続画面:'HVSW10Homeに接続しています...')

H時点

HVSW10Homeの状態:[実行中]
(仮想マシン接続画面:ブラックスクリーン)

H時点

HVSW10Homeの状態:[実行中]
(仮想マシン接続画面:デスクトップ表示)



■ Hyper-V Server 2016 Technical Preview 4でのライブマイグレーション例

Nested VirtualizationはHyper-V Server 2016 Technical Preview 4(Hyper-V Server 2016 TP4)でも使用できます。
まずはHyper-V Server 2016 TP4を使用したNested Virtualization例をご覧下さい。

さて本題です。
Hyper-V Server 2016 TP4を使用した仮想Hyper-Vホスト間でのライブマイグレーションはソースホスト側からPowerShellを起動し、Move-VMコマンドレットを使って簡単に行えます。
例えばHyper-VマネジャでHVSHVS16TP4DM3という仮想Hyper-VホストにあるHVSW10Home2という仮想マシンに対する下記の移動ウィザードを想定します。
(1)移動の種類:[仮想マシンを移動する]
(2)宛先コンピュータの名前:HVSHVS16TP4DM4
(3)移動オプション:[仮想マシンのデータを1つの場所に移動する]
(4)移動先フォルダ:C:\Temp
※移動対象であるHVSW10Home2仮想マシンの仮想ハードディスク(HVSW10Home2.vhdx)は容量可変のタイプで移動実行時点のファイルサイズは約10GBです。
上記は以下のMove-VMコマンドレットで簡単に実現できます。
PS ... > Move-VM HVSW10Home2 HVSHVS16TP4DM4 -IncludeStorage -DestinationStoragePath C:\Temp


簡単ですが以上です。