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 192.168.0.0/24 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 192.168.0.23 -PrefixLength 24

nested virtualization azure 2

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

New-NetNat -Name Nat_VM -InternalIPInterfaceAddressPrefix 192.168.0.0/24

image

Now our nested VMs can assign IP addresses from 192.168.0.0/24 subnet  (manual assignment). If you want to have dynamic IP assignment – create add. VM and configure DHCP.

When network configuration is done, add you first nested VM, run and check it’s status:

New-VM -Name Nested01 -MemoryStartupBytes 2GB -SwitchName NSW01 -Generation 2 -NewVHDSizeBytes 70GB -NewVHDPath C:\VMs\Nested01\OS.VHDX

nested virtualization azure 4

Using my Azure File share I installed WS2016 Essentials inside of Nested01 VM and configured IP address from subnet above. As you can see, after IP configuration my nested VM can access Internet via created NAT gateway previously (see ping output).

New-NetIPAddress -InterfaceAlias “Ethernet” -IPAddress 192.168.0.20 -DefaultGateway 192.168.0.23 -PrefixLength 24

Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 8.8.8.8

nested virtualization azure 5

Final result (yeap, Simpsons again and again)

Homer – my Hyper-V host (Azure Dv3 VM)

Bart – nested VM (WS2016 Essentials)

nested virtualization azure 5

Cool? Go ahead and test Azure Stack using it’s deployment kit . I’ll cover it in my next posts. Keep in touch and happy Azure VMs nesting!

Azure Stack Preview 3 is available

Azure Stack is a hybrid cloud platform that lets you deliver Azure services from your organization’s datacenter. Microsoft Azure Stack Technical Preview 3 is being made available as a Proof of Concept (POC). The POC is an ideal environment for learning and demonstrating Azure Stack features.

Microsoft is also announced that Azure Stack will be available via Enterprise Agreement (EA) and Cloud Solution Provider Program (CSP) 

azure-stack-architecture

In addition to bug fixes and other improvements, here’s the list of new features:

  • Active Directory Federation Services (AD FS) support provides identity options for scenarios where network connectivity is limited or intermittent.
  • You can use Azure Virtual Machine Scale Sets to provide managed scale out of workloads.
  • Use Azure D-Series VM sizes for increased performance and consistency.
  • Deploy and create templates with Temp Disks that are consistent with Azure.
  • Marketplace Syndication allows you to use content from the Azure Marketplace and make available in Azure Stack.
  • Isolated administrator and user portals and APIs provide enhanced security.
    Use enhanced infrastructure management functionality, such as improved alerting.
  • Using the Windows Azure Pack connector, you can view and manage IaaS virtual machines that are hosted on a Cloud Platform System (CPS) stamp. For this preview release, you can try this only with a CPS environment and additional configuration is required.