Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🖌 The Virtualization Stack

"Which of these actually virtualizes anything?" is the question this diagram answers. Seven layers, and every arrow reads "uses / runs on top of" — no arrow ever stays inside a layer, so a box's whole story is read straight down:

  • Cloud & datacenter platforms — each box is the component that actually creates the VM, not the product umbrella: nova-compute's libvirt driver, the CloudStack agent, the OpenNebula node driver, oVirt's VDSM, ganeti-noded. The APIs and web UIs above them are out of frame.
  • Container & CI orchestration — VMs as an isolation unit for something else: KubeVirt, Kata Containers, Vagrant, Apple's Containerization, and the containerised runners (qemus/qemu, dockur/*).
  • Desktop & developer tooling — one machine, one developer: virt-manager, QuickEmu, UTM, Lima, Tart, vetu, vfkit, krunkit, vm-bhyve.
  • Management API / daemon — libvirt: domain XML, storage pools, virtual networks. Note who skips it — Proxmox and Ganeti drive QEMU (and Xen) directly.
  • VMM / emulator — a user-space process that builds the machine: memory map, vCPU threads, virtual devices. Apple's Virtualization.framework lives here, not below: it is a VMM, and it calls down into Hypervisor.framework for the privileged half.
  • Hypervisor / kernel API — the privileged half that owns the CPU extensions and lends them to user space (/dev/kvm, hv_vcpu_run, libnvmm). Xen is the odd one out: a true type-1 that boots before Linux.
  • CPU extensions — the silicon that makes a guest ring-0 possible at all.

Hover a box to isolate its whole chain, click to pin it. The canvas pans by dragging and zooms with ⌘/Ctrl + wheel or the toolbar (Fit scales it to the page width, 1:1 returns to full size, goes fullscreen).

Resources