Liuw's Thinkpad

想要赢就先学会输,想要成功就先学会失败

Xen和KVM的一些胡扯

without comments

我始终是一个相信阳谋多过阴谋的人。在工程至上的开源软件世界,所有策略都是可以预知和分析出来的。

“开源”二字,对于不同的人来说可能有不同的理解。对于某些国内的公司、高校来说,国外“开源”就意味着国内的“自主创新”。对于个人开发者,“开源”也许意味着搞个github、google code、bitbucket之类的账号,把自己的一些成熟或者不成熟的代码放到网上与大家共享。对于依赖开源软件的公司或者社区,“开源”最主要的作用就是构建经营生态圈,为自己的生存和发展打下基础。

在开源软件的世界,有着同样的目的的几个产品互相竞争是很正常的事情,比如Xen和KVM就是如此。首要条件是产品能够达到基本的标准,产品本身是基础,不好后面就没有戏。构建经营生态圈是非常费时费力的一个事情。

Xen在过去几年在社区方面失去了很多阵地,究其原因就是公司方面对于社区不够重视(以前都忙着赚真金白银了)。比如说在Ubuntu 8.04的时候Xen是被直接打包到系统中的,但是9.x版本到11.x版本里面,由于公司方面没有专门聘请packager,没有人去维护这个package,它就被移除了。而最近的一个Ubuntu的survey也反映了这一点(虽然platform team内部对于统计方式有点疑问),Xen的占有率不是很高(其实我个人觉得数据已经比预想的要高了)。可以说,前几年的疏忽造成的影响现在开始慢慢浮出水面了。

而现在公司的策略已经转变了,准备以开源产品为基础吸引用户,然后为有需求的用户提供高阶的商业版本产品。我觉得这个套路倒是很正常,RedHat其实就是一直这样发展的,而这个非常传统的软件公司好像一开始不大转得过弯来。现在还不算晚,开始统一产品线,也开始在社区方面加大力量。比如说现在开始和一些开源云计算平台互通、聘请一些开发人员专门为主要发行版打包软件、专门成立团队来经营社区、放出商业产品的社区版本等等。

在开源软件界,Xen的最主要竞争者是由RedHat支持的KVM。但是Xen和KVM又不完全是一个层面上的产品。Xen本身只是一个hypervisor,实际的驱动放在Linux内核中,有自己完整的工具栈(libxc和libxl都是Xen的一部分),还有QEMU等用户空间程序,还有第三方支持的如Remus、XSM等扩展功能,所以Xen是一个很庞大的“东西”。而KVM则相对简单,只有内核部分以及作为模拟器的QEMU。KVM工具栈常见的是libvirt,它不属于KVM的一部分,其他的什么扩展功能也不是很多。打个不大恰当的比方,Xen就像FreeBSD,而KVM就像Linux。

KVM是一个很优秀的产品,它的设计非常简洁,概念相对Xen来说少很多,组件少开发维护起来方便,使用起来也方便(直接加载模块即可)。现在有RedHat的支持,发展起来顺风顺水。那么Xen能在什么方面与KVM竞争呢?所谓“成也萧何,败也萧何”,“十年河东十年河西”,Xen的复杂架构,让它在前硬件虚拟化时代领先,硬件虚拟化时代落后,也许在将来还是有机会反戈一击的,但处理不好,那也是无翻身之可能了。

先退一步来观察一下Xen虚拟化系统。整个系统由hypervisor、Dom0以及其上运行的DomU组成。hypervisor负责所有特权操作,Dom0负责管理和驱动硬件,DomU运行用户的任务。不特意提及的话,也许基本没有人会想到“微内核”这个词吧。实际上Xen系统可以看作一个比较实用化的微内核系统。今后Xen将有可能把一些关键的组件从Dom0中分离到各自的独立虚拟机中,这就更像一个微内核系统了。分解之后的好处就是隔离性更加好,关键组件可以独立重启。想想Dom0重启而DomU还可以正常运行,有趣,哈哈。网卡驱动有bug崩溃?反正在独立Domain里面,不会把整个系统搞垮。在公有云环境下,这样就意味着各个租客之间有更加好的独立性,服务可靠性会高点。也许——仅仅是也许——这样也意味着可以得到更好的安全性——Xen hypervisor的code base比起KVM用到的一整个Linux系统还是小很多的。(微内核的曲线逆袭?)

而Xen现在面临的问题,也是和架构有关。由于组件多,各个组件分属不同的社区,所以开发起来反而有点掣肘的感觉。而Xen最要警惕的就是复杂度问题。前面提到的分解,总有一个限度,不能无限制的随意分解。现在各个组件之间的兼容、上下游之间的兼容已经很让人头痛,若以后处理不好,只会更加恶化。而现在公司针对这个问题的策略就是组建platform team,在Linux Kernel和QEMU社区里加大影响,及时把Xen的一些变化反馈到上游。

而Xen的另外一个优势,就是产品的完整度比较高,从安全框架到高可用方案,从hypervisor到完整的云计算平台都有。而KVM多是通过libvirt接入到第三方云计算平台,一些增强功能从Linux系统中得到,更高级的需要RedHat来提供支持。这个点最后结果如何,还有待观察。

现在Xen正在社区方面发力,KVM也在高速发展,这一年将是很有趣的一年。

Written by liuw

February 22nd, 2012 at 9:34 pm

Posted in 戏言

Leave a Reply