KVM
ゲストOSのNetBSDOpenIndianaをホストOSのArch Linux上で動作させているQEMU/KVMのスクリーンショット
作者 Qumranet英語版
リポジトリ ウィキデータを編集
プログラミング
言語
C
対応OS Unix-like
プラットフォーム ARMPowerPCS/390x86x86-64RISC-V
種別 仮想化
ライセンス GPL または LGPL
公式サイト www.linux-kvm.org
テンプレートを表示

Kernel-based Virtual Machine (KVM) は、Linuxカーネルハイパーバイザとして機能させるための仮想化モジュールである。Linuxカーネルのメインラインにバージョン2.6.20でマージされ、このカーネルは、2007年2月5日にリリースされた[1]。KVMは、VTAMD-Vなどのハードウェアの仮想化拡張を必要とする[2]。KVMは、他のオペレーティングシステム (OS) であるFreeBSD[3]illumos[4]にも、ローダブル・カーネル・モジュールの形態で移植されている。

KVMはもともとx86プロセッサ向けに設計されたが、後にS/390[5]PowerPC[6]IA-64[7]ARM向けにも移植されている[8]。IA-64のサポートは2014年に終了した。[9]

KVMは、Linux、BSD、SolarisWindowsHaikuReactOSPlan 9AROS Research Operating System[10]macOS[11]など、非常に幅広いゲストOSに対してハードウェア支援仮想化英語版を提供する。また、Android 2.2、GNU/Hurd[12](Debian K16)、Minix 3.1.2a英語版、Solaris 10 U3、Darwin 8.0.1などのOSや上記OSの新しいバージョンでは、何らかの制限の元で動作することが知られている[13]

さらに、KVMでVirtIO[14] APIを利用することで、Linux、OpenBSD[15]、FreeBSD[16]、NetBSD[17]、Plan 9[18]、WindowsのゲストOSに対して、準仮想化の機能も提供する。準仮想化対象には、準仮想イーサネットカード、ディスクI/Oコントローラー[19]、ゲストOSの仮想記憶管理の動作を変更するバルーンデバイス (balloon device)、SPICE英語版またはVMwareを使用したVGAグラフィックインタフェースも含まれる。

歴史

編集

KVMの開発は、テクノロジーのスタートアップであるQumranet英語版で、Avi Kivityにより始められた[20]。Qumranetは、2008年レッドハットに買収された[21]

KVMは、Linuxカーネルのメインラインにバージョン2.6.20でマージされた。このLinuxカーネルは、2007年2月5日にリリースされた[22]

KVMは、Paolo Bonziniによりメンテナンスされている[23]

内部構造

編集
KVM/QEMUによる仮想化環境の全体の概要[24]:3

KVM自体はエミュレーションは全く実行しない。そのかわりに、/dev/kvmインタフェースを公開することによって、ユーザースペースのホストが以下の機能を利用できるようにする。

  • ゲストVMのアドレス空間のセットアップ。ホストは、ゲストがメインOS内にブートストラップするために利用するファームウェアイメージも提供する必要がある。通常、PCをエミュレートする時のカスタムBIOSである。
  • ゲストのシミュレートされたI/Oをフィード。
  • ゲストのビデオディスプレイをシステムホストにマッピング。

Linuxでは、QEMUのバージョン0.10.1以降がユーザー空間のホストの1例である。QEMUは、ゲストをネイティブに近い速度で仮想化できる場合にはKVMを使うが、そうでない場合には、ソフトウェアのみのエミュレーションにフォールバックする[25]

内部では、KVMは、16ビットx86BIOSのオープンソース実装としてSeaBIOS英語版を利用している。

エミュレート対象ハードウェア

編集
種別 デバイス
ビデオカード Cirrus CLGD 5446 PCI VGAカード、Bochs VESA拡張を利用したダミーVGAカード[26]、VirtIO、QXL VGA
PCI I440FX or Q35
入力デバイス PS/2マウスおよびキーボード[26]
サウンドカード Sound Blaster 16英語版、ENSONIQ AudioPCI ES1370英語版 AC97、Gravis Ultrasound GF1英語版、CS4231A compatible[26]、HD Audio
イーサネット ネットワークカード AMD Am79C970A(Am7990英語版)、E1000(Intel 82540EM, 82573L, 82544GC)、NE2000英語版、Realtek RTL8139英語版、VirtIO
ウォッチドッグタイマー Intel 6300ESBまたはIB700
RAM 50 MB - 32 TB
CPU 1 – 160 CPU

グラフィカルな管理ツール

編集
libvirtはKVMをサポートしている
  • Kimchi英語版 – ウェブベースのKVM仮想化管理ツール。
  • Virtual Machine Manager – はKVMベースの仮想マシンの作成、編集、スタート、ストップに対応している。また、ホスト間でドラッグ・アンド・ドロップによるVMのライブまたはコールドマイグレーションもできる。
  • Proxmox Virtual Environment – KVMとLXCを含むオープンソースの仮想化管理パッケージ。ベアメタルのインストーラ、ウェブベースのリモート管理GUI、HAクラスタースタック、統合ストレージ (unified storage)、柔軟なネットワーク管理 (flexible network)、オプションの商用サポートがある。
  • OpenQRM英語版 – ヘテロジニアスなデータセンターのインフラストラクチャーを管理するための管理プラットフォーム。
  • GNOME Boxes – Linux上のlibvirtのゲストを管理するためのGNOMEインタフェース。
  • oVirt英語版 – libvirtを基盤に構築された、KVMのためのオープンソースの仮想化管理ツール。

