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 máquina virtual do Hyper-V. Em outras palavras, com a virtualização aninhada, um host do Hyper-V em si pode ser virtualizado. Entre alguns casos de uso da virtualização aninhada estão a execução de um Contêiner do Hyper-V em um host do contêiner virtualizado, a configuração de um laboratório do Hyper-V em um ambiente virtualizado ou o teste de cenários com vários computadores sem a necessidade de hardware individual. Este documento detalhará os pré-requisitos de software e hardware, etapas de configuração e limitações.

Pré-requisitos

  • Um host Hyper-V executando o Windows Server 2016 ou atualização de aniversário do Windows 10.
  • Uma VM do Hyper-V executando o Windows Server 2016 ou atualização de aniversário do Windows 10.
  • Uma VM do Hyper-V com a versão de configuração 8.0 ou superior.
  • Um processador Intel com a tecnologia VT-x e EPT.

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 de rede com máquinas virtuais aninhadas: modo NAT e falsificação de endereço MAC.

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 seguinte comando do PowerShell.

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

Conversão de endereços de rede

A segunda opção depende do NAT (conversão de endereços de rede). 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>

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.