我调查了这个话题,这是我的结论(但我仍然有疑问,如果我的结论有任何错误,请纠正我):
虚拟机:
VMWare 在 1999 年开发了它的 VM Hypervisor SW,但它是专有的。
QEMU:
在 VMWare 之后 4 年后,法国开发人员 Fabrice Bellard 在 2003 年开发了 QEMU(快速仿真器)Hyporvisor,并使其免费和开源。经过多年的社区发展,QEMU 成为了“完全虚拟化”的 2 类管理程序。
- QEMU 能够模拟各种硬件,包括 CPU 和 I/O 设备。
- QEMU 能够将发送到 VM 的 vCPU 的指令解释为真实指令并将它们发送到物理 CPU。
- 一些 QEMU 仿真设备被 VirtualBox 等虚拟化软件广泛使用。
- QEMU 有自己的 GUI 和 CLI。
QEMU 无需任何其他 VM SW 即可独立运行。
硬件虚拟化:
英特尔和 AMD 都在 2006 年推出了他们的硬件虚拟化技术(VT-x 和 AMD-V)。
虚拟机:
2006 年,一家小公司(2 年后在 2008 年被 Red Hat 收购)开发了一个名为“KVM”的 Linux 可加载内核模块,它能够使用前面提到的硬件虚拟化技术创建 VM。然后在 2007 年正式合并到 Linux 内核中。
- KVM 不模拟 vCPU,而是使用物理 CPU 提供的硬件虚拟化技术。
- 作为 Linux 内核,KVM 既没有 GUI 也没有 CLI。必须编写 C 代码来调用 KVM 模块来创建 VM,使其对最终用户无用。
- KVM 被视为 Hypervisor。
KVM 能够独立创建 VM,无需任何 Hypervisor(如 QEMU)的支持。
库:
由于市场上有许多 Hypervisor,libvirt 是在 2005 年底开发的,用于统一创建和管理 VM 的 API 和 CLI。从最终用户的角度来看,它提供了 CLI 工具,例如:
- 虚拟
- 虚拟管理器
- 虚拟安装
libvirt 本身并不创建或管理虚拟机,而是将用户发出的命令映射到对底层 Hypervisor 的一个或一系列 API 调用。
libvirt 是免费和开源的。
虚拟经理:
人们在使用 KVM 创建 VM 时,可能会看到这样的画面:
以前我把这个软件看成是KVM的GUI,但经过我的调查,我发现它是另一个名为“虚拟机管理器”的软件,如标题所示。它也被称为 virt-manager。virt-manager 由 Red Hat 提供支持。
根据其网站,virt-manager 主要针对 KVM 虚拟机,但也管理 Xen 和 LXC。请参阅Virtual Machine Manager 官方网站。
virt-manager 建立在 libvirt 之上。即它专注于用户界面(GUI 和 CLI)。对于底层的VM管理,简单的调用libvirt,最终调用底层的Hypervisor,比如KVM。
我的问题:
- 我的结论有什么错误吗?
- 为什么我创建 KVM 虚拟机时 virt-manager GUI 在其 VM 列表中显示“localhost (QEMU)”或“QEMU/KVM”?
- libvirt 声称几乎所有以 virt-* 开头的虚拟化工具都是 libvirt 工具,尤其是 virt-manager 和 virt-install。请参阅lib-virt 常见问题解答。但是 virt-manager alcal virt-install 是 virt-manager 的一部分。请参阅virt-manager 网站。那么哪一个是正确的呢?virt-install 和 virt-manager 到底属于什么?
- 有些文章谈到了 qemu-kvm,但根据我的调查,它们只是两个不同的 Hypervisor。我可以独立使用 KVM 来创建虚拟机,那我为什么要使用 qemu-kvm?什么是 qemu-kvm?它是一个在必要时使用一些 KVM 功能的 QEMU,还是一个必须使用一些 QEMU 功能的 KVM,否则它将无法创建 VM?