Nested virtualization why should I care?

November 11, 2015

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

clip_image004 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 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.


Kanban board in Microsoft Office Outlook 2016

November 1, 2015

I’m a big fan of Kanban in my work to visualize the work that are being performed. I recently re-read The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win and decided that Kanban can help me on a personal level as well.

If you are new to what Kanban is you should have a look at this post by Sam McAfee

Said and done I looked around on internet and tried out a various set of software but they didn’t do what I wanted and added things that I consider unnecessary work (Installing this and that integrating it with 3:d party and it was a complete mess). I use Outlook and the calendar every day to plan my work so why not use that. No extra work to keep it running besides the normal day to day outlook tasks.
Thanks and resources used are referenced at the end of the article.

When I receive an email I need to look in to I flag that e-mail or leave it unread, yep that’s how I roll J

The flow I use is to flag the e-mail and then color coding it to reflect the projects I’m working on.

In my Kanban Board I drag the flagged e-mail to either “Ideas” or “To Do”.


To create one for your self I have created a Step by step guide.

Step by step:



Download the Outlook-Task-Kanban from GitHub


Create a folder and unzip the file to that directory

(I decided to place the folder in my userprofile)




Make a backup copy of the html files

Rename the Today.html

Copy-Item ‘.\index.html’ -Destination ‘.\index.bak’

Copy-Item ‘.\today.html’ -Destination ‘.\today.bak’

Ren today.html Kanban.html


Open the Today.html in a text editor and change the <H2> tag to the relect the first column of your Kanban board.

For instance To Do



Change the Folder parameter to reflect the Tasks folder

<param name=”Folder” value=”Tasks\Open”>


<param name=”Folder” value=”Tasks”>


Add a line containing the status restriction “Not Started”

<param name=”Restriction” value=”[Status]=’Not Started'”>


Change the <H2> tag to the relect the second column of your Kanban board.

For instance Doing



Change the Folder parameter to reflect the Tasks folder

<param name=”Folder” value=”Tasks\Open”>


<param name=”Folder” value=”Tasks”>


Add a line containing the status restriction “In Progress

<param name=”Restriction” value=”[Status]=’In Progress'”>


Since Outlook handles completed items, the third column is changed to On Hold

<h2>On Hold</h2>


Change the Folder parameter to reflect the Tasks folder

<param name=”Folder” value=”Tasks\Open”>


<param name=”Folder” value=”Tasks”>


Add a line containing the status restriction “Waiting on Someone Else

<param name=”Restriction” value=”[Status]=’Waiting on Someone Else'”>


The result should look something like this.



Edit the coloring of the columns using the the settings found in the bootstrap.min.css file.



Create a folder in Tasks called Kanban Board



Select your folder and click Folder Properties and select the Home Page tab



In the address field type the path to your Today.html or renamed file from Step 3 an tick the check box Show Home page by default fo this folder



Click Apply to set the home page.

Since we placed the folder locally we will recive an error message. Click OK and then Cancel to close the Properties window.


Next time you open Microsoft Outlook yor Kanban board is displayed.

Thanks to Donna and Robin without your awesome articles.

Donna Michelle Anderson wrote an article on how to do just that.

Robin Naughton, PhD adjusted it to use just the built in Outlook status.

The tools used are made by Frederik Eichler and found on Git Hub.


Outlook View Contol (ViewCtl)

Create tasks and to-do items