ライセンス

編集

KVMの各部品は、以下のように様々なGNUライセンスでライセンスされている[27]

  • 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以降

関連項目

編集

脚注・出典

編集
  1. ^ Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM”. kernelnewbies.org (2007年2月5日). 2014年6月16日閲覧。
  2. ^ KVM FAQ: What do I need to use KVM?
  3. ^ FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD”. 2008年10月3日閲覧。
  4. ^ KVM on illumos”. 2011年11月15日閲覧。
  5. ^ Gmane - Mail To News And Back Again”. 2007年9月29日時点のオリジナルよりアーカイブ。2007年5月7日閲覧。
  6. ^ Gmane Loom Archived 2007-09-29 at the Wayback Machine.
  7. ^ Linux_2_6_26 -Linux Kernel Newbies”. kernelnewbies.org. 2025年9月22日閲覧。
  8. ^ KVM/ARM Open Source Project
  9. ^ KVM: ia64: remove”. kernel.org. 2025年9月22日閲覧。
  10. ^ KVM wiki: Guest support status”. 2007年5月27日閲覧。
  11. ^ Running Mac OS X as a QEMU/KVM Guest”. 2014年8月20日閲覧。
  12. ^ status”. Gnu.org. 2014年2月12日閲覧。
  13. ^ Guest Support Status - KVM”. Linux-kvm.org. 2014年2月12日閲覧。
  14. ^ An API for virtual I/O: virtio”. LWN.net (2007年7月11日). 2014年4月16日閲覧。
  15. ^ OpenBSD man page virtio(4)”. 2018年2月4日閲覧。
  16. ^ virtio binary packages for FreeBSD”. 2012年10月29日閲覧。
  17. ^ NetBSD man page virtio(4)”. 2013年7月15日閲覧。
  18. ^ plan9front”. 2013年2月11日閲覧。
  19. ^ SCSI target for KVM wiki”. linux-iscsi.org (2012年8月7日). 2012年8月12日閲覧。
  20. ^ Interview: Avi Kivity Archived 2007-04-26 at the Wayback Machine. on KernelTrap
  21. ^ Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition”. レッドハット (2008年9月4日). 2015年6月16日閲覧。
  22. ^ Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM”. kernelnewbies.org (2007年2月5日). 2014年6月16日閲覧。
  23. ^ Libby Clark (2015年4月7日). “Git Success Stories and Tips from KVM Maintainer Paolo Bonzini”. Linux.com. 2015年6月17日閲覧。
  24. ^ KVM/QEMU Storage Stack Performance Discussion” (PDF). ibm.com. Linux Plumbers Conference (2010年). 2015年1月3日閲覧。[リンク切れ]
  25. ^ SeaBIOS”. seabios.org (2013年12月21日). 2014年6月16日閲覧。
  26. ^ a b c wiki.qemu.org – QEMU Emulator User Documentation, read 2010-05-06
  27. ^ Ubuntu 7.04 /usr/share/doc/kvm/copyright からのライセンス情報

外部リンク

編集

📚 Artikel Terkait di Wikipedia

Visual Studio Code

ドはフリーかつオープンソースで、寛容なMITライセンスの下でリリースされている。コンパイルされたバイナリはプロプライエタリソフトウェアである。 Stack Overflow 2024 Developer Surveyでは、Visual Studio Codeが最も使用されている統合開発環境(エディ

OpenStack

OpenStack は、クラウドコンピューティングのためのオープンソース・フリーソフトウェアであり、クラウドの分類のIaaSサービスとして仮想マシンやその他のリソースを提供する。 OpenStackは、データセンター全体の処理、ストレージ、およびネットワークリソースのマルチベンダーハードウェアプー

スタックマシン

スタックマシン(英: stack machine)とは、計算機科学、計算機工学、プログラミング言語実装という分野において、メモリがスタックの形式になっている計算モデルを意味する。 スタックマシンを実装あるいはシミュレートしている実在のコンピュータもスタックマシンと呼ぶ。

Microsoft Azure

Azure Arc Azure ExpressRoute Azure Sentinel Azure Stack Azure Stack HCI Azure Stack Hub Azure Stack Edge Azure Modular Data Center Windows Virtual Desktop

バッファオーバーフロー

1996年、エリアス・レヴィ(ハンドルネームAleph one)はオンラインマガジンPhrackで記事"Smashing the Stack for Fun and Profit"を発表した。 これはスタックベースのバッファオーバーフローを使用したエクスプロイトを手順を追って説明していく内容である。

Z/VM

z/VM V6.2発表。2013年7月 z/VM V6.3発表、実メモリ 1TBサポート、OpenStack採用など。 2013年7月 z/VM v6.3 発表。実メモリー 1TBのサポート、OpenStack強化など。 2016年10月 z/VM V6.4 発表。実メモリー 2TBのサポートなど。 2020年4月

マリナ・ヴィヤゾフスカ

shows how to stack oranges in 24 dimensions”, New Scientist, https://www.newscientist.com/article/2082328-new-maths-proof-shows-how-to-stack-oranges-in-24-dimensions/ 

GNU Guile

Scheme stack frames. For simplicity, Guile's implementation of call/cc copies the entire C stack into the heap; invoking a continuation copies the stack back