虚拟化技术企业数据中心整合、云计算,特别是云计算基础设施服务即IaaS服务中,已经成为一个至关重要的技术。可以说,虚拟化技术是绝大多数IaaS服务的基础。在虚拟化方面有很多种解决方案:如VMware ESXi、微软HyperV,开源的如VirtualBox、Xen和KVM。作为公有云服务和私有云建设的核心技术,虚拟化一直受到业内关注,也因此一直在发展和进步。。早期国外云主机服务商和几乎所有国内云主机服务商一直使用Xen虚拟化技术, 而KVM凭借其近几年的发展被linkcloud和众多新兴的国外IaaS公司所采用。KVM和Xen孰优孰劣?本文对此做一探讨。
KVM作为linux虚拟化技术的后起之秀,凭借其性能和实施的简易性,以及对Linux重量级的持续支持,已经受到许多linux厂商-包括Red Hat和Canonical等的青睐。昔日的老大哥XEN的技术倡导者们则声称XEN的性能强劲,并且拥有一个广泛的管理工具和能够交付卓越性能,以及其它诸多优点。笔者对KVM和XEN分别进行了测试比较。
首先我们来看XEN阵营的支持者的理由。作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以5个优势领先:更好的可用资源、平台支持、可管理性、实施、性能基准。
可用资源:Xen的问世要比KVM早4年之久(两者分别是2003年和2007年)。随着Citrix、Novell、Oracle、Sun、Ret Hat和Virtual Iron等公司在市场领域的实施,就比较容易找到精通Xen的IT技术人员,更容易让这些技术人员接受Xen相关的培训、更容易得到Xen的咨询帮助以及获得Xen证书。
平台支持:Xen在新版本中支持更多的主机和客体工作环境,包括泛虚拟化技术、硬件辅助支持以及修改过或未修改过的客体操作系统;对UNIX、Linux和Microsoft Windows的特定支持;包括芯片组,如x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及x86/64 CPU商家和Intel嵌入式的支持等。
可管理性:EMA在2009年度针对虚拟系统管理的研究结果表明:对于83%的企业来讲,在选择虚拟化技术过程中,管理是一项非常关键或者重要的因素。在对比Xen和KVM时,就可以看到Xen具有一个更加宽泛的第三方配给、备份、存储管理、P2V、容量规划、性能监控、进程自动化、安全和其它管理规则的社区,比如Citrix、IBM、CA、Novell或者Platespin、Enomaly、Microsoft以及HP等。
实施:无论KVM是"第一类"还是"第二类",这都是语义上的概念。Xen的运行和管理都是在较低级别的(Ring 0)。甚至对于新虚拟机创建,客体机器并不需要像KVM那样共享内存块、CPU指令或者任何底层的Linux操作系统(虽然偶尔也会越权)。
性能:大多数Xen和KVM性能基准的对比都表明Xen具有更好的处理性能(接近于本地处理),只有在磁盘I/O方面略逊于KVM。进一步来讲,独立测试表明随着工作负载的增加KVM的性能逐渐下降。通常情况下,在试图支持四个以上的客体虚拟机时就会崩溃。Xen支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。
但是众多厂商作为支持KVM的支持阵营,究竟是什么吸引了他们呢?他们力捧的KVM究竟胜在哪里?
笔者发现即使没有实施广泛的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过去在动态迁移方面确实存在一个问题,但是现在已经解决了。
据LinkCloud介绍,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一样功能齐全。我相信未来虚拟化市场必定是KVM的。
LinkCloud介绍,KVM在Linux整合中要优于Xen。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。
目前国内的企业大都是运用XEN技术运营,特别是几乎所有的云主机服务商,包括阿里云,盛大云,万网云等,而使用KVM就只有linkcloud一家,据笔者了解,linkcloud的技术团队做云计算运营的时间比较久,其08年就在国内率先使用XEN来做规模化的商业运营,直至11年该团队创立linkcloud后率先使用KVM为基础运营云主机,作为一家引领行业运营技术的技术团队,其举动是否暗示了未来的虚拟化市场是KVM占主导地位?结论尚未可知。linkcloud率先在国内使用KVM来运营,是否能因为采纳该项技术而提高产品的竞争力,更好的服务于客户,或对行业技术趋势起到引领作用,让我们拭目以待!