基於內核的虛擬機

維基百科,自由的百科全書
(重新導向自Linux KVM
跳至導覽 跳至搜尋
KVM
File:Kvmbanner-logo2 1.png
在Arch Linux宿主機上使用QEMU/KVM運行NetBSD和OpenIndiana客戶機的截圖。
Arch Linux宿主機上使用QEMU/KVM運行NetBSDOpenIndiana客戶機的截圖。
原作者Qumranet英語Qumranet
開發者開放虛擬化聯盟(OVA)
當前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    源代碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    編程語言C
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      操作系統類Unix系統
      平台ARMIA-64PowerPCS/390英語IBM ESA/390x86x86-64
      類型虛擬機監視器
      許可協議GNU GPLLGPL
      網站www.linux-kvm.org

      基於內核的虛擬機(英語:Kernel-based Virtual Machine,縮寫為KVM)是一種用於Linux內核中的虛擬化基礎設施,可將Linux內核轉化為一個虛擬機監視器。KVM於2007年2月5日被併入Linux 2.6.20核心中。[1]KVM需要支持硬件虛擬化拓展英語hardware-assisted virtualization特性的處理器。[2]

      KVM起初支持x86平台處理器並隨後被移植到了S/390英語IBM ESA/390[3]PowerPC[4]IA-64平台上。在3.9內核合併時也導入了ARM移植版。[5]

      在KVM上可以運行諸多客戶操作系統,包括Linux的諸多發行版、BSD、SolarisWindowsHaikuReactOSPlan 9AROS研究操作系統英語AROS Research Operating System[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半虛擬化英語Paravirtualization 在Linux、OpenBSD、[10]FreeBSD、[11]NetBSD、[12]Windows上支持對部分設備的半虛擬化英語Paravirtualization。這項特性支持半虛擬化的網卡、半虛擬化的磁盤控制器、[13]用於調整客戶端內存使用的氣球設備(Balloon device)和使用獨立計算環境簡單協議的VGA圖形接口。

      內部結構[編輯]

      File:Kernel-based Virtual Machine zh-CN.svg
      KVM/QEMU環境的高級概述[14]: 3 

      KVM提供抽象的設備,但不模擬處理器。它開放了/dev/kvm接口,供使用者模式的主機使用:

      • 設定客戶虛擬機的地址空間。宿主機同樣也需用戶可用於引導進主操作系統的固件鏡像(通常為模擬PC時的自定義BIOS)。
      • 為客戶機模擬I/O。
      • 將客戶機的視頻顯示映射回系統宿主機上。

      在Linux上,QEMU版本0.10.1及更新版就是一個用戶層主機。QEMU使用KVM以近乎原生的速度虛擬化客戶機,若無KVM的話則將僅使用軟件模擬。

      KVM內部使用SeaBIOS英語SeaBIOS作為對16位x86 BIOS的開源模擬。[15]

      授權[編輯]

      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英語Qumranet初創企業開始了KVM的研發工作[17],隨後此公司於2008年被紅帽公司收購。[18]

      KVM被合併入Linux內核版本2.6.20的主流分支,於2007年2月5日發布。[1]

      KVM現由保羅·邦齊尼(Paolo Bonzini)維護。[19]

      圖形管理工具[編輯]

      File:Libvirt support.svg
      libvirt支持KVM
      • Kimchi英語Kimchi (software) – 網頁版KVM虛擬化管理工具
      • Virtual Machine Manager – 支持創建、編輯、啟動與停止基於KVM的虛擬機,同時也支持對宿主之間的實時或冷拖拽虛擬機遷移。
      • Proxmox虛擬環境 – 一項開源的虛擬化管理包,包括KVM與LXC。同時它還有裸機安裝器、網頁版遠程管理界面、HA集群堆棧、統一存儲、柔性網絡及可選的商業支持。
      • OpenQRM英語OpenQRM – 用於管理不同數據中心基礎設施的平台。
      • GNOME 機櫃 – Linux上用於管理libvirt客戶機的Gnome界面。
      • oVirt英語oVirt – 用於管理基於libvirt的KVM開源工具。

      模擬硬件[編輯]

      分類 設備
      顯示卡 Cirrus CLGD 5446 PCI VGA卡,具有BochsVESA拓展的虛擬VGA卡[20],QXL顯示卡,使用Virgil英語Virgil (software)作為虛擬3D CPU。[21]
      外設組件互連標準 i440FX英語Intel 440FX主機及PCI橋PIIX3英語PIIX3 [20];Intel Q35與ICH9。
      輸入設備 PS/2鍵鼠[20],USB鍵鼠
      聲卡 Sound Blaster 16英語Sound Blaster 16、ENSONIQ AudioPCI ES1370英語ES1370Gravis Ultrasound GF1英語Gravis Ultrasound GF1、CS4231A兼容設備[20],Intel HD Audio
      以太網 網卡 AMD Am79C970A (Am7990英語Am7990)、E1000(Intel 82540EM, 82573L, 82544GC)、NE2000、瑞昱RTL8139英語RTL8139、Red Hat VirtIO
      儲存裝置 IDESATASCSISASNVMeUSB和VirtIO
      看門狗計時器 英特爾6300ESB或IB700
      隨機存取存儲器 介於50 MB與32 TB之間
      中央處理器 1 – 160 個CPU

      另請參閱[編輯]

      參考文獻[編輯]

      1. ^ 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). 
      2. ^ KVM FAQ: What do I need to use KVM?. [2018-08-14]. (原始內容存檔於2020-11-25). 
      3. ^ Gmane - Mail To News And Back Again. [2014-09-16]. (原始內容存檔於2007-09-29). 
      4. ^ Gmane Loom. [2014-09-16]. (原始內容存檔於2007-09-29). 
      5. ^ KVM/ARM Open Source Project. [2018-08-14]. (原始內容存檔於2013-03-10). 
      6. ^ KVM wiki: Guest support status. [2007-05-27]. (原始內容存檔於2020-11-25). 
      7. ^ Running Mac OS X as a QEMU/KVM Guest. [2014-08-20]. (原始內容存檔於2020-11-08). 
      8. ^ status. Gnu.org. [2014-02-12]. (原始內容存檔於2020-11-12). 
      9. ^ Guest Support Status - KVM. Linux-kvm.org. [2014-02-12]. (原始內容存檔於2020-11-25). 
      10. ^ OpenBSD man page virtio(4). [2018-02-04]. (原始內容存檔於2020-11-12). 
      11. ^ virtio binary packages for FreeBSD. [2012-10-29]. (原始內容存檔於2020-09-29). 
      12. ^ NetBSD man page virtio(4). [2013-07-15]. (原始內容存檔於2019-11-13). 
      13. ^ SCSI target for KVM wiki. linux-iscsi.org. 2012-08-07 [2012-08-12]. (原始內容存檔於2020-06-05). 
      14. ^ Khoa Huynh; Stefan Hajnoczi. KVM/QEMU Storage Stack Performance Discussion (PDF). ibm.com. Linux Plumbers Conference. 2010 [January 3, 2015]. [永久失效連結]
      15. ^ SeaBIOS. seabios.org. 2013-12-21 [2014-06-16]. (原始內容存檔於2020-12-09). 
      16. ^ 來自Ubuntu 7.04的授權信息/usr/share/doc/kvm/copyright
      17. ^ Interview: Avi Kivity頁面存檔備份,存於網際網路檔案館) on KernelTrap英語KernelTrap
      18. ^ Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition. Red Hat. 4 September 2008 [16 June 2015]. (原始內容存檔於2020-09-25). 
      19. ^ Libby Clark. Git Success Stories and Tips from KVM Maintainer Paolo Bonzini. Linux.com. 7 April 2015 [17 June 2015]. (原始內容存檔於2016-03-15). 
      20. ^ 20.0 20.1 20.2 20.3 wiki.qemu.org – QEMU Emulator User Documentation頁面存檔備份,存於網際網路檔案館), read 2010-05-06
      21. ^ Introducing Virgil - 3D virtual GPU for qemu. 2013-07-18 [2018-08-14]. (原始內容存檔於2013-07-25). 

      書刊目錄[編輯]

      外部連結[編輯]

      Module:Authority_control第183行Lua錯誤:attempt to index field 'wikibase' (a nil value)