Condividi tramite


Eseguire Hyper-V in una macchina virtuale con virtualizzazione annidata

La virtualizzazione annidata è una funzionalità che consente di eseguire Hyper-V all'interno di una macchina virtuale Hyper-V. La virtualizzazione annidata è utile per eseguire un emulatore di telefono di Visual Studio in una macchina virtuale o per testare le configurazioni che in genere richiedono più host.

Per altre informazioni sulla virtualizzazione annidata e sugli scenari supportati, vedere Che cos'è la virtualizzazione annidata per Hyper-V?.

Prerequisiti

Processore Intel con tecnologia VT-x ed EPT

  • L'host Hyper-V deve essere Windows Server 2016 o versione successiva o Windows 10 o versione successiva.
  • Configurazione della macchina virtuale versione 8.0 o successiva.

Processore AMD EPYC/Ryzen o versione successiva

  • L'host Hyper-V deve essere Windows Server 2022 o versione successiva o Windows 11 o versione successiva.
  • Configurazione della macchina virtuale versione 9.3 o successiva.

Nota

Il guest può essere qualsiasi sistema operativo guest supportato da Windows. I sistemi operativi Windows più recenti possono supportare le funzionalità di riconoscimento dei dati che migliorano le prestazioni. Per abilitare la virtualizzazione annidata in una macchina virtuale di Azure, assicurarsi di impostare Tipo di sicurezza come "Standard".

Configurare la virtualizzazione annidata

  1. Creare una macchina virtuale. Vedere i prerequisiti per le versioni del sistema operativo e della macchina virtuale necessarie.

  2. Mentre la macchina virtuale è nello stato OFF, eseguire il comando seguente nell'host Hyper-V fisico per abilitare la virtualizzazione annidata per la macchina virtuale.

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Avviare la macchina virtuale.

  4. Installare Hyper-V all'interno della macchina virtuale, proprio come per un server fisico. Per altre informazioni sull'installazione di Hyper-V, vedere Installare Hyper-V.

Nota

Quando si usa Windows Server 2019 come macchina virtuale di primo livello, il numero di vCPU deve essere pari o inferiore a 225.

Disabilitare la virtualizzazione annidata

È possibile disabilitare la virtualizzazione annidata per una macchina virtuale arrestata usando il comando di PowerShell seguente:

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

Opzioni di rete

Esistono due opzioni per la rete con macchine virtuali annidate:

  1. Spoofing degli indirizzi MAC
  2. Rete NAT

Spoofing degli indirizzi MAC

Per poter instradare i pacchetti di rete attraverso due switch virtuali, è necessario abilitare lo spoofing degli indirizzi MAC nel primo livello (L1) di switch virtuale. Per abilitare lo spoofing degli indirizzi MAC, eseguire il comando di PowerShell seguente.

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

Network Address Translation (NAT)

La seconda opzione si basa su NAT (Network Address Translation). Questo approccio è più adatto per i casi in cui lo spoofing degli indirizzi MAC non è possibile, ad esempio in un ambiente cloud pubblico.

Prima di tutto, è necessario creare un commutatore NAT virtuale nella macchina virtuale host (la macchina virtuale "centrale"). Nell'esempio seguente viene creato un nuovo commutatore interno denominato VmNAT e viene creato un oggetto NAT per tutti gli indirizzi IP nella 192.168.100.0/24 subnet.

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

Assegnare quindi un indirizzo IP all'adattatore net:

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

A ogni macchina virtuale annidata deve essere assegnato un indirizzo IP e un gateway. L'INDIRIZZO IP del gateway deve puntare alla scheda NAT del passaggio precedente. È anche possibile assegnare un server 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>

Passaggi successivi