« 上一篇下一篇 »

开源Linux服务器虚拟化技术KVM和Xen有什么区别?Xen和KVM优缺点对比

   Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM。作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业化运作公司的基础技术,其中包括Citrix系统公司的XenServer和Oracle的虚拟机。Xen技术的倡导者们声称Xen的性能强劲,并且拥有一个广泛的管理工具和能够交付卓越性能,以及其它诸多优点。KVM是一个轻量级的虚拟化管理程序模块,该模块主要来自于Linux内核。虽然只是后来者,但是由于其性能和实施的简易性,以及对Linux重量级的持续支持,所以还是有必要认真对待KVM技术的。

在本期中,两位IT专家将会对Xen和KVM做出比较,并给出各自的理由。

KVM和Xen是两大虚拟化技术,KVM和Xen又是免费开源的管理程序,新手站长网分享虚拟化技术KVM和Xen的区别优势对比:

KVM和Xen的区别

  • KVM:KVM是轻量级的虚拟化管理程序模块,该模块主要来自Linux内核;KVM的虚拟化需要硬件支持,如具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU,KVM只能在具有虚拟化支持的CPU上运行。

  • Xen:Xen是Linux下的虚拟化解决方案,Xen的实现是基于支持Xen功能的kernel,在Xen控制下的kernel,称之为Domain0,使用kernel启动的机器可以使用qemu软件,虚拟出多个系统。

Xen和KVM虚拟化架构对比

 

KVM和Xen虚拟化有什么区别?Xen和KVM优缺点对比

KVM虚拟化


KVM的内核模块叫做kvm.ko,实现对Linux的CPU和内存虚拟化,是Linux的一个进程,负责VCPU和内存的分配,而其他设备的虚拟就交给了qemu。qemu运行在用户空间,KVM运行在内核,两者通过/dev/kvm进行交互,KVM仅支持全局虚拟化。

KVM和Xen虚拟化有什么区别?Xen和KVM优缺点对比

Xen虚拟化


Xen是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,Xen能够在计算机硬件上并发的运行多个客户操作系统(Guest OS)。

 

关于是否写入Linux内核

KVM已经被Linux核心组织写入Linux内核。而Xen是一个外部的Hypervisor程序(虚拟机管理程序),它能够控制虚拟机和给多个客户机分配资源,在KVM被写入Linux内核后,估计Xen很难再被写入内核。而KVM是Linux的一部分, 可使用通常的Linux调度器和内存管理,KVM更小更易使用。

关于版本升级

更新版本方面,Xen需要重新编译整个内核,稍有不慎,可能导致系统无法启动;KVM不需要重新编译内核,也不需要对kernel做任何修改(它只是几个可以动态加载的.ko模块)。

KVM和Xen对比来看,KVM结构更加精简、代码量更小,出错率更小;在某些方面,KVM性能要比Xen好一些。

以阿里云为例,阿里云虚拟化技术包括Xen和KVM,新的机器都是KVM,老一代是Xen。

关于全虚拟化和准虚拟化

Xen同时支持全虚拟化和准虚拟化,KVM目前不支持准虚拟化。

KVM和Xen区别对比表

对比项XenKVM
问世时间2003年2007年
支持企业Citrix、Novell、Oracle、Sun、Ret Hat(RHEL5)和Virtual IronRedhat、Ubuntu等
支持的虚拟化技术全虚拟化、半虚拟化全虚拟化
支持架构x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及x86/64 CPU商家和Intel嵌入式的支持支持虚拟化的CPU
支持操作系统UNIX、Linux和Microsoft WindowsUNIX、Linux和Microsoft Windows
动态迁移支持支持(以前不支持)
内核支持需要对内核打补丁内置在内核中

 

 

KVM在Linux整合中优于Xen

 

   即使没有实施广泛的Xen和KVM性能基准研究,仍然有很多理由足以说明Linux领导者(诸如Red Hat和Ubuntu)对待KVM态度的原因。其中最明显并且最重要的因素就是KVM是Linux内核的一部分,Xen只是一个安装在Linux内核下层的一个产品而已。

   为什么这一点如此重要呢?其之所以重要是因为在过去Xen工作环境的补丁包不能够和Linux内核兼容。但是如果实施KVM的话,这个问题就可以很容易地得到解决。另外一个选择KVM的原因是KVM在Linux内核内部部署,这样可以很容易控制虚拟化进程。

   Xen的拥护者们声称KVM不如Xen技术成熟,并且缺少某些关键特性,如动态迁移和泛虚拟化支持。确实如此,Xen工作环境中的泛虚拟化技术可以使虚拟机的操作更加高效,因为泛虚拟化技术直接和硬件进行交互。然而使用泛虚拟化技术需要修改操作系统,默认Windows的安装并不支持泛虚拟化工作环境。至于动态迁移,KVM也可以做到,只是需要安装正确的KVM版本而已。KVM过去在动态迁移方面确实存在一个问题,但是现在已经解决了。

   从另外一个角度来讲,KVM更加灵活。由于操作系统直接和整合到Linux内核中的虚拟化管理程序交互,所以在任何场景下都可以直接和硬件进行交互,而不需要修改虚拟化的操作系统。这一点非常重要,因为对虚拟机运行来讲KVM可以是一个更快的解决方案。KVM需要Pacifica(AMD)或者Vanderpool(Intel)虚拟化CPU这一事实现在已经不能成为KVM发展的限制条件,因为当前大多数服务器CPU都有这些处理器。

支持不选择KVM虚拟化技术的一个可信原因是Xen相对来讲历史更久一点,产品更加成熟些。但是长远来看,Xen将会使Linux内核的负担越来越重,因为Xen缺少很好的整合(并且以后也不会解决这个问题),尽管Xen的开发者们正在积极地解决这个整合问题。

 

总结

   最后一点是KVM是Linux内核的一部分,而Xen做到最好也无非是整合到Linux中。随着时间的推移,Ret Hat(目前掌握KVM技术),作为Linux企业市场中份额最大的企业,将会使虚拟化技术的后来者——KVM同Xen一样功能齐全。