Microsoft's Hyper-V and Linux's KVM are capable, enterprise-class hypervisors that can host VMs and scale to the largest of workloads. These options are both type 1 hypervisors, but there are some significant differences between them when it comes to management tools, memory allocation and storage requirements.
This makes it important for virtualization admins to understand how these hypervisors compare to one another. When organizations choose between the two, admins should select the hypervisor that best aligns with their existing infrastructure.
The main difference of Hyper-V vs. KVM is that Hyper-V is from Microsoft and runs on Windows, while KVM is an open source hypervisor built into Linux.
Microsoft includes Hyper-V with Windows Server, Windows 10 Pro and Windows 10 Enterprise. It also offers a free, standalone version of Hyper-V called Hyper-V Server.
KVM can work on any recent Linux kernel with an x86 machine and an Intel processor with active Virtualization Technology, or AMD processors with the Secure Virtual Machine capability.
The underlying OS does not limit KVM and Hyper-V guest operating support. Though KVM runs on Linux, it can run Windows VMs and Microsoft Hyper-V can host Linux VMs.
Available management tools
Just as KVM and Hyper-V run on different OSes, they also require different management tools.
Admins can manage Hyper-V with the Windows PowerShell command line, but most use a GUI-based tool such as Hyper-V Manager or Windows Admin Center.
Microsoft also offers an enterprise-grade management tool for Hyper-V called System Center Virtual Machine Manager (VMM). VMM is generally the preferred management tool for Hyper-V because it provides scalability and a consolidated view for VM infrastructure -- but it requires a separate license.
Like Hyper-V, admins can manage KVM entirely from the command line. Those who prefer a GUI based-management tools have multiple options, such as Cloonix, Morpheus and Platform9 Managed OpenStack.
Both KVM and Hyper-V are extremely flexible with hardware support. KVM can use any storage that supports Linux. This includes direct-attached storage and network-attached storage (NAS).
Microsoft's Hyper-V can run on any storage that Windows supports. However, if VM files are to be stored on NAS storage or on a network file share, then it requires server message block protocol 3.0.
Memory provisioning options
KVM and Hyper-V have flexible memory usage. Both hypervisors can use regular memory or non-uniform memory access.
One area where Hyper-V and KVM differ is in dynamic memory allocation.
Hyper-V includes a dynamic memory feature that lets VMs claim and relinquish memory based on current need -- and demand never exceeds a preset limit. Dynamic memory allows admins to overprovision memory, which increases the number of VMs that can run on a given host.
KVM also supports memory overprovisioning, but in a slightly different way. Each KVM VM runs as a process on the Linux host. This means VMs do not have dedicated memory blocks allocated to them. Instead, the Linux OS allocates memory when a VM requests it.
If a KVM host runs low on physical memory, the host moves some memory pages to swap memory to free up RAM. This way, the host can overcommit any memory.
Live VM migration capabilities
Both Hyper-V and KVM hypervisors support live migration. Live migration lets admins move an active VM to a different host server without taking the VM offline.
Live migration is handy in many situations. If for example, a virtualization host must be offline for maintenance, the VMs are moved to another host so that maintenance does not disrupt production workloads.
Live migration is also useful if a host's VM workload becomes excessive. Admins can live migrate some VMs to a different host server and lighten the workload on the overburdened host.