我的选择:
如果没有依赖硬件,仅仅是应用软件,那么不必要求硬件虚拟化或比较沉重的paravirtual虚拟化。说实在的,最轻量级和最简单的技术是最高效的,也就是使用vserver和openvz就可以了。
不论是老硬件还是新硬件,这是消耗资源最少的,性能也是最好的。对于我而言,这是测试软件的好方式。
不会因为硬件虚拟化分配给某个guest的内存,其他guest就无法使用,资源利用非常充分。
如果要模拟复杂的部署(对存储和网络都有要求),如群集,但是去没有支持硬件虚拟化的硬件系统(如我),那么没有选择,用XEN的paravirtual技术吧,虽然安装部署麻烦,但是性能不错(对目前的硬件),并且最重要是省钱(不用买新笔记本了)。
如果要安装windows,或者paravirtual不能满足某些特定的系统模拟,那么只有采用virtualbox和vmware的完全虚拟化技术了。不过,这是下下策。我工作和学习以Linux为主,倒是可以避免。
如果要模拟复杂的部署(对存储和网络都有要求),并且条件允许,那么就采用硬件虚拟化。毕竟对guest操作系统没有任何要求,并且不修改guest操作系统,性能也是有保证的。
XEN的虚拟技术目前比KVM要成熟些(开发较早,受到的软件支持和服务支持也广泛),是目前的一个较好选择。
不过,XEN技术(特别是指dom0的主机系统)并没有进入Linux内核主线,所以一直以来都需要采用内核补丁方式,带来的问题是不能跟随Linux内核快速发展,目前主流的XEN技术尚集中在2.6.18系列内核。当然,RHEL的主流服务器系统尚不断在2.6.18系列上进行稳定的维护发展,所以2.6.18系列内核的稳定性可能是目前最好的,相对而言XEN倒比较适合服务器上使用。
KVM技术是最早被Linux内核所接受的硬件虚拟化技术,所以,未来发展应该最有前途。包括Redhat,处于对技术和商业的把握(XEN技术被竞争对手Ctrix收购了),已经从支持XEN转向支持KVM。很快,在RHEL 5.5将看到这样的转变。
如果硬件允许(多么希望我拥有一台Mac Book Pro,Intel VT技术),我想我会选择KVM。
前后使用过这些虚拟技术,还是得说:
目前虚拟化技术还是在快速发展中,也就是说还是不成熟,使用过程中会遇到大大小小,稀奇古怪的问题。或许我技术能力有限,我感觉缺陷和限制还是非常多。
开源的虚拟技术,需要学习的技术很多,只有实践过才能对比选择。没有适合所有环境的“银弹”技术,只有相对适合某种应用的虚拟技术。
以后再说说我学习和实践中遇到的问题和一些经验,总之,“谁用谁知道。”