As an update to my blog from the other day, I wanted to share a quick nugget on how to make multi-level VMs within Azure VMs go.
First, the terminology:
- The Level 1 VM is the VM that runs in Azure directly - like those nice 128 processor, 3.5 TB monsters in the M Series (Monster) or the new Ev3s that I spoke about in my previous blog.
- The Level 2 VM is the first VM that runs inside the VM. In a typical scenario, one would spin up one of these Monsters on Azure and then treat those as "HyperV hosts" complete with clustering. For me, my Level 2 VMs are where I will install Container Hosts. Why? WHY NOT!? Anyways, this second level VM will need some awareness of what is underneath it, nameley, Virtualization awareness.
- Beyond Level 2 VMs, you can (and should!) create N layers deep of VMs. I call these Level N+ VMs.
Now, in my Level 1 VM, I can create N Level 2 VMs, no big deal. But if I go spin up a Level 2 VM and then attempt to install HyperV on that VM to create Level N+ VMs, I get this:
Simple fix ye nested VM wanderer. Run this PS line on each Level 2 VM you want a Level 3 VM on (and so forth):
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
(Level 2 VM has to be OFF to run that). Returns quickly with no output.
Fire up the VM, bam. Nestedness...