KVM ( Kernel-based Virtual Machine) is a virtualization infrastructure for the Linux kernel that turns it into a hypervisor. It was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on February 5, 2007. KVM requires a processor with [1 ] hardware virtualization extension. KVM has also been ported to [2 ] FreeBSD and [3 ] illumos in the form of loadable kernel modules. [4 ]
KVM originally supported
x86 processors and has been ported to S/390, [5 ] PowerPC, and [6 ] IA-64. An ARM port was merged during the 3.9 kernel merge window. [7 ]
A wide variety of guest operating systems work with KVM, including many flavours and versions of Linux, BSD,
Solaris, Windows, Haiku, ReactOS, Plan 9, AROS Research Operating System and [8 ] OS X. In addition, Android 2.2, GNU/Hurd [9 ] (Debian K16), [10 ] Minix 3.1.2a, Solaris 10 U3 and Darwin 8.0.1, together with other operating systems and some newer versions of these listed, are known to work with certain limitations. [11 ]
Paravirtualization support for certain devices is available for Linux, OpenBSD, FreeBSD, [12 ] NetBSD, [13 ] Plan 9 [14 ] and Windows guests using the [15 ] VirtIO API. This supports a paravirtual Ethernet card, a paravirtual disk I/O controller, [16 ] a balloon device for adjusting guest memory usage, and a VGA graphics interface using [17 ] SPICE or VMware drivers.
Internals [ edit ]
A high-level overview of the KVM/QEMU virtualization environment
[18 ] :3
By itself, KVM does not perform any emulation. Instead, it exposes the
/dev/kvm interface, which a userspace host can then use to:
Set up the guest VM's address space. The host must also supply a firmware image (usually a custom BIOS when emulating PCs) that the guest can use to bootstrap into its main OS.
Feed the guest simulated I/O.
Map the guest's video display back onto the host.
QEMU versions 0.10.1 and later is one such userspace host. QEMU uses KVM when available to virtualize guests at near-native speeds, but otherwise falls back to software-only emulation.
Internally, KVM uses
SeaBIOS as an open source implementation of a 16-bit x86 BIOS. [19 ]
Licensing [ edit ]
KVM's parts are licensed under various GNU licenses:
KVM kernel module: GPL v2
KVM user module: LGPL v2
QEMU virtual CPU core library (libqemu.a) and QEMU PC system emulator: LGPL
Linux user mode QEMU emulator: GPL
BIOS files (bios.bin, vgabios.bin and vgabios-cirrus.bin): LGPL v2 or later
History [ edit ]
Avi Kivity began the development of KVM at
Qumranet, a technology startup company that was acquired by [21 ] Red Hat in 2008. [22 ]
KVM was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on 5 February 2007.
KVM is maintained by Paolo Bonzini.
Graphical management tools [ edit ]
Archipel An opensource libvirt-based Web UI, which uses XMPP to communicate with its "agents" installed on servers
ConVirt Manages creating, editing, starting, and stopping KVM-based virtual machines, as well as live or cold drag-and-drop migration of VMs between hosts.
GNOME Boxes Gnome interface for managing libvirt guests on Linux.
Kimchi web-based virtualization management tool for KVM
OpenNode RHEL/CentOS-based open-source server virtualization and management solution with a simple bare-metal installer, providing KVM+OpenVZ host and standard libvirt, func management interfaces together with standard CLI tools like
virsh and vzctl.
OpenQRM Management platform for managing heterogeneous data center infrastructures.
oVirt open-source virtualization management tool for KVM built on top of libvirt
Proxmox Virtual Environment Open source virtualization management package including KVM and
OpenVZ. It has a bare-metal installer, a web-based remote management GUI, and optional commercial support.
SolusVM Supports the management of KVM-based virtual machines as well as
Xen and OpenVZ.
UCS Virtual Machine Manager web-based virtualization management tool for different virtualization technologies like KVM and
Xen under Microsoft Windows and numerous Linux distributions; Integrated by default in the Enterprise Linux solution Univention Corporate Server.
Virtual Machine Manager Supports creating, editing, starting, and stopping KVM-based virtual machines, as well as live or cold drag-and-drop migration of VMs between hosts.
Virtualizor Supports the management of KVM-based virtual machines as well as
Xen and OpenVZ.
Witsbits Simplified SaaS based centralized management with web UI.
Emulated hardware [ edit ]
Video card Cirrus CLGD 5446 PCI VGA card, dummy VGA card with
Bochs VESA extensions, or [24 ] Virgil as a virtual 3D GPU [25 ]
i440FX host PCI bridge and PIIX3 PCI to ISA bridge [24 ]
PS/2 Mouse and Keyboard [24 ]
Sound Blaster 16, ENSONIQ AudioPCI ES1370, Gravis Ultrasound GF1, CS4231A compatible [24 ]
Ethernet Network card AMD Am79C970A (
Am7990), E1000 (Intel 82540EM, 82573L, 82544GC), NE2000, and Realtek RTL8139
Watchdog timer Intel 6300ESB or IB700
RAM between 50 MB and 32 TB
CPU 1 – 160 CPUs
Implementations [ edit ]
See also [ edit ]
References [ edit ]
External links [ edit ]