One thing I get asked a lot, is why I care so much about nested virtualization and the use case of such technology.
To understand nested virtualization we first need to look at traditional server virtualization.
Traditional Virtualization overview
In a traditional virtualization solution, the physical hardware is abstracted and presented to a guest operating system. The Virtual Machines (VM) are guests of the physical server and communicates with the physical hardware via the hypervisor.
Image 1
One physical server, hosts isolated Guest VMs
To provide high availability to the virtualizations solution we add clustering, Storage Area Networks (SAN) and duplicate of dependent peripheral configurations like network hardware and its configuration etc. The physical servers and attached configurations becomes a virtual datacenter that hosts the virtual machines. If we transition from one hypervisor vendor to another we need to convert the workload VMs to fit the new hypervisor. The conversion is sometimes a time-consuming and an expensive job that involves a lot of coordination.
This is something that we nowadays are quite familiar with.
Why nested virtualization then?
What if you wanted a copy of that configuration for testing or development purposes? How do you evolve and enhance your implementation? Do you have the possibility to test changes without impact to your production environment?
To install a virtual datacenter involves quite a lot of hardware that can be expensive and hard to move around.
You might need different configurations, developers for instance often have the need for many isolated environments with different settings. Building physical environments for each could be really expensive.
Nested Virtualization overview
In a nested virtualization solution, the physical hardware is abstracted and presented to a guest hypervisor VM as configurations. The guest hypervisor VM is a guest of the physical server.
The Guest VMs within the Guest hypervisor is unaware of the fact that the hypervisor is virtual and acts in the same way as if the hypervisor was installed in physical hardware.
Image 2
One physical server, hosts two separate hypervisors with separate isolated Guest VMs
To provide high availability to the virtualizations solution we use the same setup as in a traditional virtualization solution but we are able to emulate quite a lot of the periferal solutions such as SAN, Networks etc
Further possibilities with nested hypervisors
In a cloud solution, if a cloud vendor supports nested virtualization the format of the workload VM becomes irrelevant.
In a DevOps world the need to quickly build entire configurations becomes even more necessary. No more we can’t afford to have an expensive test environment J
What If we could build those configurations in Azure! the possibilities involved becomes mind blowing.
Microsoft Nested Virtualization
Microsoft has released a preview of nested virtualization in Windows 10 Insider Preview Build 10565
At the moment only Windows 10, Hyper-V is possible to nest but I expect that to change in the near future. Imagine the Host Hypervisor in Image 2 as a Nano Server with Hyper-V. The Guest Workload VMs as Docker/Windows Containers and full OS VMs. The future looks really interesting J
How to get started
How do I start exploring the possibilities with nested virtualization?
First you need the Windows 10 Insider Preview Build 10565.
Once you have installed it you need to enable Hyper-V, if you are unfamiliar with Client Hyper-V check out this MSDN article Hyper-V on Windows 10
Once you are done check out the article on how to enable Windows Insider Preview: Nested Virtualization
Image 3
In my lab I installed a Windows 10 host hypervisor with two Windows 10 Guest Hypervisors. Within each guest hypervisor I installed a Guest VM workload with Windows Server 2016 Technical Preview 3
I tried to get the nesting to work in Windows Server 2016 Technical Preview 3 as well but I get an error message in the event log and the Hyper V Service wont start. “This device is not working properly because Windows cannot load the drivers required for this device. (Code 31)”
In a PPT from Microsoft https://t.co/ZqCkN16MIr the roadmap for System Center is reviled. The Windows Server 2016 Technical Previews has previously been released at the same time as System Center, so I hope I we will see Windows Server 2016 Technical Preview 4 in November as well.