In one of previous posts, I show you how to configure nested virtualization on VMware ESXi. Now, I will show you same feature on Windows Server 2016.
With TP4 of Windows Server 2016, Microsoft introduced Nested Virtualization in Windows Server Hyper-V. As I said earlier, nested virtualization allows you to run a hypervisor inside a virtual machine running on a hypervisor. That is a great feature if you don’t have enough resources, but need more hypervisors.
If you want to implement this, you need to meet some prerequisites:
- Least 4 GB RAM for virtualized Hyper-V;
- Windows Server 2016 Technical Preview 4 or Windows 10 build 10565 on both the physical Hyper-V host and the virtualized host;
- A processor with Intel VT-x (nested virtualization is available only for Intel processors at this time);
- Other Hypervisors will not work at this moment.
Implementing this feature is very simple, but you have to pay attention on few things:
- Disable Dynamic Memory on Virtual Machine;
- Enable Virtualization Extensions on the vCPU with PowerShell command:
- Set-VMProcessor -VMName “VMName” -ExposeVirtualizationExtensions $true
- Enable MAC Address Spoofing;
- Set Memory of the Virtual Machine to a minimum of 4GB RAM.
However, nested virtualization coming with some limitations. The following features are no longer compatible with that virtualized hypervisor VM, where is nested virtualization enabled.
- Dynamic memory must be OFF. This will prevent the VM from booting;
- Runtime memory resize will fail;
- Applying checkpoints to a running VM will fail;
- Live migration will fail;
- Save/restore will fail;
- Hosts with Device Guard enabled cannot expose virtualization extensions to guests;
- Hosts with Virtualization Based Security (VBS) enabled cannot expose virtualization extensions to guests. You must first disable VBS in order to preview nested virtualization.
Windows Server 2016 with installed Hyper-V
Created two virtual machines
Configuring MAC spoofing
Error message. Expose virtualization is not enabled
Exposed virtualization status
Cannot modify vCPU setting until machine is running
Installed Hyper-V role on virtual machines
And installed VMs in virtualized Hyper-V