今回はAzure仮想マシンでHyper-Vを評価する方法について紹介します。

仮想マシンのシリーズで決まる入れ子構造の仮想化のサポート

リソースの使用量や使用時間に対する課金で利用できるAzure IaaSの仮想マシン環境は、OSやアプリケーションの評価環境、テスト環境として適しています。例えば、高パフォーマンス要件のシステムを構築しようという場合、オンプレミスであれば要件を満たす高価なハードウェアを手配することから始める必要がありますが、パブリッククラウド環境なら必要なスペックを満たすサイズの仮想マシンをすばやくデプロイして評価をすぐに開始できます。

しかしながら、物理的なハードウェア環境に大きく依存する機能を評価するのには適していません。従来なら仮想化技術もその1つでした。しかし現在では、Azure仮想マシンは「入れ子構造の仮想化(Nested Virtualization)」をサポートするようになりました。

Windows Server 2016以降(およびWindows 10バージョン1607以降)のHyper-Vに限定されますが、Azure仮想マシンの中でHyper-Vの役割を有効化し、そのHyper-Vに作成した仮想マシン環境で任意のゲストOSを実行することができます。運用環境での利用を想定したものではありませんが、Hyper-Vの役割や、Hyper-Vハイパーバイザーに依存する機能を評価するのに利用できます。

例えば、Hyper-Vに依存する機能としては、仮想化ベースのセキュリティ(Virtualization-based Security、VBS)機能やDocker Enterprise Edition for Windows ServerにおけるHyper-Vコンテナのサポート、Windows 10の資格情報ガード、Windows Defender Application Control(WDAG、旧称デバイスガード)、Windows Defender Application Guard(WDAG)などがあります。

Hyper-Vにおける入れ子構造の仮想化は、Windows Server 2016およびWindows 10バージョン1607で正式にサポートされました。現状、Intelプロセッサを搭載する物理サーバにおいて、ホストとゲストの両方がWindows Server 2016またはWindows 10バージョン1607以降を実行する場合に利用できます。

なお、仮想マシンの中のHyper-V環境に作成する仮想マシンでは、Hyper-Vがサポートする任意のWindowsまたはLinuxをゲストOSとして実行できます。詳しくは、以下のドキュメントで説明されています。

Azure IaaSでは、Azure仮想マシンの一部のシリーズで入れ子構造の仮想化を利用可能です。入れ子構造の仮想化をサポートしないシリーズでは、Hyper-Vの役割を有効化しようとしてもプロセッサが仮想化機能をサポートしていないとして失敗します(画面1)。

  • Azure“超”入門 第20回

    入れ子構造の仮想化をサポートしないシリーズのAzure仮想マシンでは、Hyper-Vの役割を有効化することができない

一方、仮想マシン作成時に入れ子構造の仮想化をサポートするシリーズを選択した場合、Hyper-Vの有効化が可能です(画面2、画面3)。

  • Azure“超”入門 第20回

    仮想マシンの作成時に入れ子構造の仮想化をサポートするシリーズ(Dv3やDsv3など)を選択する

  • Azure“超”入門 第20回

    入れ子構造の仮想化をサポートするシリーズのAzure仮想マシンでは、問題なくHyper-Vの役割のインストールを進めることができる。ただし、仮想スイッチを自動作成するようにネットワークアダプターを選択しないこと(理由は後述)

入れ子構造の仮想化をサポートするシリーズについては、以下のリストのうち「**(ハイパースレッド化されており、入れ子になった仮想化を実行できます)」が付いているものです。汎用仮想マシンのシリーズであれば、Dv3シリーズ(StandardD#v3、#はvCPU数)とDsv3シリーズ(StandardD#sv3、#はvCPU数)でサポートされます。

Hyper-V仮想マシンのためのネットワークの考慮事項

オンプレミスの物理サーバーのHyper-V環境で入れ子構造の仮想化を利用する場合、「MACアドレスのスプーフィング」を有効化することで、仮想マシン内のHyper-Vで「外部ネットワーク」タイプの仮想スイッチを作成することができ、仮想マシン内のHyper-V上で稼働する仮想マシンを外部ネットワークのIPサブネットに接続することができます。

しかし、Azure仮想マシンのネットワークアダプターに対して、「MACアドレスのスプーフィング」を有効化するという構成は存在しません。また、Azure仮想マシンのネットワークインタフェースはリセットされることがあるため(停止状態からの起動や、メンテナンスや障害による移動によって)、そもそもAzure仮想マシンのネットワークインタフェースに紐づいたHyper-V仮想スイッチを作成しても、永続的な仮想スイッチとしては使用できないのです。

そのため、Azure仮想マシン内のHyper-V環境で、Hyper-Vの仮想マシンに外部ネットワークへのアクセス(インターネットアクセスなど)を提供するためには、NAT(ネットワークアドレス変換)をサポートするHyper-V仮想スイッチを構成して、Hyper-Vの仮想マシンをその仮想スイッチに接続する必要があります(図1)。

  • Azure“超”入門 第20回

    Azure仮想マシン内のHyper-V環境における、Hyper-V仮想マシンのインターネットアクセス環境のイメージ

具体的な手順は、以下のドキュメントで説明されていますが、次回、具体的に説明します。

著者プロフィール

山市良
Web媒体、IT系雑誌、書籍を中心に執筆活動を行っているテクニカルフリーライター。主にマイクロソフトの製品やサービスの情報、新しいテクノロジを分かりやすく、正確に読者に伝えるとともに、利用現場で役立つ管理テクニックやトラブルシューティングを得意とする。2008年10月よりMicrosoft MVP - Cloud and Datacenter Management(旧カテゴリ: Hyper-V)を連続受賞。ブログはこちら。

主な著書・訳書
「インサイドWindows 第7版 上」(訳書、日経BP社、2018年)、「Windows Sysinternals徹底解説 改定新版」(訳書、日経BP社、2017年)、「Windows Server 2016テクノロジ入門 完全版」(日経BP社、2016年)、「Windows Server 2012 R2テクノロジ入門」(日経BP社、2014年)などがある。