入れ子になった仮想化を定義する
Hyper-V の機能である入れ子になった仮想化を使用すると、ゲスト VM 内に Hyper-V をインストールして実行することができます。 それは、仮想化環境の内側で実行される仮想化環境です。 入れ子になった仮想化を使用することで、ゲスト VM を Hyper-V ホストにすることができ、そこで他のゲスト VM をホストできます。 入れ子になった仮想化は、それを使用しないと物理ハードウェアを実行することが必要になる、仮想テストや開発の環境を実装する場合に非常に便利です。 Contoso の Hyper-V 管理者は、テスト環境を調査し、プライベート クラウドを実装しています。 どちらも入れ子になった仮想化を使用できます。
次の図は、入れ子になっていないシナリオでの Hyper-V を示したものです。 ハードウェア仮想化機能は、Hyper-V ハイパーバイザーによって完全に制御され、ゲスト OS には公開されません。 また、この入れ子になっていないシナリオでは、VM がホスト ハードウェアと直接やり取りすることはありません。
一方、次の図は、入れ子になった仮想化が有効になっている Hyper-V を示したものです。 入れ子になった仮想化を有効にすると、ゲスト VM に独自のハイパーバイザーをインストールし、独自のゲスト VM を実行することができます。 ホスト ハードウェアへの VM アクセスは、第 2 のハイパーバイザーを通過してから、第 1 のハイパーバイザーを通過する必要があります。
入れ子になった仮想化を使用してネットワークを構成する
入れ子になった仮想化を有効にするには、以下の前提条件が満たされている必要があります。
- Hyper-V ホスト VM とゲスト VM の両方が、Windows Server 2016 以降である必要があります。
- 物理ホスト コンピューターには、十分な静的 RAM が必要です。
- Hyper-V VM の構成バージョンは 8.0 以降である必要があります。
- 物理ホスト コンピューターには、仮想マシン拡張機能 (VT-x) および Extended Page Tables (EPT) の機能を備えた Intel プロセッサが必要です。
入れ子になった仮想化の有効化
Windows PowerShell を使用して入れ子になった仮想化を有効にするには、VM がオフ状態のときに、物理 Hyper-V ホスト コンピューターから次のコマンドを実行します。
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
入れ子になった仮想化を有効にした後、Hyper-V ホストの場合と同じ方法で、ゲスト VM に Hyper-V をインストールできます。
入れ子になった仮想化でのネットワーク
入れ子になった VM でのネットワークには、次の 2 つのオプションがあります。
- MAC アドレスのスプーフィング
- NAT
MAC アドレスのスプーフィング
1 つ目のオプションは、MAC アドレスのスプーフィングを使用するものです。これにより、2 つの vSwitch を通してネットワーク パケットをルーティングできます。 物理 Hyper-V ホストで、MAC アドレスのスプーフィングを有効にする必要があります。
Windows PowerShell を使用して MAC アドレスのスプーフィングを有効にするには、物理 Hyper-V ホスト コンピューターから次のコマンドを実行します。
Set-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
NAT
2 つ目のオプションは、NAT を使用するものです。 この方法は、MAC アドレスのスプーフィングを利用できない場合 (パブリック クラウド環境など) に最適です。
NAT を使用するには、ホスト VM に仮想 NAT スイッチを作成します。 ネットワーク アダプターに IP アドレスを割り当て、入れ子になった各 VM に IP アドレスとゲートウェイが割り当てられるようにします。
注意
MAC アドレスのスプーフィング オプションより NAT オプションの方が、多くの構成を必要とします。
入れ子になった仮想化を有効にすると無効になる機能
入れ子になった仮想化を有効にすると、次の機能が無効になったり、失敗するようになります。
- 仮想化ベースのセキュリティ (VBS)。 VBS で仮想化拡張機能をゲストに公開することはできません。 入れ子になった仮想化を有効にする前に、VBS を無効にする必要があります。
- Device Guard。 Device Guard で仮想化拡張機能をゲストに公開することはできません。 入れ子になった仮想化を有効にする前に、ホストで Device Guard を無効にする必要があります。
- 動的メモリ。 入れ子になった仮想化が有効になっている間は動的メモリはサポートされないため、ランタイム メモリのサイズ変更は失敗します。