FR
live

KVM/libvirt powers AWS, GCP, and Azure — your homelab should run it too

KVM delivers 97% of bare-metal CPU performance, costs zero in licensing, and is the hypervisor behind the three largest public clouds. With libvirt, virt-manager, and Cockpit, this datacenter-grade stack is ready on any Linux server within twenty minutes.

KVM/libvirt powers AWS, GCP, and Azure — ETTAYEB illustration

In 2024, Broadcom acquired VMware for $69 billion and immediately announced the end of perpetual licensing. By January 2026, the average VMware vSphere license cost had tripled for SMBs. Meanwhile, the KVM/QEMU/libvirt stack — the exact same hypervisor running AWS Nitro, Google Compute Engine, and a significant portion of Microsoft Azure — remains baked into the Linux kernel, completely free, and more performant than ever. When the three largest cloud providers on Earth trust it for production workloads, there is no technical reason to pay for a proprietary hypervisor in your homelab or small datacenter.

What KVM actually is — and what it is not

KVM (Kernel-based Virtual Machine) has been a Linux kernel module since version 2.6.20, released in February 2007. It turns the kernel itself into a type-1 hypervisor. Unlike VirtualBox (type-2, hosted), KVM does not sit as a middleman between hardware and the host OS: the Linux kernel is the hypervisor. Each virtual machine becomes a standard Linux process, scheduled by the kernel’s own scheduler, with direct memory mappings through Intel VT-x and AMD-V processor extensions.

The classic confusion stems from QEMU, KVM’s mandatory companion. QEMU is an emulator — it can simulate an x86 CPU, a SCSI controller, a network card. Without KVM, QEMU emulates everything in software, which is slow. With KVM (-enable-kvm), QEMU offloads CPU execution to the kernel module and only retains device emulation. The result: a CPU overhead of just 3-5% compared to bare metal, versus 10-15% for VMware Workstation and easily 20-30% for VirtualBox, according to the VTmark benchmarks from the University of Southern Denmark and Pextra measurements from August 2025.

The management layer is libvirt: a C API with Python, Go, and Rust bindings that unifies the control of KVM/QEMU, LXC, and Xen. Libvirt exposes the concepts of domains, storage pools, and virtual networks — the abstractions that graphical tools then manipulate. On top, virsh provides the CLI, virt-manager the GTK interface, and Cockpit-machines the web UI.

At the time of writing, QEMU is at version 11.0.3 (July 2026), with 11.1.0 in release candidate. libvirt has been on the 11.x series since January 2025.

Bare-metal performance is not marketing fluff

Independent benchmarks tell a consistent story. The VTmark suite (Dhrystone, Whetstone, Bonnie++, Iperf3) paints a clear picture:

MetricBare-MetalKVM (QEMU)VMware ESXiVirtualBoxCPU100%≈97%≈90-95%≈80-85%Memory100%≈98%≈97%≈92%Disk I/O100%≈85-90%≈65-80%≈55-70%Network100%≈95-100%≈90-95%≈75-85%

The disk I/O gap is explained by VirtIO drivers — paravirtualized drivers that avoid full SATA controller emulation. In a Linux guest, virtio-blk and virtio-scsi are loaded automatically by the kernel. For Windows guests, the VirtIO drivers are a separate download (signed by Red Hat through the Fedora VirtIO project), but the five-minute investment pays off on the first production SQL query.

A real-world test on a production web application (Ordbogen A/S, a multilingual dictionary with simulated concurrent traffic) confirms the gap: response latency under KVM was only 4-7% higher than bare metal, compared to ≈18% for VMware Workstation — a difference largely attributable to I/O bottlenecks.

Three reasons KVM leaves VirtualBox behind for servers

VirtualBox remains a great tool — for spinning up an Ubuntu ISO in five minutes on a Windows laptop. But three structural differences disqualify it from production workloads.

First, architecture. VirtualBox is a type-2 hypervisor: it runs as an application on top of the host OS, adding a translation layer for every memory access and interrupt. KVM is a type-1 hypervisor: the Linux kernel absorbs the virtualization call directly. The difference shows up on the first fio or iperf3 run under load.

Second, headless operation. KVM/QEMU/libvirt is designed to run without a display, driven by virsh or a REST API — the normal operating mode for a server. VirtualBox offers a headless mode (VBoxHeadless), but its entire snapshot, cloning, and networking architecture is built around the GUI Manager.

Third, hardware passthrough. PCI passthrough (and its celebrity cousin, GPU passthrough for gaming VMs) relies on VFIO and IOMMU, two Linux kernel technologies. KVM accesses them natively. VirtualBox offers experimental PCI passthrough on Linux only, unsupported on Windows and macOS. SR-IOV — which lets you split a physical NIC into multiple virtual functions directly exposed to VMs — is a first-class citizen under KVM/libvirt. Under VirtualBox, it does not exist.

Cockpit-machines: virt-manager in a browser

The historical argument against KVM was the lack of a ready-to-use graphical interface. That argument died in 2024 with the maturation of Cockpit-machines, the virtualization plugin from Red Hat’s Cockpit project.

Cockpit is enabled by default on RHEL 9, Fedora Server, and Debian 12. Once the cockpit-machines package is installed and the cockpit.socket service is started, the interface is accessible at https://<server>:9090. It lets you create a VM, attach an ISO image, configure networking, manage storage pools, and launch a VNC console — all from a browser, with no X11, no SSH tunnel.

For advanced administration, virt-manager (GTK) remains the reference tool with a richer interface: domain XML editing, NUMA tuning, external snapshots, live migration. Both tools talk to the same libvirtd daemon, so a VM created in Cockpit is visible in virt-manager and vice versa.

The recommended homelab workflow as of July 2026: install Debian 12 or Ubuntu 24.04 LTS, enable Cockpit for day-to-day management, keep virsh handy for automation, and document your domains in YAML with virt-install.

Verdict: KVM for anything that runs longer than 24 hours

If you are virtualizing a service that must run 24/7, use KVM. The reasons are not ideological — they are mechanical: minimal CPU overhead, controlled disk I/O through VirtIO, native PCI passthrough, headless by design, scriptable libvirt API, and the ability to migrate to Proxmox VE or OpenStack without changing your hypervisor stack.

If you are testing a Linux distro on your workstation, VirtualBox does the job — and does it well. But the boundary is sharp: the moment the VM becomes a server, VirtualBox is no longer the right tool.

If you have an existing VMware estate, the question is economic. Broadcom did the math for you: since the 2024 acquisition, vSphere licensing costs have tripled in two years for SMBs. The migration cost to KVM/libvirt — converting VMDK to QCOW2 via qemu-img, rewriting vCenter scripts in virsh or Terraform — must now be weighed against the cost of staying on VMware. For new projects, the answer is even simpler: KVM is the default.

The same KVM that virtualizes a million EC2 instances per minute at AWS can virtualize your three Plex, Pi-hole, and Home Assistant VMs. The only difference is scale — not the stack.

References

The cyber brief, every Tuesday

The flaws that matter and the patches to apply, in a ten-minute read.

No spam. One-click unsubscribe.
read next

On the same topic

← Back to the feed

Type at least two characters.

navigate open esc dismiss