First off what is nested virtualization? Nested virtualization is the ability to run Hyper-V inside of a virtualized machine. This will allow you to install a physical host with the Hyper-V role installed and then create a virtual machine (VM) and install Hyper-V which in turn will allow you to run additional VMs.
For instructor-led Windows Server 2016 training, see our course schedule.
For Windows 10, see Nested virtualization in Windows 10 – What Is It and How to Enable It.
There are few prerequisites that must be met before nested virtualization is supported. There is both operating system and Hyper-V setting that must be configured. These settings are as follows:
- Must be running Windows Server 2016.
- The host and nested VM must be running the same build of Windows Server 2016.
- Min 4 GB RAM on the host.
- Dynamic RAM must be disabled on the nested VM.
- No Checkpoints can be made on the nested VM. (if desired to checkpoint hosted VM in the nested VM must be running version 8 of the VM)
- MAC Address Spoofing has to be enable on the nested VM NIC or a NAT Virtual Switch has to be created.
Once the VM has been configured to be a nested VM it no longer supports live migrations.
How to enable nested virtualization:
- Create a hosted VM running the same operating system as the physical host. Then power it off.
- Configure the host to support nested virtualization:
- Use one of the following PowerShell Cmdlets:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Invoke-WebRequest https:/raw.githubusercontent.com/Microsot/Virtualization-Documentation/maste/hyperv-tools/nested/Enable-NestedVm.ps1 –Outfile ~/enable-NestedVm.ps1 ~Enable-NestedVm.ps1 –VmName <VMName>
Note: The second cmdlet downloads a script from githubusercontent.com and then executes it.
Turn on the nested VM and you are ready to start creating VMs in your nested environment.
Until next time, RIDE SAFE!