コンテンツにスキップ
Wikipedia

Kernel-based Virtual Machine

出典: フリー百科事典『ウィキペディア(Wikipedia)』
KVM
ゲストOSのNetBSDOpenIndianaをホストOSのArch Linux上で動作させているQEMU/KVMのスクリーンショット
作者 Qumranet (英語版)
リポジトリ ウィキデータを編集
プログラミング
言語
C
対応OS Unix-like
プラットフォーム ARMPowerPCS/390x86x86-64RISC-V
種別 仮想化
ライセンス 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-64 [7] ARM向けにも移植されている[8] 。IA-64のサポートは2014年に終了した。[9]

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

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

歴史

[編集 ]

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

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

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

内部構造

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

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

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

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

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

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

[編集 ]
種別 デバイス
ビデオカード Cirrus CLGD 5446 PCI VGAカード、Bochs VESA拡張を利用したダミーVGAカード[26] 、VirtIO、QXL VGA
PCI I440FX or Q35
入力デバイス PS/2マウスおよびキーボード[26]
サウンドカード Sound Blaster 16 (英語版)、ENSONIQ AudioPCI ES1370 (英語版) AC97、Gravis Ultrasound GF1 (英語版)、CS4231A compatible[26] 、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ライセンスでライセンスされている[27]

  • 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.
  7. ^ "Linux_2_6_26 -Linux Kernel Newbies". kernelnewbies.org. 2025年9月22日閲覧。
  8. ^ KVM/ARM Open Source Project
  9. ^ "KVM: ia64: remove". kernel.org. 2025年9月22日閲覧。
  10. ^ "KVM wiki: Guest support status". 2007年5月27日閲覧。
  11. ^ "Running Mac OS X as a QEMU/KVM Guest". 2014年8月20日閲覧。
  12. ^ "status". Gnu.org. 2014年2月12日閲覧。
  13. ^ "Guest Support Status - KVM". Linux-kvm.org. 2014年2月12日閲覧。
  14. ^ "An API for virtual I/O: virtio". LWN.net (2007年7月11日). 2014年4月16日閲覧。
  15. ^ "OpenBSD man page virtio(4)". 2018年2月4日閲覧。
  16. ^ "virtio binary packages for FreeBSD". 2012年10月29日閲覧。
  17. ^ "NetBSD man page virtio(4)". 2013年7月15日閲覧。
  18. ^ "plan9front". 2013年2月11日閲覧。
  19. ^ "SCSI target for KVM wiki". linux-iscsi.org (2012年8月7日). 2012年8月12日閲覧。
  20. ^ Interview: Avi Kivity Archived 2007年04月26日 at the Wayback Machine. on KernelTrap
  21. ^ "Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition". レッドハット (2008年9月4日). 2015年6月16日閲覧。
  22. ^ "Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM". kernelnewbies.org (2007年2月5日). 2014年6月16日閲覧。
  23. ^ Libby Clark (2015年4月7日). "Git Success Stories and Tips from KVM Maintainer Paolo Bonzini". Linux.com. 2015年6月17日閲覧。
  24. ^ "KVM/QEMU Storage Stack Performance Discussion" (PDF). ibm.com. Linux Plumbers Conference (2010年). 2015年1月3日閲覧。[リンク切れ ]
  25. ^ "SeaBIOS". seabios.org (2013年12月21日). 2014年6月16日閲覧。
  26. ^ a b c wiki.qemu.org – QEMU Emulator User Documentation, read 2010年05月06日
  27. ^ Ubuntu 7.04 /usr/share/doc/kvm/copyright からのライセンス情報

外部リンク

[編集 ]
全体
プラットフォームの
仮想化
(仮想マシン)
ハードウェアレベル
ソフトウェアレベル
言語レベル
リソースの仮想化
CPU
メインメモリ
ディスク装置
ネットワーク
その他
カテゴリ カテゴリ

AltStyle によって変換されたページ (->オリジナル) /