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 -
- cdrom -
- USB -
- USB host device passthrough -
- sound -
- Userspace Irqchip emulation -
- Userspace Pit emulation -
- Balloon memory driver -
- Large pages support -
- Stable Guest ABI -