Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products

Third party Nested Virtualization in Windows Server 2019

Summary: Third Party Virtualization

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

What is nested virtualization?

Nested virtualization refers to virtualizing a virtual environment. In other words, it's the ability of a virtual machine to host another virtual machine within itself. Starting with Microsoft Windows Server 2016, support for nested virtualization is enabled in the Hyper-V layer of Windows operating system. As an advancement for the same, third party virtualization is introduced in Windows Server 2019. Click Here to get a brief introduction about nested virtualization.


What is third party nested virtualization?

Windows supports operating systems like Windows Server 2012 R2, Windows Server 2016 and also Linux distributions such as Red Hat Enterprise Linux, Suse Linux Enterprise Server, Fedora etc… as guest operating system within a VM. With the nested virtualization feature enabled in Windows Server 2016, we can enable the Hyper-V layer on the guest windows VMs. But nested VMs were supported on only Windows guest OS. Starting with Windows Server 2019, nested virtualization can be enabled on even the Linux VMs with the help of third party virtualization layers like QEMU. This enables customers to deploy and/or use a wider set of applications.

SLN316182_en_US__1image(8647)                            

                     Third party Nested Virtualization in Windows Server 2019

 

Enabling Third party Nested Virtualization in Windows Server 2019:

Below are the detailed steps to enable nested virtualization on Linux VMs and also on how to use QEMU to create a nested VM:

  1. Install Windows Server 2019 on the server and install Hyper-V role.
  2. Open the Hyper-V Manager and create a Gen-2 VM (VM creation) with these requirements:
  1. VM configuration version 8.0 or greater.
  2. The VM cannot use Dynamic Memory
  3. An Intel processor with VT-x and EPT technology - nesting is currently supported on systems with Intel processors only.

Example: This example uses Dell R640 server in UEFI mode with 'Virtualization technology' of the Processor (BIOS Settings -> Processor Settings) enabled as shown below.

SLN316182_en_US__2image(8648)

 

  1. Install any Linux distribution (Supported Linux VMs) as guest OS on the VM. This example uses Red Hat® Enterprise Linux® 7.5 as the OS on the VM.
  2. Next, we need to install QEMU and create a nested VM. 

    SLN316182_en_US__3image(8649)
    SLN316182_en_US__4image(8650)

  3. The step fails because prior to creating a nested VM the Virtualization Extensions must be enabled.
SLN316182_en_US__5image(8651)

       6. The nested virtualization must be configured on the VM using this command when the VM is in turned off state:

Set-VMProcessor -VMName -ExposeVirtualizationExtensions $true

 

  1. Confirm the configuration is complete using the command "Get-VMProcessor -VMName vm_name | fl *" where the field "ExposeVirtualizationExtensions" should show the result as True.

SLN316182_en_US__6image(8652)

  1. Enable the MACAddressSpoofing on the VM using below cmdlet :

"Get-VMNetworkAdapter -VMname vm_name | Set-VMNetworkAdapter -MacAddressSpoofing On"

 

SLN316182_en_US__7image(8653)

  1. Start the virtual machine and check for the availability of the virtualization extensions as shown below:

SLN316182_en_US__8image(8654)

SLN316182_en_US__9image(8655)

  1. Add all the necessary support modules to install QEMU using this command:

"yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer"

Where,

  • qemu-kvm =  QEMU emulator
  • qemu-img = QEMU disk image manager
  • virt-install =  Command line tool to create virtual machines.
  • libvirt = Provides libvirtd daemon that manages virtual machines and controls hypervisor.
  • libvirt-client  = provides client-side API for accessing servers and also provides the virsh utility which provides command line tool to manage virtual machines.
  • virt-viewer - Graphical console
  1. Create a VM using the console or through CLI (Command Line Interface). To create using GUI type 'virt-manager' in the console terminal.
  2. Create the nested VM with QEMU and install the operating system on the same by providing the necessary parameters.                                                                                                                                                                                                                                                                                                                
SLN316182_en_US__10image(8656)

 

Use Cases of nested virtualization:

  1. Helps in creating multiple testing environments at one place which helps in both the development and testing purposes.
  2. Deployment testing of Virtual clouds.
It can offer greater flexibility and cost savings by avoiding to add on more hardware etc.

Affected Products

Microsoft Windows Server 2019
Article Properties
Article Number: 000132088
Article Type: Solution
Last Modified: 21 Feb 2021
Version:  3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.