![Virtual Machine Manager 和 KVM/QEMU 之间有什么关系?](https://linux22.com/image/148782/Virtual%20Machine%20Manager%20%E5%92%8C%20KVM%2FQEMU%20%E4%B9%8B%E9%97%B4%E6%9C%89%E4%BB%80%E4%B9%88%E5%85%B3%E7%B3%BB%EF%BC%9F.png)
之间有什么关系虚拟机管理器和 KVM/QEMU?维基百科链接说
在计算领域,红帽虚拟机管理器,也称为 virt-manager,是一个桌面虚拟机管理器
并将“虚拟机管理器”链接到 https://en.wikipedia.org/wiki/Hypervisor。那么如果 Virtual Machine Manager 是一个虚拟机管理程序,那么 KVM/QEMU 是什么?
- 为什么VirtualBox没有分成与Virtual Machine Manager和KVM/QEMU并行的两个东西?在VirtualBox中,哪一部分类似于Virtual Machine Manager,哪一部分类似于KVM/QEMU?或者 VirtualBox 本身更类似于 Virtual Machine Manager 还是 KVM/QEMU?
- libvirt 是服务器进程,VMM 是客户端进程,对吗?QEMU 对 VMM 来说也是服务器吗?QEMU 和 libvirt 进程之间的关系和区别是什么?这四个组件都是通过 KVM <->QEMU <-> libvirt <-> VMM 进行通信吗?
谢谢。
答案1
我不确定为什么维基百科文章将该特定短语链接到虚拟机管理程序文章;虚拟机管理器在自己的网站上更准确的是:
这虚拟管理器应用程序是一个桌面用户界面,用于通过 libvirt 管理虚拟机。
VMM 本身不是虚拟机管理程序,它是一个用于管理虚拟机(和 LXC 容器)的 GUI。 VMM 及其管理的虚拟机在单独的进程中运行;在 QEMU 的情况下,VMM 和 QEMU 使用 Unix 域套接字进行通信(在
/var/lib/libvirt/qemu
)。VirtualBox 分为多个组件。您可能习惯的 GUI 是一个组件;虚拟机可以单独运行并使用其他工具进行管理,例如 VBox管理。 GUI类似于Virtual Machine Manager,VM引擎类似于KVM/QEMU。它们也在单独的进程中运行。
正如所解释的这里,
libvirtd
是一个守护进程,在您的术语中可能属于服务器进程。 VMM 是一个 libvirt 客户端。 VMM 不直接与 QEMU 通信,因此它不是 QEMU 客户端。 QEMU 运行虚拟机(IE它模拟底层硬件并处理与主机的通信),libvirtd
管理虚拟机(IE它管理映像、存储、启动和停止虚拟机等)。 KVM 在提供硬件管理程序支持的系统上提供硬件加速;当与 KVM 一起运行时,QEMU 不需要处理不可虚拟化的 CPU 指令,硬件会处理它们。您提到的四个组件之间的通信如下:
- QEMU 使用 KVM通过它的
/dev/kvm
设备节点; - libvirt 使用域套接字连接到 QEMU,如上所述;
- 据我所知,VMM 也使用域套接字连接到 libvirt。
整个 libvirt 设置是松散耦合的:即使 VMM 和/或
libvirtd
停止,虚拟机仍会继续运行,并且libvirtd
可以重新连接到它管理的虚拟机(如果它具有虚拟机的 XML 描述符)。- QEMU 使用 KVM通过它的