Executar o Hyper-V em uma Máquina Virtual com a Virtualização Aninhada

A virtualização aninhada é um recurso que permite executar o Hyper-V em uma VM (máquina virtual) do Hyper-V. Isso é útil para executar um emulador de telefone do Visual Studio em uma máquina virtual ou testar configurações que normalmente exigem vários hosts.

Pré-requisitos

  • O host do Hyper-V e o convidado devem ser ambos Windows Server 2016/Atualização de Aniversário do Windows 10 ou posterior.
  • Configuração de VM versão 8.0 ou posterior.
  • Um processador Intel com a tecnologia VT-x e EPT – o aninhamento é atualmente somente Intel.
  • Existem algumas diferenças com redes virtuais para máquinas virtuais de segundo nível. Consulte "Rede de máquinas virtuais aninhadas".

Configurar a virtualização aninhada

  1. Crie uma máquina virtual. Consulte os pré-requisitos acima para as versões necessárias do sistema operacional e da VM.
  2. Enquanto a máquina virtual está no estado DESLIGADO, execute o seguinte comando no host físico do Hyper-V. Isso habilita a virtualização aninhada para a máquina virtual.
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
  1. Iniciar a máquina virtual.
  2. Instale o Hyper-V na máquina virtual, exatamente como você faria para um servidor físico. Para obter mais informações sobre a instalação do Hyper-V consulte Instalar o Hyper-V.

Desabilitar Virtualização Aninhada

Você pode desabilitar a virtualização aninhada para uma máquina virtual interrompida usando o seguinte comando do PowerShell:

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

Redimensionamento de Memória de Tempo de Execução e Memória Dinâmica

Quando o Hyper-V está em execução em uma máquina virtual, a máquina virtual deve ser desativada para ajustar sua memória. Isso significa que mesmo se a memória dinâmica estiver habilitada, a quantidade de memória não variará. Para máquinas virtuais sem memória dinâmica habilitada, qualquer tentativa de ajustar a quantidade de memória enquanto ela estiver ligada falhará.

Observe que habilitar a virtualização aninhada não tem efeito na memória dinâmica ou redimensionamento de memória de tempo de execução. A incompatibilidade ocorre somente enquanto o Hyper-V está em execução na VM.

Opções de rede

Há duas opções para redes com máquinas virtuais aninhadas:

  1. Falsificação de endereço MAC
  2. Rede NAT

Falsificação de endereço MAC

Para que os pacotes de rede sejam encaminhados por meio de dois comutadores virtuais, a falsificação de endereço MAC deverá ser habilitada no primeiro nível do comutador virtual. Isso pode ser concluído com o comando do PowerShell a seguir.

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

NAT (conversão de endereços de rede)

A segunda opção depende da NAT. Essa abordagem é mais adequada para casos em que a falsificação de endereço MAC não é possível, como em um ambiente de nuvem pública.

Primeiro, é preciso criar um comutador NAT virtual na máquina virtual host (VM “intermediária”). Observe que os endereços IP são apenas um exemplo e variam entre os ambientes:

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

Em seguida, atribua um endereço IP ao adaptador de rede:

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

Cada máquina virtual aninhada deve ter um endereço IP e um gateway atribuído a ela. Observe que o IP do gateway deve apontar para o adaptador NAT mostrado na etapa anterior. Talvez você queira atribuir um servidor DNS:

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

Como funciona a virtualização aninhada

Os processadores modernos incluem recursos de hardware que tornam a virtualização mais rápida e mais segura. O Hyper-V conta com essas extensões de processador para executar máquinas virtuais (por exemplo, Intel VT-x e AMD-V). Normalmente, depois que o Hyper-V é iniciado, ele impede que outros softwares usem esses recursos de processador. Isso impede que máquinas virtuais convidadas executem o Hyper-V.

A virtualização aninhada torna esse suporte a hardware disponível para máquinas virtuais convidadas.

O diagrama a seguir mostra o Hyper-V sem aninhamento. O hipervisor do Hyper-V assume o controle total dos recursos de virtualização de hardware (seta laranja) e não os expõe ao sistema operacional convidado.

Em contrapartida, o diagrama a seguir mostra o Hyper-V com a virtualização aninhada habilitada. Nesse caso, o Hyper-V expõe as extensões de virtualização de hardware às suas máquinas virtuais. Com o aninhamento habilitado, uma máquina virtual convidada pode instalar seu próprio hipervisor e executar suas próprias VMs convidadas.

Aplicativos de virtualização de terceiros

Aplicativos de virtualização diferentes do Hyper-V não tem suporte em máquinas virtuais do Hyper-V e provavelmente falharão. Isso inclui qualquer software que exija extensões de virtualização de hardware.