![cover image](https://wikiwandv2-19431.kxcdn.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/QEMU_6.2_running_NetBSD_and_OpenIndiana_screenshot.png/640px-QEMU_6.2_running_NetBSD_and_OpenIndiana_screenshot.png&w=640&q=50)
基于内核的虚拟机
用于Linux内核中的虚拟化基础设施 / 维基百科,自由的 encyclopedia
基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为KVM)是一种用于Linux内核中的虚拟化基础设施,可将Linux内核转化为一个虚拟机监视器。KVM于2007年2月5日被并入Linux 2.6.20核心中。[1]KVM需要支持硬件虚拟化拓展(英语:hardware-assisted virtualization)特性的处理器。[2]。
![]() | |
![]() | |
原作者 | Qumranet(英语:Qumranet) |
---|---|
开发者 | 开放虚拟化联盟(OVA) |
当前版本 |
![]() |
原始码库 | ![]() |
编程语言 | C |
操作系统 | 类Unix系统 |
平台 | ARM、IA-64、PowerPC、S/390(英语:IBM ESA/390)、x86、x86-64 |
类型 | 虚拟机监视器 |
许可协议 | GNU GPL或LGPL |
网站 | www |
KVM起初支持x86平台处理器并随后被移植到了S/390(英语:IBM ESA/390)、[3]PowerPC、[4]和IA-64平台上。在3.9内核合并时也导入了ARM移植版。[5]
在KVM上可以运行诸多客户操作系统,包括Linux的诸多发行版、BSD、Solaris、Windows、Haiku、ReactOS、Plan 9、AROS研究操作系统(英语: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图形接口。
内部结构
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Kernel-based_Virtual_Machine_zh-CN.svg/320px-Kernel-based_Virtual_Machine_zh-CN.svg.png)
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]
图形管理工具
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Libvirt_support.svg/320px-Libvirt_support.svg.png)
- 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卡,具有Bochs与VESA拓展的虚拟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(英语:ES1370)、Gravis 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 |
存储装置 | IDE、SATA、SCSI、SAS、NVMe、USB和VirtIO |
看门狗计时器 | 英特尔6300ESB或IB700 |
随机存取存储器 | 介于50 MB与32 TB之间 |
中央处理器 | 1 – 160 个CPU |
另请参阅
- CloudStack(英语:CloudStack)
- 虚拟化软件对比(英语:Comparison of platform virtualization software)
- 内核同页合并(英语:Kernel same-page merging) (KSM)
- Lguest(英语:Lguest)
- libguestfs
- libvirt
- 开放虚拟化联盟
- OpenNebula(英语:OpenNebula)
- OpenStack
- oVirt(英语:oVirtoVirt)
- Vx32(英语:Vx32)
- Xen
参考文献
- 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).
- 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].[永久失效链接]
- 来自Ubuntu 7.04的授权资讯/usr/share/doc/kvm/copyright
- Interview: Avi Kivity (页面存档备份,存于互联网档案馆) on KernelTrap(英语: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).
- 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