Xen PV,Xen KVM和HVM之间的区别?


53

我知道Xen通常比OpenVZ更好,因为提供商不能在Xen中超额销售。然而,是什么区别Xen PVXen KVMHVM(我正想通过这个供应商的规格?哪一个是为了什么目的,为什么好?


编辑:

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

Answers:


47

Xen支持的虚拟化类型

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

Xen半虚拟化(PV)

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

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

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

有关Linux pvops Xen支持的更多信息,请参见XenParavirtOps Wiki页面。

Xen完全虚拟化(HVM)

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

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

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

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


9
+1 KVM根本不是Xen。完全不同意KVM是更好的设计。Xen提供了更好的隔离性,并且不依赖于Linux内核及其潜在的漏洞。
Antoine Benkemoun

2
谢谢(你的)信息!我听不懂 从最终用户的角度来看,谁来托管网站,哪个更好?一个人比另一个人有明显的优势吗?

2
Xen有它自己的漏洞。但是,无论您做得多么好,运行带有两个引导内核的操作系统都是一个设计缺陷
dyasny 2011年

1
JP19:取决于网站。如果您可以定义VPS上的负载,则可以在此处或Google寻求最佳解决方案。
dyasny 2011年

2
Xen是虚拟机管理程序,KVM也是如此。KVM具有PV设备,并且随着时间的增加而增加,它还允许PCI直通。因此,Nils
dyasny

32

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)。

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


3
KVM可以过量使用内存,Xen也可以。
dyasny 2012年

@dyasny我对KVM并不了解,但我可以肯定Xen不会在实际意义上过量使用内存(允许不同的最大大小是另一回事)。如果您相信,请链接您的资源。
Luke404

Xen支持气球。为此添加标准交换,您已经拥有至少2个过量使用机制。这是一样老象2008:blog.xen.org/index.php/2008/08/27/...
dyasny

3
@dyasny,您可能会考虑过量使用以允许更高的最大值。在AFAIK中,公认的含义是实际上为客户机分配的内存多于主机中实际存在的内存,这在Xen中未实现。如果主机中没有可用的物理内存,则无法放空guest虚拟机气球(例如,为其提供更多内存),并且如果您已经分配了所有主机内存,则无法启动新的guest虚拟机(除非您进行充气)运行来宾气球,从而实际上减少了分配的内存,因此您不会过量使用任何东西)。
Luke404

1
我认为过量使用不仅是允许的数量超过主机实际拥有的数量,而且实际上是使用的数量超过主机实际拥有的数量。交换是可怕的,但是它是一种机制,允许您分配比物理上主机更多的内存页面,无论是进程还是VM。就这一点而言,这是我所要讨论的。
dyasny 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.