Home      Discussion      Topics      Dictionary      Almanac
Signup       Login
Kernel-based Virtual Machine

Kernel-based Virtual Machine

Discussion
Ask a question about 'Kernel-based Virtual Machine'
Start a new discussion about 'Kernel-based Virtual Machine'
Answer questions from other users
Full Discussion Forum
 
Encyclopedia
Kernel-based Virtual Machine (KVM) is a virtualization infrastructure for the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

. KVM supports native virtualization
Native virtualization
In computing, hardware-assisted virtualization is a platform virtualization approach that enables efficient full virtualization using help from hardware capabilities, primarily from the host processors...

 on processors with hardware virtualization extensions.

KVM originally supported x86 and x86 64 processors and has been ported to S/390, PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...

, and IA-64. An ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

 port is in progress.

A wide variety of guest operating systems work with KVM, including many flavours of Linux, BSD, Solaris, Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, Haiku
Haiku (operating system)
Haiku is a free and open source operating system compatible with BeOS. Its development began in 2001, and the operating system became self-hosting in 2008, with the first alpha release in September 2009, the second in May 2010 and the third in June 2011....

, ReactOS
ReactOS
ReactOS is an open source computer operating system intended to be binary compatible with application software and device drivers made for Microsoft Windows NT versions 5.x and up...

, Plan 9
Plan 9 from Bell Labs
Plan 9 from Bell Labs is a distributed operating system. It was developed primarily for research purposes as the successor to Unix by the Computing Sciences Research Center at Bell Labs between the mid-1980s and 2002...

, and AROS Research Operating System
AROS Research Operating System
AROS Research Operating System is a free and open source multi media centric implementation of the AmigaOS 3.1 APIs. Designed to be portable and flexible, ports are currently available for x86-based and PowerPC-based PCs in native and hosted flavors, with other architectures in development...

.
A modified version of Qemu
QEMU
QEMU is a processor emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures....

 can use KVM to run Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

.

Limited paravirtualization
Paravirtualization
In computing, paravirtualization is a virtualization technique that presents a software interface to virtual machines that is similar but not identical to that of the underlying hardware....

 support is available for Linux and Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 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 VGA graphics interface using SPICE
SPICE (protocol)
In computing, SPICE is a remote-display system built for virtual environments which allows users to view a computing "desktop" environment - not only on its compute-server machine, but also from anywhere on the Internet and using a wide variety of machine architectures.Qumranet originally...

 or VMware
VMware
VMware, Inc. is a company providing virtualization software founded in 1998 and based in Palo Alto, California, USA. The company was acquired by EMC Corporation in 2004, and operates as a separate software subsidiary ....

 drivers.

It uses SeaBIOS
SeaBIOS
SeaBIOS is an open source implementation of a 16-bit x86 BIOS. SeaBIOS can run in an emulator or it can run natively on x86 hardware with the use of coreboot....

.

Linux 2.6.20 (released February 2007) was the first to include KVM.

KVM has also been ported to FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

 and Illumos
Illumos
Illumos is a derivative of OS/Net , which basically is a Solaris/OpenSolaris kernel with the bulk of the drivers, core libraries, and basic utilities. It is dependent on OS/Net, which Illumos will follow very closely while allowing to retain changes to code which might be unacceptable to upstream...

 as a loadable kernel module.

Design


By itself, KVM does not perform any emulation. Instead, a user-space
User space
A conventional computer operating system usually segregates virtual memory into kernel space and user space. Kernel space is strictly reserved for running the kernel, kernel extensions, and most device drivers...

 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
QEMU
QEMU is a processor emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures....

 versions 0.10.1 and later make use of this.

Licensing


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


Qumranet
Qumranet
Qumranet, Inc is an enterprise software company offering a desktop virtualization platform based on hosted desktops in Kernel-based Virtual Machines on servers, linked with their SPICE protocol...

, a technology startup
Startup company
A startup company or startup is a company with a limited operating history. These companies, generally newly created, are in a phase of development and research for markets...

