| KVM | |
|---|---|
| 原作者 | クムラネット |
| 開発者 | Linuxカーネルコミュニティ |
| リポジトリ | |
| 書かれた | C |
| オペレーティング·システム | Unixライク |
| プラットフォーム | ARM、PowerPC、z/Architecture、IA-32、x86-64、RISC-V、LoongArch |
| タイプ | ハイパーバイザー |
| ライセンス | GNU GPLまたはLGPL |
| Webサイト | www.linux-kvm.org |
カーネルベース仮想マシン(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でKVMの開発を開始した[ 21 ]。同社は2008年にRed Hatに買収された[ 22 ]。
KVMは2006年10月に登場し[ 23 ]、2007年2月5日にリリースされたバージョン2.6.20でLinuxカーネルのメインラインに統合されました。[ 1 ]
KVMはPaolo Bonziniによってメンテナンスされています。[ 24 ]
内部

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 は次のエミュレートされたデバイスを提供します。
グラフィカル管理ツール

- Kimchi – KVM用のWebベースの仮想化管理ツール
- 仮想マシン マネージャー – KVM ベースの仮想マシンの作成、編集、起動、停止、およびホスト間での VM のライブまたはコールド ドラッグ アンド ドロップ移行をサポートします。
- Proxmox Virtual Environment – KVMとLXC を含むオープンソースの仮想化管理パッケージ。ベアメタルインストーラー、Webベースのリモート管理GUI、HAクラスタースタック、統合ストレージ、柔軟なネットワーク、オプションの商用サポートを備えています。
- OpenQRM – 異機種データセンターインフラストラクチャを管理するための管理プラットフォーム
- GNOME Boxes – Linux 上で libvirt ゲストを管理するための Gnome インターフェース
- oVirt – libvirt 上に構築された KVM 用のオープンソース仮想化管理ツール
ライセンス
KVMのカーネルモードコンポーネントはLinuxカーネルの一部であり、それ自体はGNU General Public Licenseバージョン2に基づいてライセンスされています。[ 33 ]
参照
参考文献
- ^ a b「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日。
- ^ a b c "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日. 2019年7月28日時点のオリジナルよりアーカイブ。
- ^ 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日. 2020年12月9日時点のオリジナルよりアーカイブ。 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