入れ子になった仮想化による仮想マシンでの Hyper-V の実行

入れ子になった仮想化は、Hyper-V 仮想マシン (VM) 内での Hyper-V の実行を可能にする機能です。 入れ子になった仮想化は、仮想マシンで Visual Studio 電話エミュレーターを実行する場合や、通常は複数のホストが必要な構成のテストを行う場合に便利です。

入れ子になった仮想化とサポートされるシナリオの詳細については、「Hyper-V の入れ子になったと仮想化とは」を参照してください。

前提条件

Intel プロセッサ (VT-x/EPT テクノロジ搭載)

  • Hyper-V ホストは、Windows Server 2016 以降、または Windows 10 以降である必要があります。
  • VM 構成バージョン 8.0 以降。

AMD EPYC/Ryzen プロセッサ以降

  • Hyper-V ホストは、Windows Server 2022 以降、または Windows 11 以降である必要があります。
  • VM 構成バージョン 9.3 以降。

Note

ゲストは、任意の Windows サポート対象のゲスト オペレーティング システムにできます。 新しい Windows オペレーティング システムでは、パフォーマンスを向上させるエンライトメントがサポートされる場合があります。 Azure VM で入れ子になった仮想化を有効にするには、セキュリティの種類を "標準" に設定してください。

入れ子になった仮想化の構成

  1. 仮想マシンを作成します。 必要な OS と VM のバージョンについては、前提条件をご覧ください。

  2. 仮想マシンがオフ状態のときに、物理 Hyper-V ホストで次のコマンドを実行して、仮想マシンのネストされた仮想化を有効にします。

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. 仮想マシンを開始します。

  4. Hyper-V を仮想マシン内にインストールします。方法は物理サーバーの場合と同様です。 Hyper-V のインストールの詳細については、Hyper-V のインストールに関するページを参照してください。

注意

Windows Server 2019 を第 1 レベルの VM として使用する場合、vCPU の数は 225 以下にする必要があります。

入れ子になった仮想化の無効化

停止している仮想マシンに対して、入れ子になった仮想化を無効にするには、次の PowerShell コマンドを使用します。

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false

ネットワーク オプション

入れ子になった仮想マシンのネットワーキングには、2 つのオプションがあります。

  1. MAC アドレスのスプーフィング
  2. NAT ネットワーク

MAC アドレスのスプーフィング

2 つの仮想スイッチを通じてネットワーク パケットをルーティングするには、仮想スイッチの最初の (L1) レベルで MAC アドレスのスプーフィングを有効にする必要があります。 MAC アドレス スプーフィングを有効にするには、次の PowerShell コマンドを実行します。

Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

ネットワーク アドレス変換 (NAT)

2 番目のオプションは、ネットワーク アドレス変換 (NAT) に依存します。 この方法は、MAC アドレスのスプーフィングを利用できない場合 (パブリック クラウド環境など) に最適です。

最初に、仮想 NAT スイッチをホストの仮想マシン ("中間"の VM) に作成する必要があります。 次の例では、VmNAT という名前の新しい内部スイッチを作成し、192.168.100.0/24 サブネット内のすべての IP アドレスに対して NAT オブジェクトを作成します。

New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”

次に、IP アドレスをネット アダプターに割り当てます。

Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24

入れ子になった仮想マシンごとに 1 つの IP アドレスと 1 つのゲートウェイが割り当てられている必要があります。 ゲートウェイ IP は、前の手順で説明した NAT アダプターをポイントする必要があります。 必要に応じて、DNS サーバーも割り当てます。

Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “vEthernet (VmNat)” address=<my DNS server>

次の手順