Xen、 QEMU 和 KVM 有什么区别?

我知道 Xen 使用 QEMU,KVM 是 QEMU 的分支。

那么,KVM 包含了 Xen 添加到 QEMU 的内容吗? 它的名字是什么?

谢谢

59752 次浏览

QEMU 是一个强大的仿真器,这意味着它可以仿真各种处理器类型。

Xen 为 HVM客户机使用 QEMU,更具体地说是为 HVM 客户机的设备模型使用 QEMU。特定于 Xen 的 QEMU 称为 QEMU-dm (QEMU 设备模型的缩写)

QEMU 使用仿真; KVM 使用处理器扩展(HVM)进行虚拟化。

Xen 和 KVM 合并各自对上游 QEMU 的各种功能,这样就可以直接利用上游 QEMU 来完成 Xen 设备模型的仿真等。

Xen 的独特之处在于它拥有不需要硬件虚拟化的 半虚拟化客户端。

Xen 和 KVM 都有半虚拟化的设备驱动程序,可以在 HVM 客户机上运行。

以上的答案是深入的,技术性的。我试着用简单的外行人的术语来表达。

Qemu 是一个可以使用或不使用 KVM 的模拟器,它是一个加速器(Linux 内核模块,允许客户指令直接在主机 CPU 上运行) ,这使得 Qemu + KVM 成为一个更快的解决方案,不像 Qemu + TCG 那样速度较慢。

Xen 是一个具有不同模式(虚拟化类型)的裸金属虚拟机监控程序。顺便说一句,裸金属是一个误导性的术语。所有类型 II/托管或类型 I/裸金属的虚拟机监控程序都需要一个底层操作系统。所以裸金属也有一个非常薄的裸最小操作系统层,就像虚拟机监控程序使用的层一样。

Xen PV 或半虚拟化——不需要硬件模拟,客户内核被修改,这样客户就可以在底层的 Xen hypervisor 上检测/运行。

Xen hVM 或者完全虚拟化的硬件模拟是必需的,只能在支持虚拟化 Intel-VT 等的 CPU 上实现,修改后的 Qemu 用于硬件模拟(磁盘、网络、 USB 控制器等) ,客户内核不会被修改。

通常,模拟虚拟化(完全)比修改后的内核虚拟化(para)慢。通过在客户内核中安装专用驱动程序(PV 驱动程序) ,可以提高完全虚拟化客户机的性能。

KVM 是一个作为内核模块的 hypervisor,它模拟 vmon、 wrmsr、 vmwrite 等特殊指令。它像管理虚拟 CPU 一样管理虚拟机。虽然它可以模拟一些虚拟设备,但最好在用户模式下模拟这些设备。所以 QEMU 模拟这些设备,比如网卡、存储设备、 USB 控制器等等。我们可以在主机内核中模拟 virtio 操作来使用 vhost 加速网络。

因为 KVM 是一个内核模块,所以 Host OS 直接管理硬件而不是 hypervisor。比如下面图片的左边部分。

Xen 是一个半虚拟化平台。它的系统管理程序直接管理硬件。在引导 hypervisor 之后,hypervisor 创建一个根虚拟机作为主机。引导新的虚拟机时,VM 运行在与宿主相同的级别。

虚拟设备可以在主机的用户端使用 QEMU 进行仿真。它们也可以在主机的内核中进行仿真。

enter image description here