Kernel-based Virtual Machine

KVM
ゲストOSのNetBSDOpenIndianaをホストOSのArch Linux上で動作させているQEMU/KVMのスクリーンショット
作者 Qumranet英語版
リポジトリ ウィキデータを編集
プログラミング
言語
C
対応OS Unix-like
プラットフォーム ARMIA-64PowerPCS/390x86x86-64
種別 仮想化
ライセンス GPL または LGPL
公式サイト www.linux-kvm.org
テンプレートを表示

Kernel-based Virtual Machine (KVM) は、Linuxカーネルハイパーバイザとして機能させるための仮想化モジュールである。Linuxカーネルのメインラインにバージョン2.6.20でマージされ、このカーネルは、2007年2月5日にリリースされた[1]。KVMは、VTAMD-Vなどのハードウェアの仮想化拡張を必要とする[2]。KVMは、他のオペレーティングシステム (OS) であるFreeBSD[3]illumos[4]にも、ローダブル・カーネル・モジュールの形態で移植されている。

KVMはもともとx86プロセッサ向けに設計されたが、後にS/390[5]PowerPC[6]IA-64ARM向けにも移植されている[7]

KVMは、Linux、BSD、SolarisWindowsHaikuReactOSPlan 9AROS Research Operating System[8]macOS[9]など、非常に幅広いゲストOSに対してハードウェア支援仮想化英語版を提供する。また、Android 2.2、GNU/Hurd[10](Debian K16)、Minix 3.1.2a英語版Category:日本語版記事がリダイレクトの仮リンクを含む記事、Solaris 10 U3、Darwin 8.0.1などのOSや上記OSの新しいバージョンでは、何らかの制限の元で動作することが知られている[11]

さらに、KVMでVirtIO[12] APIを利用することで、Linux、OpenBSD[13]、FreeBSD[14]、NetBSD[15]、Plan 9[16]、WindowsのゲストOSに対して、準仮想化の機能も提供する。準仮想化対象には、準仮想イーサネットカード、ディスクI/Oコントローラー[17]、ゲストOSの仮想記憶管理の動作を変更するバルーンデバイス (balloon device)、SPICE英語版またはVMwareを使用したVGAグラフィックインタフェースも含まれる。

歴史

KVMの開発は、テクノロジーのスタートアップであるQumranet英語版で、Avi Kivityにより始められた[18]。Qumranetは、2008年レッドハットに買収された[19]

KVMは、Linuxカーネルのメインラインにバージョン2.6.20でマージされた。このLinuxカーネルは、2007年2月5日にリリースされた[20]

KVMは、Paolo Bonziniによりメンテナンスされている[21]

内部構造

KVM/QEMUによる仮想化環境の全体の概要[22]:3

KVM自体はエミュレーションは全く実行しない。そのかわりに、/dev/kvmインタフェースを公開することによって、ユーザースペースのホストが以下の機能を利用できるようにする。

  • ゲストVMのアドレス空間のセットアップ。ホストは、ゲストがメインOS内にブートストラップするために利用するファームウェアイメージ(通常、PCをエミュレートする時のカスタムBIOSである)も提供する必要がある。
  • ゲストのシミュレートされたI/Oをフィード。
  • ゲストのビデオディスプレイをシステムホストにマッピング。

Linuxでは、QEMUのバージョン0.10.1以降がユーザー空間のホストの1例である。QEMUは、ゲストをネイティブに近い速度で仮想化できる場合にはKVMを使うが、そうでない場合には、ソフトウェアのみのエミュレーションにフォールバックする[23]

内部では、KVMは、16ビットx86BIOSのオープンソース実装としてSeaBIOS英語版を利用している。

エミュレート対象ハードウェア

