Linuxカーネルの仮想化モジュール
カーネルベース仮想マシン ( 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、およびその他のオペレーティングシステムとこれらの新しいバージョンのいくつかは、特定の制限付きで動作することが知られています。 [14]
さらに、KVMは VirtIO API [19] を使用することで、Linux、 OpenBSD [15] 、 FreeBSD [16] 、 NetBSD [17] 、 Plan 9 [18] 、Windowsゲストの 準仮想化 サポートを提供します。 これには準仮想化 イーサネットカード 、ディスクI/Oコントローラ、 [20] バルーンドライバ 、および SPICE または VMwareドライバを使用した VGA グラフィックインタフェースが含まれます 。
歴史
アヴィ・キヴィティは、 2006年半ばに テクノロジー系 スタートアップ企業 Qumranet [21] でKVMの開発を開始しました。Qumranetは2008年に Red Hat [22] に買収されました
KVMは2006年10月に登場し [23] 、2007年2月5日にリリースされたバージョン2.6.20でLinuxカーネルのメインラインに統合されました。 [1]
KVMはPaolo Bonziniによってメンテナンスされています。 [24]
内部
KVM/QEMU仮想化環境の概要 [25] : 3
KVMはデバイスの抽象化を提供しますが、プロセッサのエミュレーションは提供しません。KVMは /dev/kvm インターフェースを公開しており、ユーザーモードホストはこれを使用して以下の操作を行うことができます。
ゲストVMのアドレス空間を設定します。ホストは、ゲストがメインOSへのブートストラップに使用できるファームウェアイメージ(PCをエミュレートする場合は通常カスタムBIOS)も提供する必要があります。
ゲストにシミュレートされた I/O をフィードします。
ゲストのビデオ ディスプレイをシステム ホストにマップし直します。
当初、ゲストを起動し、カーネルでは処理されないハードウェアエミュレーションを扱うために、 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 は次のエミュレートされたデバイスを提供します。
libvirtは KVMをサポートしています
ライセンス
KVMのカーネルモードコンポーネントは Linuxカーネル の一部であり、それ自体は GNU General Public Licenseバージョン2 に基づいてライセンスされています。 [33]
参照
参考文献
^ ab "Linuxカーネル2.6.20、セクション2.2. KVMによる仮想化サポート". kernelnewbies.org . 2007年2月5日 . 2014年6月16日 閲覧
^ KVM に関する FAQ: KVM を使用するには何が必要ですか?
^ 「FreeBSD 四半期ステータス レポート: Linux KVM の FreeBSD への移植」。
^ 「illumos上のKVM」2011年8月15日。
^ abc "Linux_2_6_26". kernelnewbies.org . 2008年7月13日. 1.2. KVMがIA64、PPC、S390に移植されました 。 2025年8月23日 閲覧。
^ 「KVM: s390: kvmカーネルモジュールのarchバックエンド」2008年4月27日。
^ 「KVM/ARM: オープンソースの ARM 仮想化システム」。
^ “KVM/ARM オープンソースプロジェクト”. 2013年3月10日時点のオリジナルよりアーカイブ 。 2017年11月1日 閲覧。
^ Christoffer Dall、Jason Nieh (2014). 「KVM/ARM: Linux ARMハイパーバイザーの設計と実装」 SIGARCH Comput. Archit. News 42 ( 1). ACM International Conference on Architectural Support for Programming Languages and Operating Systems: 333– 348. doi :10.1145/2654822.2541946.
^ "kernel/git/torvalds/linux.git: KVM: ia64: 削除".
^ 「KVM wiki: ゲストサポートステータス」 。 2007年5月27日 閲覧 。
^ 「Mac OS XをQEMU/KVMゲストとして実行する」 。 2014年8月20日 閲覧 。
^ "status". Gnu.org . 2014年2月12日 閲覧 。
^ 「ゲストサポートステータス - KVM」Linux-kvm.org . 2014年2月12日 閲覧 。
^ 「OpenBSD manページ virtio(4)」 。 2018年2月4日 閲覧 。
^ 「FreeBSD用のvirtioバイナリパッケージ」 。 2012年10月29日 閲覧 。
^ “NetBSD manページ virtio(4)”. 2019年11月13日時点のオリジナルよりアーカイブ 。 2013年7月15日 閲覧。
^ "plan9front" . 2013年2月11日 閲覧。
^ 「仮想I/O用のAPI:virtio」 LWN.net 2007年7月11日. 2014年4月16日 閲覧 。
^ “SCSI target for KVM wiki”. linux-iscsi.org. 2012年8月7日. 2020年6月5日時点のオリジナルよりアーカイブ。 2012年8月12日 閲覧 。
^ インタビュー: Avi Kivity Archived 2007-04-26 at the Wayback Machine on KernelTrap
^ 「Red Hat、Qumranet, Inc.買収により仮想化リーダーシップを強化」 Red Hat 、2008年9月4日。 2015年 6月16日 閲覧 。
^ 「ライブマイグレーション機能を搭載したKVM 15 | IT World Canada News」2007年3月7日。
^ Libby Clark (2015年4月7日). 「KVMメンテナーPaolo BonziniによるGit成功事例とヒント」 Linux.com . 2016年3月15日時点のオリジナルよりアーカイブ。 2015年 6月17日 閲覧 。
^ Khoa Huynh、Stefan Hajnoczi (2010). 「KVM/QEMUストレージスタックのパフォーマンスに関する議論」 (PDF) . IBM . Linux Plumbers Conference . 2015年 1月3日 閲覧 。 [ 永久リンク切れ ]
^ "SeaBIOS". seabios.org. 2013年12月21日. 2014年6月16日 閲覧 。
^ 「Red Hat Enterprise Virtualization Manager による仮想 CPU のホットプラグ」。2016 年 2 月 16 日。
^ 「FAQ - KVM」。
^ 「KVM-15 リリース [LWN.net]」。
^ 「移行 - KVM」。
^ 「Daniel P. Berrangé » ブログ アーカイブ » KVM による移行完了を確実にする手法の分析」。
^ 「KVM (カーネルベースの仮想マシン) API の決定版ドキュメント — Linux カーネルのドキュメント」。
^ “Linuxカーネルライセンスルール — Linuxカーネルドキュメント”. www.kernel.org . 2020年3月7日時点のオリジナルよりアーカイブ。 2020年1月6日 閲覧 。
参考文献
Amit Shah (2016年11月2日). 「KVMの10年」. lwn.net . 2017年2月10日 閲覧
外部リンク
カーネルベース仮想マシンのベストプラクティス、 Wayback Machine に2019年11月6日にアーカイブ、IBM、第2版、2012年4月
Virtio-blk パフォーマンス改善、KVM フォーラム 2012、2012 年 11 月 8 日、Asias He 著
ウィキブック QEMU & KVM
crosvm - Chrome OS 仮想マシンモニター
KVM 用の Firecracker VMM