World Library  
Flag as Inappropriate
Email this Article

Kernel-based Virtual Machine

Article Id: WHEBN0008412133
Reproduction Date:

Title: Kernel-based Virtual Machine  
Author: World Heritage Encyclopedia
Language: English
Subject: Univention Corporate Server, Kernel same-page merging, Red Hat Enterprise Virtualization, Libvirt, TurnKey Linux Virtual Appliance Library
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Kernel-based Virtual Machine

KVM
Screenshot of QEMU/KVM running NetBSD, OpenSolaris and Kubuntu guests on an Arch Linux host.
Original author(s) Qumranet
Developer(s) Open Virtualization Alliance (OVA)
Stable release 1.2.0 / September 5, 2012 (2012-09-05)
Written in C
Operating system Unix-like
Platform ARM, IA-64, PowerPC, S/390, x86, x86-64
Type Hypervisor
License GNU General Public License or GNU Lesser General Public License
Website .org.linux-kvmwww
(unofficial)

KVM (Kernel-based Virtual Machine) is a virtualization infrastructure for the Linux kernel that turns it into a hypervisor, which was merged into the Linux kernel mainline in February 2007.[1] KVM requires a processor with hardware virtualization extension.[2] KVM has also been ported to FreeBSD[3] and Illumos[4] in the form of loadable kernel modules.

KVM originally supported x86 processors and has been ported to S/390,[5] PowerPC,[6] and 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 of Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS Research Operating System[8] and Mac OS X.[9] In addition, Android 2.2, GNU/Hurd[10] (Debian K16), 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,[12] FreeBSD,[13] NetBSD,[14] Plan 9[15] and Windows guests using the VirtIO[16] API. This supports a paravirtual Ethernet card, a paravirtual disk I/O controller,[17] a balloon device for adjusting guest memory usage, and a VGA graphics interface using SPICE or VMware drivers.

Internals

By itself, KVM does not perform any emulation. Instead, it simply exposes the /dev/kvm interface, with which a userspace host can then:

  • Set up the guest VM's address space. The host must also supply a firmware image (usually a custom BIOS when emulating PCs) with which the guest can bootstrap into its main OS.
  • Feed the guest simulated I/O.
  • Map the guest's video display back onto the host.

On Linux, QEMU versions 0.10.1 and later is one such userspace host. QEMU will use KVM when available to virtualize guests at near-native speeds, but otherwise will fall back to software-only emulation.

Internally, KVM uses SeaBIOS as an open source implementation of a 16-bit x86 BIOS.[18]

Licensing

KVM's parts are licensed under various GNU licenses:[19]

  • 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

Avi Kivity began the development of KVM at Qumranet, which was a technology startup company[20] bought by Red Hat later in 2008.[21]

KVM was merged into the Linux kernel mainline in kernel version 2.6.20, released on 5 February 2007.[1]

KVM is maintained by Paolo Bonzini and Gleb Natapov.

Graphical management tools

KVM is supported by libvirt.
  • Kimchi – web-based virtualization management tool for KVM
  • 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.
  • Archipel – An opensource libvirt-based Web UI, which uses XMPP to communicate with its "agents" installed on servers
  • Witsbits – Simplified SaaS based centralized management with web UI.
  • 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.
  • 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 – 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.
  • 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.
  • SolusVM – Supports the management of KVM-based virtual machines as well as Xen and OpenVZ.
  • Virtualizor – Supports the management of KVM-based virtual machines as well as Xen and OpenVZ.
  • GNOME Boxes – Gnome interface for managing libvirt guests on Linux.
  • oVirt – open-source virtualization management tool for KVM built on top of libvirt

Emulated hardware

Class Device
Video card Cirrus CLGD 5446 PCI VGA card, dummy VGA card with Bochs VESA extensions,[22] or Virgil as a virtual 3D GPU[23]
PCI i440FX host PCI bridge and PIIX3 PCI to ISA bridge[22]
Input device PS/2 Mouse and Keyboard[22]
Sound card Sound Blaster 16, ENSONIQ AudioPCI ES1370, Gravis Ultrasound GF1, CS4231A compatible[22]
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

See also

References

  1. ^ a b "Virtualization support through KVM". Linux: 2.6.20 Kernel release notes. kernelnewbies.org. 2007-02-05. Retrieved 2014-06-16. 
  2. ^ KVM FAQ: What do I need to use KVM?
  3. ^ "FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD". 
  4. ^ "KVM on illumos". 
  5. ^ Gmane - Mail To News And Back Again
  6. ^ Gmane Loom
  7. ^ KVM/ARM Open Source Project
  8. ^ "KVM wiki: Guest support status". Retrieved 2007-05-27. 
  9. ^ "Running Mac OS X as a QEMU/KVM Guest". Retrieved 2014-08-20. 
  10. ^ "status". Gnu.org. Retrieved 2014-02-12. 
  11. ^ "Guest Support Status - KVM". Linux-kvm.org. Retrieved 2014-02-12. 
  12. ^ "OpenBSD man page virtio(4)". Retrieved 2013-07-15. 
  13. ^ "virtio binary packages for FreeBSD". Retrieved 2012-10-29. 
  14. ^ "NetBSD man page virtio(4)". Retrieved 2013-07-15. 
  15. ^ "plan9front". Retrieved 2013-02-11. 
  16. ^ "An API for virtual I/O: virtio".  
  17. ^ "SCSI target for KVM wiki". linux-iscsi.org. 2012-08-07. Retrieved 2012-08-12. 
  18. ^ "SeaBIOS". seabios.org. 2013-12-21. Retrieved 2014-06-16. 
  19. ^ Licensing info from Ubuntu 7.04 /usr/share/doc/kvm/copyright
  20. ^ Interview: Avi Kivity on KernelTrap
  21. ^ Red Hat press release on Qumranet purchase
  22. ^ a b c d wiki.qemu.org – QEMU Emulator User Documentation, read 2010-05-06
  23. ^ "Introducing Virgil - 3D virtual GPU for qemu". 2013-07-18. 

External links

  • Official website
  • Wikibook QEMU & KVM
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.