VMWare如今是当之无愧的虚拟机老大,但是,开源领域的XEN和KVM同样值得人关注。这两个虚拟机版本都可以在如今的Linux上运行,各有各的优点,到底选择那个就成了一个棘手的难题。XEN采用半虚拟化,性能强劲,但是配置稍显麻烦,虚拟机中的系统需要采用为半虚拟化定制的内核;KVM采用全虚拟化,和Linux内核集成紧密,配置方便,虚拟机中的系统不需要修改,但是由于全虚拟化的原因,性能略微差些。(当然,XEN也可以采用全虚拟化运行Windows等系统,不过就没有了性能优势)。
最近我在Thinkpad T61上装了一套CentOS5.4,该版本既支持XEN,又支持KVM。如果运行XEN,需要从GRUB中选择支持XEN的内核;如果运行KVM,选择普通内核即可。两者都可以用图形化的Virtual Machine Manager来对虚拟机进行管理。为了测试性能到底如何,我准备分别用它们装Windows XP,然后装单独的性能软件来测一下Benchmark值。T61上同时还装了一套原生的Windows XP系统,用PassMark Performance Test 7.0这个软件来测试,CPU得分1100.9,内存得分557.7,磁盘得分323.4。由于图形系统需要用到硬件加速,虚拟机一般对图形硬件的加速支持不是很好,所以我就忽略了2D/3D得分,只看前面提到的3个基本数值。
先用XEN来装XP,发现有兼容性问题,安装程序始终不能正常运行。后来只好用完全通过光盘启动的WinPE做测试。通过VNC来操作,界面相应和鼠标移动都略显迟钝。因为安装的问题,XEN环境下也就做了这个简单的“直观感觉测试”。
然后用KVM来装XP,一切顺利。装好之后,用PassMark测试CPU得分1085.1,内存得分367.6,磁盘得分72.5。CPU得分和裸机系统极其接近,可以说明KVM运行CPU密集型的应用有很大优势,甚至可以不用担心性能的损失问题;内存得分不是很高,主要原因是"Large RAM"这项偏低,有可能和裸机系统使用了2G内存,但是虚拟机中使用了1G内存有关;磁盘得分很低,这是意料之中的,我一直对KVM用全虚拟化来模拟IO的性能持怀疑态度。毕竟IO操作是很费时间的,完全模拟硬件,费的时间就更多了。但是KVM有专门的半虚拟化驱动,可以用类似XEN半虚拟化的方式,提高磁盘和网络的性能。于是我就下载了virtio驱动到虚拟机中的XP中,然后给虚拟机增加了一个virtio的磁盘,但是用PassMark和IOMeter测试起来,性能并没有提升多少,甚至有时还有下降。这是哪里设置得不对吗?对于IO密集型应用,到底要不要选KVM呢?另外,我用KVM启动了WinPE,发现操作流畅度比XEN还是强了一点点。
由于时间有限,我就只做了一些简单的测试。不管怎样,KVM作为Linux官方内核自带的虚拟机,肯定会不断改进,其未来还是很光明的(尤其是Redhat这个Linux老大对它的强力支持)。XEN由于半虚拟化的强大性能优势,在一定时间内,还是会作为云计算企业的首选虚拟机(亚马逊的云计算就采用了XEN),但是对于个人用户来说,使用方便性和兼容性多多少少还是差一点。