Xen PV、Xen KVM 和 HVM 的区别?

55 virtualization xen vps kvm-virtualization

我知道 Xen 通常比 OpenVZ 好,因为提供商不能在 Xen 中超卖。但是,Xen PV,Xen KVMHVM(我正在查看该提供商的规格?哪个更适合用于什么目的以及为什么?有什么区别?


编辑:

对于仅托管网站的最终用户来说,哪个更好?从效率或其他角度来看,一个比另一个有什么优势吗?

dya*_*sny 50

Xen 支持的虚拟化类型

Xen 支持运行两种不同类型的来宾。Xen 来宾通常称为 domU(非特权域)。可以在单个 Xen 系统上同时使用两种客户机类型(PV、HVM)。

Xen 半虚拟化 (PV)

半虚拟化是 Xen 引入的一种高效、轻量级的虚拟化技术,后来也被其他虚拟化解决方案采用。半虚拟化不需要来自主机 CPU 的虚拟化扩展。然而,半虚拟化来宾需要特殊的内核,该内核被移植到本地运行在 Xen 上,因此来宾知道虚拟机管理程序并且可以在没有仿真或虚拟仿真硬件的情况下高效运行。Xen PV 来宾内核适用于 Linux、NetBSD、FreeBSD、OpenSolaris 和 Novell Netware 操作系统。

PV 来宾没有任何类型的虚拟仿真硬件,但图形控制台仍然可以使用来宾 pvfb(半虚拟帧缓冲区)。可以使用 VNC 客户端或 Redhat 的 virt-viewer 查看 PV 来宾图形控制台。dom0 中有一个单独的 VNC 服务器,用于每个来宾的 PVFB。

自 Linux 2.6.24 以来的上游 kernel.org Linux 内核包括基于 Linux pvops 框架的 Xen PV 来宾 (domU) 支持,因此每个上游 Linux 内核都可以自动用作 Xen PV 来宾内核,无需任何额外的补丁或修改。

有关 Linux pvops Xen 支持的更多信息,请参阅 XenParavirtOps 维基页面。

Xen 全虚拟化 (HVM)

完全虚拟化又名 HVM(硬件虚拟机)来宾需要来自主机 CPU(Intel VT、AMD-V)的 CPU 虚拟化扩展。Xen 使用 Qemu 的修改版本来模拟完整的 PC 硬件,包括用于 HVM 来宾的 BIOS、IDE 磁盘控制器、VGA 图形适配器、USB 控制器、网络适配器等。CPU 虚拟化扩展用于提高仿真性能。完全虚拟化的来宾不需要特殊的内核,因此例如 Windows 操作系统可以用作 Xen HVM 来宾。由于需要模拟,完全虚拟化的客户通常比半虚拟化的客户慢。

为了提高性能,完全虚拟化的 HVM 来宾可以使用特殊的半虚拟设备驱动程序来绕过磁盘和网络 IO 的模拟。Xen Windows HVM 来宾可以使用开源 GPLPV 驱动程序。有关适用于 Linux HVM 来宾的 Xen PV-on-HVM 驱动程序的更多信息,请参阅 XenLinuxPVonHVMdrivers wiki 页面。

这是来自http://wiki.xenproject.org/wiki/XenOverview

KVM 根本不是 Xen,它是另一种技术,其中 KVM 是 Linux 原生内核模块,而不是像 Xen 那样的附加内核。这使 KVM 成为更好的设计。这里的缺点是 KVM 比 Xen 更新,因此它可能缺少某些功能。

  • +1 KVM 根本不是 Xen。完全不同意 KVM 是更好的设计。Xen 提供了更好的隔离,并且不依赖于 Linux 内核及其潜在的漏洞。 (10认同)
  • Xen 有它自己的弱点。但是运行带有两个自举内核的操作系统是一个设计缺陷,无论你做得多好 (3认同)
  • 谢谢(你的)信息!我无法理解所有。从最终用户的角度来看,谁将托管网站,哪个更好?一个比另一个有明显的优势吗? (2认同)
  • Xen 是管理程序,KVM 也是。KVM 有 PV 设备,随着时间的推移会增加更多,它还允许 PCI 直通。所以我看不出你的论点有什么意义,尼尔斯 (2认同)

Luk*_*404 35

Xen 是在金属(PC/服务器)上运行的管理程序,然后托管称为域的虚拟机。

一个Xen PV域是半虚拟化领域,这意味着操作系统(通常是我们谈论的Linux这里)已被修改,以在Xen下运行,而且也无需实际模拟硬件。这应该是最有效的方法,性能明智。

一个Xen HVM域名是硬件仿真领域,这意味着操作系统(可能是Linux的窗口,等等)并没有以任何方式被修改,硬件得到效仿。这相当慢,因此通常您在客户机操作系统中为关键硬件(通常是磁盘和网络)安装PV 驱动程序,因此客户机作为一个整体将运行完全虚拟化,但对性能最关键的硬件将运行半虚拟化。最近的linux系统内核都有磁盘和网络的pv驱动,Windows也有各种PV驱动。随着近年来 HVM 的所有发展,对于标准工作负载,HVM 和 PV 之间的性能通常几乎没有差异。

KVM不是 Xen,它是另一个构建在 Linux 内核中的虚拟化平台。从来宾的角度来看,它类似于 Xen HVM:来宾运行完全虚拟化,并且有特定的驱动程序来运行半虚拟化的某些部分(同样,磁盘和网络)。

Xen HVM 和 Linux KVM 都需要硬件辅助虚拟化支持(Intel VT-x、AMD AMD-V),而 Xen PV 没有但不能运行没有 PV 支持的操作系统(你不能在 Xen PV 上运行 Windows)。

Xen HVM 和 Linux KVM 都将使用 qemu 虚拟化软件的一部分来模拟未在来宾系统中使用 PV 驱动程序的设备的实际硬件。

Xen(PV 和 HVM)可以将正在运行的客户机从一台物理服务器实时迁移到另一台物理服务器,我不知道 KVM 是否也可以。

Xen 和 KVM 都不能过度使用内存,因此您通常会获得“真正的 RAM”,而其他平台(如 VMware)可以将部分来宾 ram 交换到磁盘。

存在差异,但通常适用于特定安装,而不适用于出售给其他人的通用虚拟专用服务器。例如,最近的 Xen 管理程序支持超验内存,如果来宾支持它(linux 内核 >= 3.something),可以提高内存利用率和来宾性能。

如果正确实施,所有这些技术都将为您提供出色的体验,并且从您的角度来看不会产生太大的影响。当然,出现问题的方式有千百种,这与特定的虚拟化解决方案无关(即,您的来宾可能存储在慢速磁盘上,这会损害您的性能)。

  • KVM 可以过量使用内存,Xen 也可以。 (4认同)
  • @dyasny 你可能认为 *overcommit* 允许更高的最大值。AFAIK,公认的意思是实际分配给来宾的内存比主机中实际存在的内存多,而这在 Xen 中没有实现。如果主机中没有可用的物理内存,则无法缩小来宾气球(例如,为其提供更多内存),并且如果您已经分配了所有主机内存,则无法启动新来宾(除非您膨胀运行来宾气球,从而实际上减少了分配的内存,因此您不会过度使用任何东西)。 (3认同)