Solve nested virtualization challenges in Windows Server 2016

Q. I'm unable to install Hyper-V in a VM running on Windows Server 2016 as it says the required processor features are missing, what can I do?

A. You have to make a configuration change on the VM that you will install Hyper-V into (for nested virtualization) to expose the required virtualization functions. Microsoft documents how to do this by running the following PowerShell:

Invoke-WebRequest https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Enable-NestedVm.ps1 `
    -OutFile ~/Enable-NestedVm.ps1 
~/Enable-NestedVm.ps1 -VmName "savnest01"

If you examine the downloaded PowerShell you can see all the changes required:

  • The VM must be turned off when making the changes
  • Any saved state is removed
  • Dynamic memory is disabled and the VM should have at least 4 GB (the exact amount will depend on how many VMs you wish to run)
  • MAC address spoofing is needed if the VMs running inside the VM need network connectivity
  • Most importantly and the cause of the error is that virtualization extensions must be enabled to the VM, this is enabled by the above script using:
    Set-VMProcessor -VMName $vmName -ExposeVirtualizationExtensions $true

Once all this is done you can have VMs running in VMs with Hyper-V 2016.

 

Each week, John Savill answers all of your toughest tech questions about the worlds of Windows Server, Azure, and beyond. Read his past IT advice here, and email your questions to [email protected].

Hide comments

Comments

  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Publish