//build でもアナウンスされていましたNested Virtualization可能なVM(Dv3/Ev3)が利用可能になりました。
これまでと違うのはHyper Theadingに対応したIntel Broadwell E5-2673 v4 2.3GHz processorと Intel Haswell 2.4 GHz E5-2673 v3によるvCPUがサポートされている点ですね。おかげでDv2より価格が少し抑えられている様子。(~28%減ぐらい)
またたくさんのメモリが割り当てられるDv2シリーズのD11~D14はEv3シリーズとなります。
細かなVMのスペックについては Introducing the new Dv3 and Ev3 VM sizes などを参照ください。
また利用可能リージョンは今のところUS East 2、US West 2、Europe West、Asia SouthEastとなります。そのうち使えるリージョンも増えるでしょう。
さてDv3とEv3の目玉の1つにVM上でもHyper-Vが利用できるNested Virtualizationがサポートされた点があります。
Azure上の物理ハード(Lv.0)の上にWindows Server 2016なAzureルートOS(Hyper-Vホスト)が動いており(Lv.1)、その上に普段利用しているAzureの仮想マシン(Lv .2 = Lv.1 のVM)が動きます。ここまでは通常のHyper-Vな仕組み(Virtualization)ですよね。これまではそのAzureのVMでHyper-Vを有効にできませんでしたが、Dv3/Ev3を使うとAzureの(Windows Server 2016かWindows 10 Anniversary Updateな)VMにHyper-V Hypervisorをさらに追加できます。(Nested Virtualization)
ということで、普段使ってるAzure VMの中でHyper-Vを普通に使えちゃうということですね。
展開に関する注意事項などはこちらを参照ください。
- https://github.com/charlieding/Virtualization-Documentation/tree/live/hyperv-tools/Nested
- Run Hyper-V in a Virtual Machine with Nested Virtualization
Githubにあるスクリプト流してもいいですし、普通にサーバーマネージャー等からHyper-V機能を追加してもいいです。基本的に物理マシンでHyper-Vな環境を作るのと大差なく使用できると思います。
注意点としてはネットワーク周りで、Azure VMが接続しているAzureのVNETに直接接続などはできません。
Hyper-V側でInternalな仮想スイッチを作成し、NATネットワークを設定する必要があります。
仮想マシン内で静的IPアドレスとNATネットワーク作成時に設定したゲートウェイなどをちゃんと指定してあげると(DNSも)、インターネットに接続することができます。必要であればAzure VM側(Hyper-Vホスト)にDHCPやDNSの役割を追加して割り当てられるようにしましょう。(やりかたは上記のGithub参照)
という感じで今後、ベース(Azure ルートOS)が新しくなりハードも新しくなるに従い利用できる地域も増えますし、想定シナリオも増えてNested Virtualizationの恩恵は受けれそうですね。(たとえばHyper-Vコンテナーが動いたりとか、AndroidやHoloLensのエミュレーターを動かしたりとか)