種別 デバイス
ビデオカード Cirrus CLGD 5446 PCI VGAカード、Bochs VESA拡張を利用したダミーVGAカード[24]、VirtIO、QXL VGA
PCI I440FX or Q35
入力デバイス PS/2マウスおよびキーボード[24]
サウンドカード Sound Blaster 16英語版、ENSONIQ AudioPCI ES1370英語版 AC97、Gravis Ultrasound GF1英語版、CS4231A compatible[24]、HD Audio
イーサネット ネットワークカード AMD Am79C970A(Am7990英語版)、E1000(Intel 82540EM, 82573L, 82544GC)、NE2000英語版、Realtek RTL8139英語版、VirtIO
ウォッチドッグタイマー Intel 6300ESBまたはIB700
RAM 50 MB - 32 TB
CPU 1 – 160 CPU

グラフィカルな管理ツール

libvirtはKVMをサポートしている
  • 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ライセンスでライセンスされている[25]

  • 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以降

関連項目

脚注・出典

  1. Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM”. kernelnewbies.org (2007年2月5日). 2014年6月16日閲覧。
  2. KVM FAQ: What do I need to use KVM?
  3. FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD”. 2008年10月3日閲覧。
  4. KVM on illumos”. 2011年11月15日閲覧。
  5. Gmane - Mail To News And Back Again”. 2007年9月29日時点のオリジナルよりアーカイブ。2007年5月7日閲覧。
  6. Gmane Loom Archived 2007-09-29 at the Wayback Machine.Category:Webarchiveテンプレートのウェイバックリンク
  7. KVM/ARM Open Source Project
  8. KVM wiki: Guest support status”. 2007年5月27日閲覧。
  9. Running Mac OS X as a QEMU/KVM Guest”. 2014年8月20日閲覧。
  10. status”. Gnu.org. 2014年2月12日閲覧。
  11. Guest Support Status - KVM”. Linux-kvm.org. 2014年2月12日閲覧。
  12. An API for virtual I/O: virtio”. LWN.net (2007年7月11日). 2014年4月16日閲覧。
  13. OpenBSD man page virtio(4)”. 2018年2月4日閲覧。
  14. virtio binary packages for FreeBSD”. 2012年10月29日閲覧。
  15. NetBSD man page virtio(4)”. 2013年7月15日閲覧。
  16. plan9front”. 2013年2月11日閲覧。
  17. SCSI target for KVM wiki”. linux-iscsi.org (2012年8月7日). 2012年8月12日閲覧。
  18. Interview: Avi Kivity Archived 2007-04-26 at the Wayback Machine.Category:Webarchiveテンプレートのウェイバックリンク on KernelTrap
  19. Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition”. レッドハット (2008年9月4日). 2015年6月16日閲覧。
  20. Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM”. kernelnewbies.org (2007年2月5日). 2014年6月16日閲覧。
  21. Libby Clark (2015年4月7日). Git Success Stories and Tips from KVM Maintainer Paolo Bonzini”. Linux.com. 2015年6月17日閲覧。
  22. KVM/QEMU Storage Stack Performance Discussion (PDF). ibm.com. Linux Plumbers Conference (2010年). 2015年1月3日閲覧。[リンク切れ]Category:外部リンクがリンク切れになっている記事/2018年1月
  23. SeaBIOS”. seabios.org (2013年12月21日). 2014年6月16日閲覧。
  24. 1 2 3 wiki.qemu.org – QEMU Emulator User Documentation, read 2010-05-06
  25. Ubuntu 7.04 /usr/share/doc/kvm/copyright からのライセンス情報

外部リンク

Category:オープンソースソフトウェア Category:仮想化 Category:Linux Category:Cでプログラムされた自由ソフトウェア
Category:Cでプログラムされた自由ソフトウェア Category:GND識別子が指定されている記事 Category:Linux Category:Webarchiveテンプレートのウェイバックリンク Category:オープンソースソフトウェア Category:仮想化 Category:外部リンクがリンク切れになっている記事/2018年1月 Category:日本語版記事がリダイレクトの仮リンクを含む記事