カーネルベースの仮想マシン

KVM
原作者クムラネット
開発者Linuxカーネルコミュニティ
リポジトリ
書かれたC
オペレーティング·システムUnixライク
プラットフォームARMPowerPCz/ArchitectureIA-32x86-64RISC-VLoongArch
タイプハイパーバイザー
ライセンスGNU GPLまたはLGPL
Webサイトwww.linux-kvm.org

カーネルベース仮想マシンKVM)は、Linuxカーネルに含まれる無料のオープンソース仮想化モジュールであり、カーネルをハイパーバイザーとして機能させることを可能にします。2007年2月5日にリリースされたバージョン2.6.20で、メインラインLinuxカーネルに統合されました。 [ 1 ] KVMを使用するには、 Intel VTAMD-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は、 BSDSolarisWindowsHaikuReactOSPlan 9AROSmacOS、さらには他の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/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をサポート
  • 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 ]

参照

参考文献

  1. ^ a b「Linuxカーネル2.6.20、セクション2.2. KVMによる仮想化サポート」 . kernelnewbies.org . 2007年2月5日. 2014年6月16日閲覧
  2. ^ KVM に関する FAQ: KVM を使用するには何が必要ですか?
  3. ^ 「FreeBSD 四半期ステータス レポート: Linux KVM の FreeBSD への移植」
  4. ^ 「illumos上のKVM」 2011年8月15日。
  5. ^ a b c "Linux_2_6_26" . kernelnewbies.org . 2008年7月13日. 1.2. KVMがIA64、PPC、S390に移植されました2025年8月23日閲覧。
  6. ^ 「KVM: s390: kvmカーネルモジュールのarchバックエンド」 2008年4月27日。
  7. ^ 「KVM/ARM: オープンソースの ARM 仮想化システム」
  8. ^ 「KVM/ARMオープンソースプロジェクト」 。 2013年3月10日時点のオリジナルよりアーカイブ2017年11月1日閲覧。
  9. ^ 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 .
  10. ^ "kernel/git/torvalds/linux.git: KVM: ia64: 削除" .
  11. ^ 「KVM wiki: ゲストサポートステータス」 。 2007年5月27日閲覧
  12. ^ 「Mac OS XをQEMU/KVMゲストとして実行する」 。 2014年8月20日閲覧
  13. ^ "status" . Gnu.org . 2014年2月12日閲覧
  14. ^ 「ゲストサポートステータス - KVM」 . Linux-kvm.org . 2014年2月12日閲覧
  15. ^ 「OpenBSD manページ virtio(4)」 。 2018年2月4日閲覧
  16. ^ 「FreeBSD用のvirtioバイナリパッケージ」 。 2012年10月29日閲覧
  17. ^ 「NetBSD manページ virtio(4)」 。 2019年11月13日時点のオリジナルよりアーカイブ2013年7月15日閲覧。
  18. ^ "plan9front" . 2013年2月11日閲覧。
  19. ^ 「仮想I/O用のAPI:virtio」 . LWN.net . 2007年7月11日. 2014年4月16日閲覧
  20. ^ 「SCSI target for KVM wiki」 linux-iscsi.org. 2012年8月7日. 2020年6月5日時点のオリジナルよりアーカイブ。 2012年8月12日閲覧
  21. ^インタビュー: Avi Kivity Archived 2007-04-26 at the Wayback Machine on KernelTrap
  22. ^ 「Red Hat、Qumranet, Inc.買収で仮想化リーダーシップを強化」 Red Hat、2008年9月4日。 2015年6月16日閲覧
  23. ^ “KVM 15 にライブマイグレーション搭載 | IT World Canada News” . 2007年3月7日. 2019年7月28日時点のオリジナルよりアーカイブ。
  24. ^ Libby Clark (2015年4月7日). 「KVMメンテナーPaolo BonziniによるGit成功事例とヒント」 . Linux.com . 2016年3月15日時点のオリジナルよりアーカイブ2015年6月17日閲覧。
  25. ^ Khoa Huynh、Stefan Hajnoczi (2010). 「KVM/QEMUストレージスタックのパフォーマンスに関する議論」(PDF) . IBM . Linux Plumbers Conference . 2015年1月3日閲覧
  26. ^ "SeaBIOS" . seabios.org. 2013年12月21日. 2020年12月9日時点のオリジナルよりアーカイブ。 2014年6月16日閲覧
  27. ^ 「Red Hat Enterprise Virtualization Manager による仮想 CPU のホットプラグ」 2016 年 2 月 16 日。
  28. ^ 「FAQ - KVM」
  29. ^ 「KVM-15 リリース [LWN.net]」
  30. ^ 「移行 - KVM」
  31. ^ 「Daniel P. Berrangé » ブログアーカイブ » KVM による移行完了を確実にする手法の分析」
  32. ^ 「KVM (カーネルベースの仮想マシン) API の決定版ドキュメント - Linux カーネルのドキュメント」
  33. ^ 「Linuxカーネルのライセンスルール — Linuxカーネルのドキュメント」 www.kernel.org . 2020年3月7日時点のオリジナルよりアーカイブ。 2020年1月6日閲覧

参考文献

  • Amit Shah (2016年11月2日). 「KVMの10年」 . lwn.net . 2017年2月10日閲覧