Kernel-based Virtual Machine

Kernel-based Virtual Machine (KVM) は、Linuxカーネルをハイパーバイザとして機能させるための仮想化モジュールである。Linuxカーネルのメインラインにバージョン2.6.20でマージされ、このカーネルは、2007年2月5日にリリースされた。KVMは、VTやAMD-Vなどのハードウェアの仮想化拡張を必要とする。KVMは、他のオペレーティングシステム (OS) であるFreeBSDやillumosにも、ローダブル・カーネル・モジュールの形態で移植されている。 KVMはもともとx86プロセッサ向けに設計されたが、後にS/390、PowerPC、IA-64、ARM向けにも移植されている。 KVMは、Linux、BSD、Solaris、Windows、Haiku、ReactOS、Plan 9、AROS Research Operating System、macOSなど、非常に幅広いゲストOSに対してハードウェア支援仮想化（英語版）を提供する。また、Android 2.2、GNU/Hurd（Debian K16）、Minix 3.1.2a（英語版）、Solaris 10 U3、Darwin 8.0.1などのOSや上記OSの新しいバージョンでは、何らかの制限の元で動作することが知られている。 さらに、KVMでVirtIO APIを利用することで、Linux、OpenBSD、FreeBSD、NetBSD、Plan 9、WindowsのゲストOSに対して、準仮想化の機能も提供する。準仮想化対象には、準仮想イーサネットカード、ディスクI/Oコントローラー、ゲストOSの仮想記憶管理の動作を変更するバルーンデバイス (balloon device)、SPICE（英語版）またはVMwareを使用したVGAグラフィックインタフェースも含まれる。 KVMの開発は、テクノロジーのスタートアップであるQumranet（英語版）で、Avi Kivityにより始められた。Qumranetは、2008年レッドハットに買収された。 KVMは、Linuxカーネルのメインラインにバージョン2.6.20でマージされた。このLinuxカーネルは、2007年2月5日にリリースされた。 KVMは、Paolo Bonziniによりメンテナンスされている。 KVM自体はエミュレーションは全く実行しない。そのかわりに、/dev/kvmインタフェースを公開することによって、ユーザースペースのホストが以下の機能を利用できるようにする。 ゲストVMのアドレス空間のセットアップ。ホストは、ゲストがメインOS内にブートストラップするために利用するファームウェアイメージ（通常、PCをエミュレートする時のカスタムBIOSである）も提供する必要がある。 ゲストのシミュレートされたI/Oをフィード。 ゲストのビデオディスプレイをシステムホストにマッピング。 Linuxでは、QEMUのバージョン0.10.1以降がユーザー空間のホストの1例である。QEMUは、ゲストをネイティブに近い速度で仮想化できる場合にはKVMを使うが、そうでない場合には、ソフトウェアのみのエミュレーションにフォールバックする。 内部では、KVMは、16ビットx86BIOSのオープンソース実装としてSeaBIOS（英語版）を利用している。 Kimchi（英語版） – ウェブベースのKVM仮想化管理ツール。 Virtual Machine Manager – はKVMベースの仮想マシンの作成、編集、スタート、ストップに対応している。また、ホスト間でドラッグ・アンド・ドロップによるVMのライブまたはコールドマイグレーションもできる。 Proxmox Virtual Environment – KVMとLXCを含むオープンソースの仮想化管理パッケージ。ベアメタルのインストーラ、ウェブベースのリモート管理GUI、HAクラスタースタック、統合ストレージ (unified storage)、柔軟なネットワーク管理 (flexible network)、オプションの商用サポートがある。 OpenQRM（英語版） – ヘテロジニアスなデータセンターのインフラストラクチャーを管理するための管理プラットフォーム。 GNOME Boxes – Linux上のlibvirtのゲストを管理するためのGNOMEインタフェース。 oVirt（英語版） – libvirtを基盤に構築された、KVMのためのオープンソースの仮想化管理ツール。 KVMの各部品は、以下のように様々なGNUライセンスでライセンスされている。 KVM カーネルモジュール: GPL v2 KVM ユーザモジュール: LGPL v2 QEMU 仮想CPUコアライブラリ (libqemu.a) とQEMU PCシステムエミュレータ: LGPL LinuxユーザモードQEMUエミュレータ: GPL BIOSファイル (bios.bin, vgabios.bin, vgabios-cirrus.bin) : LGPL v2以降 CloudStack Comparison of platform virtualization software Kernel same-page merging (KSM) Lguest libguestfs libvirt Open Virtualization Alliance OpenNebula OpenStack oVirt Vx32 Xen ^ “Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM”. kernelnewbies.org (2007年2月5日). 2014年6月16日閲覧。 ^ KVM FAQ: What do I need to use KVM? ^ “FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD”. 2008年10月3日閲覧。 ^ “KVM on illumos”. 2011年11月15日閲覧。 ^ “Gmane - Mail To News And Back Again”. 2007年9月29日時点のオリジナルよりアーカイブ。2007年5月7日閲覧。 ^ Gmane Loom Archived 2007-09-29 at the Wayback Machine. ^ KVM/ARM Open Source Project ^ “KVM wiki: Guest support status”. 2007年5月27日閲覧。 ^ “Running Mac OS X as a QEMU/KVM Guest”. 2014年8月20日閲覧。 ^ “status”. Gnu.org. 2014年2月12日閲覧。 ^ “Guest Support Status - KVM”. Linux-kvm.org. 2014年2月12日閲覧。 ^ “An API for virtual I/O: virtio”. LWN.net (2007年7月11日). 2014年4月16日閲覧。 ^ “OpenBSD man page virtio(4)”. 2018年2月4日閲覧。 ^ “virtio binary packages for FreeBSD”. 2012年10月29日閲覧。 ^ “NetBSD man page virtio(4)”. 2013年7月15日閲覧。 ^ “plan9front”. 2013年2月11日閲覧。 ^ “SCSI target for KVM wiki”. linux-iscsi.org (2012年8月7日). 2012年8月12日閲覧。 ^ Interview: Avi Kivity Archived 2007-04-26 at the Wayback Machine. on KernelTrap ^ “Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition”. レッドハット (4 September 2008). 16 June 2015閲覧。 ^ “Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM”. kernelnewbies.org (2007年2月5日). 2014年6月16日閲覧。 ^ Libby Clark (7 April 2015). “Git Success Stories and Tips from KVM Maintainer Paolo Bonzini”. Linux.com. 17 June 2015閲覧。 ^ “KVM/QEMU Storage Stack Performance Discussion” (PDF). ibm.com. Linux Plumbers Conference (2010年). January 3, 2015閲覧。[リンク切れ] ^ “SeaBIOS”. seabios.org (2013年12月21日). 2014年6月16日閲覧。 ^ a b c wiki.qemu.org – QEMU Emulator User Documentation, read 2010-05-06 ^ Ubuntu 7.04 /usr/share/doc/kvm/copyright からのライセンス情報 kvm ホームページ KVM初のベンチマーク結果 2006年12月 News, Blogs and Resources on the Linux (KVM) Kernel-Based Virtual Machine Getting to know the Linux Kernel Virtual Machine Presentation KVM virshコマンドのまとめ