https://en.wikipedia.org/wiki/Hypervisor#Classification说 QEMU 是类型 2 虚拟机管理程序,而 KVM 可以是类型 1 和类型 2 虚拟机管理程序:
这两种类型之间的区别并不总是很清楚。例如,Linux 的基于内核的虚拟机 (KVM) 和 FreeBSD 的 bhyve 都是内核模块[6],可以有效地将主机操作系统转换为1 型 hypervisor.[7]同时,由于 Linux 发行版和 FreeBSD 仍然是通用操作系统,应用程序相互竞争 VM 资源、KVM 和 bhyve 也可以归类为 2 类管理程序。
“Linux 发行版和 FreeBSD 仍然是通用操作系统,应用程序相互竞争 VM 资源”为何是 KVM 成为 2 类虚拟机管理程序的原因?
https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine说
通过它自己,KVM不执行任何模拟。相反,它公开了 /dev/kvm 接口,用户空间主机可以使用该接口来:
- 设置来宾虚拟机的地址空间。主机还必须提供固件映像(在模拟 PC 时通常是自定义 BIOS),来宾可以使用该固件映像来引导至其主操作系统。
- 为来宾提供模拟 I/O。
- 将访客的视频显示映射回系统主机。
在 Linux 上,QEMU 版本 0.10.1 及更高版本就是此类用户空间主机之一。 QEMU 在可用时使用 KVM 以接近本机的速度虚拟化来宾,但否则会回退到纯软件模拟。
如果“KVM不执行任何仿真”,KVM是否可以管理程序
虚拟机管理程序或虚拟机监视器 (VMM) 是创建和运行虚拟机的计算机软件、固件或硬件。
?
如果没有 QEMU 等其他虚拟机管理程序,KVM 是否可以作为虚拟机管理程序工作?
libvirt 也可以直接与 KVM 一起工作,而不需要 QEMU 吗?
答案1
“Linux 发行版和 FreeBSD 仍然是通用操作系统,应用程序相互竞争 VM 资源”为何是 KVM 成为 2 类虚拟机管理程序的原因?
类型 1/类型 2 虚拟机管理程序的严格解释是
- 类型 1 虚拟机管理程序单独运行,任何用户级应用程序都在虚拟机管理程序管理的来宾操作系统内运行;
- 类型 2 虚拟机管理程序在主机操作系统之上运行,可以继续与虚拟机管理程序管理的任何来宾一起使用。
在实践中这种区别并不那么明确。例如,被广泛认为是 1 类虚拟机管理程序的 Xen 仍然需要“Dom0”Linux 来宾的帮助来管理系统资源;所以它在裸机上并不是完全自主的。
同样,KVM 可以被视为 2 类虚拟机管理程序,因为它运行在主机操作系统(Linux 内核)之上,并且该主机操作系统可以与 KVM 管理的任何 VM 一起运行其他进程。
如果“KVM 不执行任何仿真”,KVM 可以成为虚拟机管理程序吗?
是的,虚拟机管理程序并不意味着模拟。
如果没有 QEMU 等其他虚拟机管理程序,KVM 是否可以作为虚拟机管理程序工作?
是的,请参阅这篇 LWN 文章举个例子。
libvirt 也可以直接与 KVM 一起工作,而不需要 QEMU 吗?
不可以,仅支持KVM 与 QEMU。