, started the development of KVM.
Red Hat
Red Hat
Red Hat, Inc. is an S&P 500 company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....

 bought Qumranet in 2008. KVM is maintained by Avi Kivity and Marcelo Tosatti
Marcelo Tosatti
Marcelo Wormsbecker Tosatti is a Linux kernel developer.He became the maintainer of the stable 2.4 kernel series in November 2001 when he was 18 years old, replacing Alan Cox...

.

Graphical management tools

  • Virtual Machine Manager
    Virtual Machine Manager
    In computing, the Red Hat Virtual Machine Manager is a desktop-driven virtual-machine manager application with which users can manage virtual machines .- Features :Virtual Machine Manager allows users to:* create, edit, start and stop VMs...

     - Supports creating, editing, starting, and stopping KVM-based virtual machines, as well as live or cold drag-and-drop migration of VMs between hosts.
  • 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.
  • Proxmox Virtual Environment - Free virtualization management package including KVM and OpenVZ
    OpenVZ
    OpenVZ is an operating system-level virtualization technology based on the Linux kernel and operating system. OpenVZ allows a physical server to run multiple isolated operating system instances, known as containers, Virtual Private Servers , or Virtual Environments...

    . It has a bare-metal installer, a web-based remote management GUI, and optional commercial support
  • OpenNode - RHEL/CentOS based open-source server virtualization and management solution with a simple bare-metal installer, providing KVM+OpenVZ
    OpenVZ
    OpenVZ is an operating system-level virtualization technology based on the Linux kernel and operating system. OpenVZ allows a physical server to run multiple isolated operating system instances, known as containers, Virtual Private Servers , or Virtual Environments...

     host and standard libvirt, func management interfaces together with standard CLI tools like virsh and vzctl.
  • OpenQRM
  • SolusVM - Supports the management of KVM based virtual machines as well as Xen
    Xen
    Xen is a virtual-machine monitor providing services that allow multiple computer operating systems to execute on the same computer hardware concurrently....

     and OpenVZ
    OpenVZ
    OpenVZ is an operating system-level virtualization technology based on the Linux kernel and operating system. OpenVZ allows a physical server to run multiple isolated operating system instances, known as containers, Virtual Private Servers , or Virtual Environments...

    .
  • Virtualbricks - Python
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

    /GTK+
    GTK+
    GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...

    -based management of KVM and Qemu virtual machines with a complete set of networking tools to emulate a real switched network using VDE.

Emulated hardware

Class Device
Video card
Video card
A video card, Graphics Card, or Graphics adapter is an expansion card which generates output images to a display. Most video cards offer various functions such as accelerated rendering of 3D scenes and 2D graphics, MPEG-2/MPEG-4 decoding, TV output, or the ability to connect multiple monitors...

 
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs
Bochs
Bochs is a portable x86 and x86-64 IBM PC compatible emulator and debugger mostly written in C++ and distributed as free software under GNU Lesser General Public License...

 VESA extensions
PCI  i440FX host PCI bridge and PIIX3 PCI to ISA bridge
Input device
Input device
In computing, an input device is any peripheral used to provide data and control signals to an information processing system such as a computer or other information appliance...

 
PS/2 Mouse and Keyboard
Sound card
Sound card
A sound card is an internal computer expansion card that facilitates the input and output of audio signals to and from a computer under control of computer programs. The term sound card is also applied to external audio interfaces that use software to generate sound, as opposed to using hardware...

 
Sound Blaster 16
Sound Blaster 16
The Sound Blaster 16 is a series of sound cards by Creative Technology. They are add-on boards for PCs with an ISA or PCI slot.-Sound Blaster 16:Sound Blaster 16 , the successor to the Sound Blaster Pro, introduced 16-bit digital audio sampling to the Sound Blaster line...

, ENSONIQ AudioPCI ES1370, Gravis Ultrasound GF1, CS4231A compatible
Ethernet
Ethernet
Ethernet is a family of computer networking technologies for local area networks commercially introduced in 1980. Standardized in IEEE 802.3, Ethernet has largely replaced competing wired LAN technologies....

 Network card
