| KVM | |
|---|---|
| 原作者 | クムラネット |
| 開発者 | Linuxカーネルコミュニティ |
| 執筆 | C |
| オペレーティング·システム | Unixライク |
| プラットフォーム | ARM、PowerPC、z/Architecture、IA-32、x86-64、RISC-V、LoongArch |
| タイプ | ハイパーバイザー |
| ライセンス | GNU GPLまたはLGPL |
| Webサイト | www.linux-kvm.org |
| リポジトリ |
|
Kernel-based Virtual Machine ( KVM ) は、Linux カーネルのフリーかつオープンソースの仮想化モジュールで、カーネルをハイパーバイザとして機能させることができます。これは、2007 年 2 月 5 日にリリースされたバージョン 2.6.20 でメインラインの Linux カーネルに統合されました。 [ 1 ] KVM は、 Intel VTやAMD-Vなどのハードウェア仮想化拡張機能を備えたプロセッサを必要とします。[ 2 ] KVM は、ロード可能なカーネルモジュールの形で、FreeBSD [ 3 ]やillumos [ 4 ]などの他のオペレーティングシステムにも移植されています。
KVMは元々x86プロセッサ向けに設計されましたが、その後z/Architecture [ 5 ] [ 6 ] 、 PowerPC [ 5 ]、IA-64 [ 5 ]、およびARM [ 7 ] [ 8 ] [ 9 ]に移植されました。IA -64ポートは2014年に削除されました[ 10 ]。
KVM は、 BSD、Solaris、Windows、Haiku、ReactOS、Plan 9、AROS、macOS、さらには他の Linux システムなど、さまざまなゲスト オペレーティングシステムのハードウェア支援仮想化をサポートしています。 [ 11 ] [ 12 ]さらに、Android 2.2、GNU/Hurd [ 13 ] ( Debian K16)、Minix 3.1.2a、Solaris 10 U3、Darwin 8.0.1、および上記に挙げた他のオペレーティングシステムやそれらの新しいバージョンの一部も、一定の制限はあるものの動作することが知られています。[ 11 ]
さらに、KVM は、VirtIO APIを使用してLinux、OpenBSD [ 14 ]、FreeBSD [ 15 ] 、 NetBSD [ 16 ]、Plan 9 [ 17 ] 、および Windows ゲストの準仮想化をサポートします。[ 18 ]これには、準仮想化イーサネット カード、ディスク I/O コントローラ[ 19 ] 、バルーン ドライバ、およびSPICEまたはVMwareドライバを使用したVGAグラフィックス インターフェイスが含まれます。
Avi Kivityは、 2006年半ばにQumranet [ 20 ]でKVMの開発を開始しました。Qumranetはテクノロジーのスタートアップ企業[ 21 ]で、 2008年にRed Hatに買収されました[ 22 ]。
KVMは2006年10月に登場し[ 23 ]、2007年2月5日にリリースされたバージョン2.6.20でLinuxカーネルのメインラインに統合されました[ 1 ]。
KVMはパオロ・ボンジーニによって維持されている。[ 24 ]

KVMはデバイス抽象化を提供しますが、プロセッサエミュレーションは提供しません。KVMは/dev/kvmインターフェースを公開し、ユーザーモードホストはこのインターフェースを使用して以下の操作を行うことができます。
当初、ゲストOSの起動やカーネルで処理されないハードウェアエミュレーションに対応するために、QEMUのフォーク版が提供されていました。このサポートは最終的に本プロジェクトに統合されました。現在では、kvmtool、crosvm、 Firecrackerなど、KVMインターフェースを利用できる仮想マシンモニタ(VMM)が多数存在し、rust-vmmなどのフレームワークで構築された専用のVMMも数多くあります。
KVMは内部的に、16ビットx86 BIOSのオープンソース実装としてSeaBIOSを使用しています。[ 26 ]
KVM は、2007 年 2 月以降、ホット スワップ可能な vCPU [ 27 ]、動的メモリ管理[ 28 ] 、およびライブ マイグレーション[ 29 ] [ 30 ]をサポートしています。また、メモリ書き込みが集中するワークロードがマイグレーション プロセスに与える影響も軽減します[ 31 ] 。
KVM自体はハードウェアのエミュレーションをほとんど行わず、デバイスエミュレーションはQEMU、crosvm、Firecrackerなどの上位レベルのクライアントアプリケーションに委ねている。
KVMは以下のエミュレートされたデバイスを提供します。

KVM のカーネルモードコンポーネントはLinux カーネルの一部であり、Linux カーネル自体はGNU General Public License バージョン 2の下でライセンスされています。[ 33 ]