基於內核的虛擬機器
基於內核的虛擬機器(英語:Kernel-based Virtual Machine,縮寫為KVM)是一種用於Linux內核中的虛擬化基礎設施,可將Linux內核轉化為一個虛擬機器監視器。KVM於2007年2月5日被併入Linux 2.6.20核心中。[1]KVM需要支援硬件虛擬化拓展特性的處理器。[2]。
原作者 | Qumranet |
---|---|
開發者 | 開放虛擬化聯盟(OVA) |
目前版本 |
|
原始碼庫 | |
程式語言 | C |
作業系統 | 類Unix系統 |
平台 | ARM、IA-64、PowerPC、S/390、x86、x86-64 |
類型 | 虛擬機器監視器 |
特許條款 | GNU GPL或LGPL |
網站 | www |
KVM起初支援x86平台處理器並隨後被移植到了S/390、[3]PowerPC、[4]和IA-64平台上。在3.9內核合併時也匯入了ARM移植版。[5]
在KVM上可以執行諸多客戶作業系統,包括Linux的諸多發行版、BSD、Solaris、Windows、Haiku、ReactOS、Plan 9、AROS研究作業系統[6]和OS X。[7]除此之外,還支援Android 2.2、GNU/Hurd[8](Debian K16)、Minix 3.1.2a、Solaris 10 U3和Darwin 8.0.1,而其他作業系統或新版作業系統都支援KVM,僅僅存在一些限制而已。[9]
VirtIO半虛擬化 在Linux、OpenBSD、[10]FreeBSD、[11] NetBSD、[12]Windows上支援對部分裝置的半虛擬化。這項特性支援半虛擬化的網卡、半虛擬化的磁碟控制器、[13]用於調整客戶端主記憶體使用的氣球裝置(Balloon device)和使用獨立計算環境簡單協定的VGA圖形介面。
內部結構
KVM提供抽象的裝置,但不模擬處理器。它開放了/dev/kvm介面,供用戶模式的主機使用:
- 設置客戶虛擬機器的地址空間。宿主機同樣也需用戶可用於引導進主作業系統的韌體鏡像(通常為模擬PC時的自訂BIOS)。
- 為客戶機模擬I/O。
- 將客戶機的影片顯示對映回系統宿主機上。
在Linux上,QEMU版本0.10.1及更新版就是一個用戶層主機。QEMU使用KVM以近乎原生的速度虛擬化客戶機,若無KVM的話則將僅使用軟件模擬。
授權
KVM的組件使用多個GNU協定授權:[16]
- 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或更新
歷史
阿維·齊維迪(Avi Kivity)在一家名為Qumranet的初創企業開始了KVM的研發工作[17],隨後此公司於2008年被紅帽公司收購。[18]
KVM被合併入Linux內核版本2.6.20的主流分支,於2007年2月5日釋出。[1]
KVM現由保羅·邦齊尼(Paolo Bonzini)維護。[19]
圖形管理工具
- Kimchi – 網頁版KVM虛擬化管理工具
- Virtual Machine Manager – 支援建立、編輯、啟動與停止基於KVM的虛擬機器,同時也支援對宿主之間的即時或冷拖拽虛擬機器遷移。
- Proxmox虛擬環境 – 一項開源的虛擬化管理包,包括KVM與LXC。同時它還有裸機安裝器、網頁版遠端管理介面、HA叢集堆疊、統一儲存、柔性網絡及可選的商業支援。
- OpenQRM – 用於管理不同數據中心基礎設施的平台。
- GNOME 機櫃 – Linux上用於管理libvirt客戶機的Gnome介面。
- oVirt – 用於管理基於libvirt的KVM開源工具。
模擬硬件
分類 | 裝置 |
---|---|
顯示卡 | Cirrus CLGD 5446 PCI VGA卡,具有Bochs與VESA拓展的虛擬VGA卡[20],QXL顯示卡,使用Virgil作為虛擬3D CPU。[21] |
外設組件互連標準 | i440FX主機及PCI橋與PIIX3 [20];Intel Q35與ICH9。 |
輸入裝置 | PS/2鍵鼠[20],USB鍵鼠 |
音效卡 | Sound Blaster 16、ENSONIQ AudioPCI ES1370、Gravis Ultrasound GF1、CS4231A相容裝置[20],Intel HD Audio |
乙太網路 網卡 | AMD Am79C970A (Am7990)、E1000(Intel 82540EM, 82573L, 82544GC)、NE2000、瑞昱RTL8139、Red Hat VirtIO |
儲存裝置 | IDE、SATA、SCSI、SAS、NVMe、USB和VirtIO |
看門狗計時器 | 英特爾6300ESB或IB700 |
隨機存取記憶體 | 介於50 MB與32 TB之間 |
中央處理器 | 1 – 160 個CPU |
另請參閱
參考文獻
- ^ 1.0 1.1 Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM. kernelnewbies.org. 2007-02-05 [2014-06-16]. (原始內容存檔於2015-07-16).
- ^ KVM FAQ: What do I need to use KVM?. [2018-08-14]. (原始內容存檔於2020-11-25).
- ^ Gmane - Mail To News And Back Again. [2014-09-16]. (原始內容存檔於2007-09-29).
- ^ Gmane Loom. [2014-09-16]. (原始內容存檔於2007-09-29).
- ^ KVM/ARM Open Source Project. [2018-08-14]. (原始內容存檔於2013-03-10).
- ^ KVM wiki: Guest support status. [2007-05-27]. (原始內容存檔於2020-11-25).
- ^ Running Mac OS X as a QEMU/KVM Guest. [2014-08-20]. (原始內容存檔於2020-11-08).
- ^ status. Gnu.org. [2014-02-12]. (原始內容存檔於2020-11-12).
- ^ Guest Support Status - KVM. Linux-kvm.org. [2014-02-12]. (原始內容存檔於2020-11-25).
- ^ OpenBSD man page virtio(4). [2018-02-04]. (原始內容存檔於2020-11-12).
- ^ virtio binary packages for FreeBSD. [2012-10-29]. (原始內容存檔於2020-09-29).
- ^ NetBSD man page virtio(4). [2013-07-15]. (原始內容存檔於2019-11-13).
- ^ SCSI target for KVM wiki. linux-iscsi.org. 2012-08-07 [2012-08-12]. (原始內容存檔於2020-06-05).
- ^ Khoa Huynh; Stefan Hajnoczi. KVM/QEMU Storage Stack Performance Discussion (PDF). ibm.com. Linux Plumbers Conference. 2010 [January 3, 2015].[永久失效連結]
- ^ SeaBIOS. seabios.org. 2013-12-21 [2014-06-16]. (原始內容存檔於2020-12-09).
- ^ 來自Ubuntu 7.04的授權資訊/usr/share/doc/kvm/copyright
- ^ Interview: Avi Kivity (頁面存檔備份,存於互聯網檔案館) on KernelTrap
- ^ Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition. Red Hat. 4 September 2008 [16 June 2015]. (原始內容存檔於2020-09-25).
- ^ Libby Clark. Git Success Stories and Tips from KVM Maintainer Paolo Bonzini. Linux.com. 7 April 2015 [17 June 2015]. (原始內容存檔於2016-03-15).
- ^ 20.0 20.1 20.2 20.3 wiki.qemu.org – QEMU Emulator User Documentation (頁面存檔備份,存於互聯網檔案館), read 2010-05-06
- ^ Introducing Virgil - 3D virtual GPU for qemu. 2013-07-18 [2018-08-14]. (原始內容存檔於2013-07-25).
書刊目錄
- Amit Shah. Ten years of KVM. lwn.net. 2016-11-02 [2017-02-10]. (原始內容存檔於2020-11-25).
外部連結
- 官方網站
- Best practices for the Kernel-based Virtual Machine (頁面存檔備份,存於互聯網檔案館), IBM, second edition, April 2012
- Virtio-blk Performance Improvement, KVM Forum 2012, November 8, 2012, by Asias He
- Wikibook QEMU & KVM