Kernel-based Virtual Machine
Kernel-based Virtual Machine is a virtualization module in the Linux kernel that allows the kernel to function as 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 hardware virtualization extensions, such as Intel VT or AMD-V. KVM has also been ported to other operating systems such as FreeBSD and illumos in the form of loadable kernel modules.
KVM was originally designed for x86 processors and has since been ported to S/390, PowerPC, IA-64, and ARM.
KVM provides hardware-assisted virtualization for a wide variety of guest operating systems including Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS Research Operating System and macOS. In addition, Android 2.2, GNU/Hurd, 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.
Additionally, KVM provides paravirtualization support for Linux, OpenBSD, FreeBSD, NetBSD, Plan 9 and Windows guests using the VirtIO API. This includes a paravirtual Ethernet card, disk I/O controller, balloon device, and a VGA graphics interface using SPICE or VMware drivers.
History
Avi Kivity began the development of KVM in mid-2006 at Qumranet, a technology startup company that was acquired by Red Hat in 2008.KVM surfaced in October, 2006 and 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.
Internals
KVM provides device abstraction but no processor emulation. It exposes the /dev/kvm interface, which a user mode host can then use to:- Set up the guest VM's address space. The host must also supply a firmware image 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 system host.
Internally, KVM uses SeaBIOS as an open source implementation of a 16-bit x86 BIOS.
Features
KVM supports hot plug vCPUs, dynamic memory management, and Live Migration since February 2007. memory write intensive workload impacts in migration processEmulated hardware
Class | Device |
Video card | Cirrus CLGD 5446 PCI VGA card, dummy VGA card with Bochs VESA extensions, or VirtIO |
PCI | i440FX or Q35 |
Input device | PS/2 and USB Mouse/Keyboard |
Sound card | Sound Blaster 16, ENSONIQ AudioPCI ES1370, Gravis Ultrasound GF1, CS4231A compatible, Intel HD Audio |
Ethernet Network card | AMD Am79C970A, E1000, NE2000, Realtek RTL8139 and VirtIO |
Storage device | IDE, SATA, SCSI, SAS, USB, NVMe and VirtIO |
Watchdog timer | Intel 6300ESB or IB700 |
RAM | between 50 MB and 32 TB |
CPU | 1 – 160 CPUs |
Graphical management tools
- Kimchi web-based virtualization management tool for KVM
- 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.
- Proxmox Virtual Environment an open-source virtualization management package including KVM and LXC. It has a bare-metal installer, a web-based remote management GUI, a HA cluster stack, unified storage, flexible network, and optional commercial support.
- OpenQRM management platform for managing heterogeneous data center infrastructures.
- GNOME Boxes Gnome interface for managing libvirt guests on Linux.
- oVirt open-source virtualization management tool for KVM built on top of libvirt
Licensing
- KVM kernel module: GPL v2
- KVM user module: LGPL v2
- QEMU virtual CPU core library and QEMU PC system emulator: LGPL
- Linux user mode QEMU emulator: GPL
- BIOS files : LGPL v2 or later