How to enable nested virtualization in Azure

We have already mentioned new Azure VM series Dv3 and Ev3 which enable running VMs inside Azure VMs or just nested virtualization. Today we are going to get it configured and to run our first nested VM in Azure.

But before we start, let’s review some Dv3 and Ev3 facts:

  • they introduce Hyper-Threading Technology running on the Intel® Broadwell E5-2673 v4 2.3GHz processor and Intel® Haswell 2.4 GHz E5-2673 v3
  • they made shift from physical core to virtual CPUs (thanks to HT technology) to support larger VM sizes
  • they are the first Azure VMs running on Windows Server 2016 hosts
  • Dv3 VMs are up to 64 vCPUs and 256 GB RAM
  • Ev3 VMs are up to 64 vCPUs and 432 Gb RAM
  • they are currently available only for certain regions (West Europe, US East, US West 2, Asia Pacific Southeast)
  • they already come with ExposeVirtualizationExtensions enabled. we don’t need to enable CPU extensions as we have to do for on-premises WS2016 hosts

To get started with “nesting” you need to create one or more Dv3/Ev3 VMs in Azure within compatible region. For quick demo purposes, I created D2S_V3  VM with Windows Server 2016 DC , standard managed disk with no data disks attached.

TIP: actually you can , for instance, create 2 or more VMs , add data disks and configure storage spaces between them to achieve higher IO performance.

Then you need to install Hyper-V role and restart VM to apply changes

Install-WindowsFeature Hyper-V -IncludeManagementTools -Restart

nested virtualization azure 1

Verify that Hyper-V role is installed and add internal switch. New adapter “vEthernet (switchname)” will be created under network connections list (ncpa.cpl)

Define a new IP address for this adapter (I’m using subnet).  This network will be used as a NAT gateway for new VMs in order to allow internet access from nested VMs.

#Check Hyper-V role state
Get-WindowsFeature Hyper-V|ft InstallState, PostConfigurationNeeded

#Add new internal switch
New-VMSwitch -SwitchName "NSW01" -SwitchType Internal

# IP Configuration for vNIC
New-NetIPAddress -InterfaceAlias "vEthernet (NSW01)" -IPAddress -PrefixLength 24

nested virtualization azure 2

Configure NAT rule to provide “access” to our nested VMs

New-NetNat -Name Nat_VM -InternalIPInterfaceAddressPrefix


Now our nested VMs can assign IP addresses from subnet  (manual assignment). If you want to have dynamic IP assignment – create add. VM and configure DHCP. Continue reading “How to enable nested virtualization in Azure”

Nested virtualization in Azure

Fist of all*, I’d like to announce that e-book “Introduction to Windows Server 2016 (Russian Edition)” with my technical review and translation had been published and became available for download.

It was originally written for technical preview but this new edition has plenty fixes and additional notes with full adaptation to the current version of Windows Server. I believe we did the great work in a short time. If you find some typo or mistake, feel free to contact me. *I’m sorry..we’re way off topic..let’s back to Azure

Another important news that I’ve missed – Azure is going to support nested virtualization.  However, only new Ev3 and Dv3 VM series will support it. + Azure team has increased maximum disk size to 4096 Gb for both Premium and Standard disks. Hallelujah 🙂

These VMs come with enabled nested virtualization and completely ready for guest VMs or Hyper-V containers. There are many scenarios where it’d be helpful. For instance, you can create smaller number of large VMs using Ev3 or Dv3 VMs with a full control of resource allocation for any guest VMs. I tested nested VMs in WS2016 and now I’m looking forward to test them in Azure as well.

Azure Nested Virtualization| New VM Sizes Ev3 and Dv3

Update 07/14: Dv3 and Ev3 VMs became available for  certain Azure regions Read how to setup nested virtualization in Azure here

Azure v3 VMs , Nested Virtualization in Azure