KVM (Kernel-based Virtual Machine) とは
KVMは、
Linuxカーネルをハイパーバイザとして利用するための
仮想化モジュールです。
Linuxカーネルに統合されており、
ハードウェア仮想化拡張(VT-xやAMD-Vなど)を必要とします。もともとx86プロセッサ向けに開発されましたが、その後、S/390、
PowerPC、IA-64、ARMなど、多くのアーキテクチャに移植されています。
KVMは、Linuxだけでなく、FreeBSDやillumosなど他の
オペレーティングシステム(OS)にも移植されており、幅広いゲストOSをサポートしています。具体的には、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も存在します。
さらに、KVMはVirtIO APIを通じて、Linux、OpenBSD、FreeBSD、NetBSD、Plan 9、WindowsといったゲストOSに対し、準
仮想化機能も提供しています。準
仮想化では、準仮想
イーサネットカード、ディスクI/Oコントローラ、ゲストOSのメモリ管理を制御するバルーンデバイス、そしてSPICEや
VMwareを用いたVGAグラフィックインターフェースなどが利用可能です。
歴史
KVMは、テクノロジースタートアップであるQumranet社でAvi Kivity氏によって開発が始まりました。その後、Qumranet社は2008年に
レッドハット社に買収されました。KVMは
Linuxカーネルのバージョン2.6.20でメインラインにマージされ、このカーネルは2007年2月5日にリリースされました。現在、KVMはPaolo Bonzini氏によってメンテナンスされています。
内部構造
KVM自体はエミュレーションを行わず、代わりに `/dev/kvm` インターフェースを介してユーザースペースのホストがゲスト仮想マシンのアドレス空間をセットアップし、ゲストのI/Oを処理できるようにします。また、ホストはゲストがブートストラップするために利用するファームウェアイメージ(通常はPCエミュレーション時のカスタムBIOS)を提供する必要もあります。Linux環境では、QEMU(バージョン0.10.1以降)が代表的なユーザースペースのホストとして利用されます。QEMUは、KVMが利用可能な場合はKVMを使用し、そうでない場合は
ソフトウェアエミュレーションに切り替えます。内部的には、KVMは
16ビットx86BIOSのオープンソース実装であるSeaBIOSを利用しています。
KVMは、様々な
ハードウェアをエミュレートすることが可能です。これにより、幅広いゲストOSを仮想環境上で実行できます。
グラフィカルな管理ツール
KVMを管理するためのグラフィカルなツールが複数存在します。
Kimchi: ウェブベースのKVM仮想化管理ツールです。
Virtual Machine Manager: KVMベースの仮想マシンの作成、編集、起動、停止をサポートし、ホスト間でのVMのライブマイグレーションも可能です。
Proxmox Virtual Environment: KVMとLXCを含むオープンソースの仮想化管理パッケージで、ベアメタルインストーラ、Webベースのリモート管理GUI、HAクラスタースタック、統合ストレージ、柔軟なネットワーク管理を提供し、商用サポートもオプションで利用可能です。
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以降
関連項目
(関連技術や用語があればここに記述)
脚注・出典
(必要に応じて出典を記述)
外部リンク
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コマンドのまとめ