KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. KVM also requires a modified QEMU although work is underway to get the required changes upstream.
Introduction
Kernel-based Virtual Machine (KVM) is a virtualization infrastructure for the Linux kernel. KVM supports native virtualization on processors with hardware virtualization extensions. KVM originally supported x86 and x86-64 processors and has been ported to S/390, PowerPC, and IA-64. An ARM port is in progress.
A wide variety of guest operating systems work with KVM, including many flavours of Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, and AROS Research Operating System. A modified version of QEMU can use KVM to run Mac OS X.
Limited paravirtualization support is available for Linux and Windows guests using the VirtIO framework. This supports a paravirtual Ethernet card, a paravirtual disk I/O controller, a balloon device for adjusting guest memory usage, and a VGA graphics interface using SPICE or VMware drivers. KVM uses SeaBIOS.
Design
By itself, KVM does not perform any emulation. Instead, a user space program uses the /dev/kvm interface to set up the guest VM's address space, feeds it simulated I/O and maps its video display back onto the host's. QEMU versions 0.10.1 and later make use of this.
Features
- QMP - QEMU Monitor Protocol
- KSM - Kernel Samepage Merging
- Kvm Paravirtual Clock - A Paravirtual timesource for KVM
- CPU Hotplug support - Adding CPUs on the fly
- PCI Hotplug support - Adding PCI devices on the fly
- vmchannel - Communication channel between the host and guests
- migration - Migrating virtual machines
- vhost -
- SCSI disk emulation -
- Virtio Devices -
- CPU clustering -
- hpet -
- device assignment -
- PXE boot -
- iSCSI boot -
- x2apic -
- Floppy -
- CD-ROM -
- USB -
- USB host device passthrough -
- Sound -
- Userspace Irqchip emulation -
- Userspace Pit emulation -
- Balloon memory driver -
- Large pages support -
- Stable Guest ABI -