Network card
A network interface controller is a computer hardware component that connects a computer to a computer network....

 
AMD Am79C970A (Am7990), E1000 (Intel 82540EM, 82573L, 82544GC), NE2000
NE2000
The NE1000/NE2000 is an early line of low cost Ethernet network cards originally produced by Novell. Its popularity had a significant impact on the pervasiveness of networks in computing...

, and Realtek RTL8139
RTL8139
Made by Realtek Semiconductor Corp, the RTL8139 is a family of network adapters.- Models :RTL8139C RTL8139C+ RTL8139D...

Watchdog timer
Watchdog timer
A watchdog timer is a computer hardware or software timer that triggers a system reset or other corrective action if the main program, due to some fault condition, such as a hang, neglects to regularly service the watchdog A watchdog timer (or computer operating properly (COP) timer) is a computer...

 
Intel 6300ESB or IB700
RAM
Ram
-Animals:*Ram, an uncastrated male sheep*Ram cichlid, a species of freshwater fish endemic to Colombia and Venezuela-Military:*Battering ram*Ramming, a military tactic in which one vehicle runs into another...

 
50 MB - 32 TB
CPU  1-16 CPUs

Implementations

  • RHEL 5.4 and above
    Red Hat Enterprise Linux
    Red Hat Enterprise Linux is a Linux-based operating system developed by Red Hat and targeted toward the commercial market. Red Hat Enterprise Linux is released in server versions for x86, x86-64, Itanium, PowerPC and IBM System z, and desktop versions for x86 and x86-64...

  • SLES 11 SP1 and above
    SUSE Linux Enterprise Server
    SUSE Linux Enterprise Server is a Linux distribution supplied by SUSE and targeted at the business market. It is targeted for servers, mainframes, and workstations but can be installed on desktop computers for testing as well. New major versions are released at an interval of 3-4 years, while...

  • Ubuntu 10.04 LTS and above
    Ubuntu (operating system)
    Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...

  • Gentoo Linux
    Gentoo Linux
    Gentoo Linux is a computer operating system built on top of the Linux kernel and based on the Portage package management system. It is distributed as free and open source software. Unlike a conventional software distribution, the user compiles the source code locally according to their chosen...


See also


  • Comparison of platform virtual machines
  • Lguest
    Lguest
    Lguest is a Linux kernel x86 virtualization hypervisor, introduced in kernel version 2.6.23 . It is not a full virtualization solution; instead it operates the Linux kernel with lguest support. Installation is as easy as running modprobe lg and then run Documentation/lguest/lguest to create a new...

  • OVirt
    OVirt
    oVirt is free platform virtualization management web application software developed by Red Hat. oVirt is built on libvirt which allows it to manage virtual machines hosted on any supported backend, including KVM, Xen and VirtualBox.- See also :...

  • Xen
    Xen
    Xen is a virtual-machine monitor providing services that allow multiple computer operating systems to execute on the same computer hardware concurrently....

  • QEMU
    QEMU
    QEMU is a processor emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures....

  • libvirt
    Libvirt
    libvirt is an open source API, daemon and management tool for managing platform virtualization. It can be used to manage Linux KVM, Xen, VMware ESX and other virtualization technologies...

  • libguestfs
    Libguestfs
    libguestfs is an open source API for modifying the virtual disk images used in virtualization of operating systems. libguestfs provides multiple editing tools for Fedora-based hosts modelled after ordinary Unix commands, such as "virt-cat" and "virt-tar", and can edit virtual machines managed by...

  • Vx32
    VX32
    The Vx32 virtual extension environment is an application-level virtual machine implemented as an ordinary user-mode library and designed to run native x86 code...

  • OpenNebula
    OpenNebula
    OpenNebula is an open-source cloud computing toolkit for managing heterogeneous distributed data center infrastructures. The OpenNebula toolkit manages a data center's virtual infrastructure to build private, public and hybrid IaaS clouds...


External links