Kernel-based Virtual Machine (KVM) is a virtualization infrastructure for the Linux kernel that turns it into a hypervisor.
Already familiar with virtual machines (henceforth referred to as VMs) from previous homelab work, I learned that the software that manages and runs VMs is referred to as a hypervisor. Interestingly, the concept of VMs and even the words virtual machine and hypervisor go back all the way to the early 1960’s. I also learned that the hypervisors that I was already familiar with, VirtualBox and Parallels, where known as type 2, meaning they ran top of the host OS, which itself ran on top of the physical hardware’s resources. Type 1, which was new to me, actually ran beneath the host OS, having equal access to the hardware’s resources as the ‘main OS’ of the system.
The primary benefit of a type 1 hypervisor is there is nothing ‘in the way’ of the VM, thus allowing for better performance than a type 2 hypervisor. The downside is that type 1 costs significantly more than type 2… unless you are running Windows and have access to Microsoft’s type 1 hypervisor, Hyper-V!
Microsoft provides Hyper-V through two channels:
- Part of Windows: Hyper-V is an optional component of Windows Server 2008 and later. It is also available in x64 SKUs of Pro and Enterprise editions of Windows 8, Windows 8.1 and Windows 10.
- Hyper-V Server: It is a freeware edition of Windows Server with limited functionality and Hyper-V component.
It’s worth noting that a day or so prior to starting this challenge, I had installed VMware’s free hypervisor, ESXi. Not knowing the difference between the two types and the benefits of one over the other, and really just wanting to poke around for a few mins, I ended up building a crazy nested VM monstrosity: Microsoft SQL Server 2016 running on top of Windows Server 2012, which was running on top of ESXi, which was running on top of Parallels for Windows, which was running on top of Windows 10 Pro, which was running on the bare metal. Surprisingly, it worked acceptably well.