虚拟化 频道

雁过留声:我的有关虚拟化一些经验想法

  【IT168 应用技巧】我对虚拟化技术比较有兴趣,因为充分发挥硬件的潜力是SA的奋斗目标,虚拟化是其中的一种途径。

  先后尝试过一些虚拟化技术,以下是我的想法,不一定完全准确,仅供参考:

  如果虚拟环境不依赖底层硬件,例如,不涉及磁盘存储、不用于创建数据库cluster群集、没有复杂的网络模拟,仅仅是应用软件模拟测试环境(web应用),那么,我想使用轻量级的虚拟技术,如vserver或openvz应该比较合适。

  此类轻量级虚拟技术并没有完全模拟硬件,只是把虚拟机通过chroot或jail的方式作为操作系统的一个进程来运行。一方面提供了guest虚拟机相互间隔离,保证了安全和软件部署互相不干扰,另一方面正是因为只是一个host主机中的进程,所以不需要单独划分内存(这会导致资源占用),可以充分利用实体服务器资源。所以可以在很低的硬件环境下运行大量的虚拟服务器。

  缺点是不能模拟磁盘存储,不适合建立共享存储的HA和cluster。同时不适合创建复杂的网络模拟,对于模拟LVS这类的网络群集可能比较困难。

  paravirtual虚拟是XEN最早提出的虚拟技术,通过修改过的guest虚拟机来实现硬件访问的加速。应该是目前虚拟化技术的性能较好的方式。代表技术是XEN虚拟,另外,vmware、virtualbox和kvm虚拟化技术也逐步在引入paravirtual虚拟技术。

  paravirtual虚拟对硬件没有特别要求,并不需要CPU支持硬件虚拟化(Intel和AMD的新型CPU技术),所以适合我这样的穷苦大众 - (我的笔记本是Dell Inspiron 640m,Centrino Duo双核芯片,但是不支持硬件虚拟化和超线程)

  性能较好,特别是网络和磁盘性能比目前完全虚拟化方式要高效。

  缺点是必须使用paravirtual化的特殊操作系统,例如Linux有paravirtual虚拟方式运行guest,但是windows却没有这样的特殊版本,所以,就我而言,只能在Dell 640m笔记本上运行paravirtual方式的Linux,但没有办法安装windows。

  如果对存储和网络有要求,如运行cluster,并且希望得到相对较高的性能。Paravirtual虚拟或许是较好的选择。

  完全虚拟化,也就是完整模拟主机硬件。所以,完全虚拟化技术对操作系统没有任何要求,几乎可以安装所有x86平台操作系统。代表技术是vmware和virtualbox。

  完全虚拟化通用性较好,可以模拟各种部署,例如部署cluster群集,以及模拟复杂的网络环境,特别适合大规模系统部署测试。

  可以安装windows操作系统,所有软件安装和使用都非常方便。

  缺点是性能不佳,特别是我目前有限的硬件环境下,完全虚拟化技术使用过vmware workstation, vmware server以及virtualbox。无一例外性能都非常差,guest大量消耗cpu资源。虽然通过一些手段可以减轻guest的资源浪费(如关闭windows上运行的杀毒软件,设置linux操作系统的内核参数),但是,总是不尽人意。或许,企业级别的硬件和企业级别的vmware结合起来,能够充分发挥性能,得到满意的虚拟化,不过,我没有这样的经验和体验的机会,所以持保留意见。

  硬件虚拟化是未来的发展方向,因为Intel和AMD已经加入了这个角逐,所以应该是非常好的发展前景。

  硬件虚拟化可以完全安装windows和Linux操作系统,没有paravirtual虚拟的guest操作系统定制限制,同时性能也比完全虚拟化要好。

  可以模拟复杂的系统部署,相信稳定性也是有所保证的。

  性能应该还不错,不过磁盘访问和网络吞吐的性能不如paravirtual。所以,目前在硬件虚拟化的kvm技术中,也部分引入了paravirtual技术来支持磁盘和网络访问。详细参考kvm官方网站。

  缺点是“钱”,至少目前不是所有硬件都支持,需要采购最新的硬件来实现。

 

  我的选择:

  如果没有依赖硬件,仅仅是应用软件,那么不必要求硬件虚拟化或比较沉重的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。

  前后使用过这些虚拟技术,还是得说:

  目前虚拟化技术还是在快速发展中,也就是说还是不成熟,使用过程中会遇到大大小小,稀奇古怪的问题。或许我技术能力有限,我感觉缺陷和限制还是非常多。

  开源的虚拟技术,需要学习的技术很多,只有实践过才能对比选择。没有适合所有环境的“银弹”技术,只有相对适合某种应用的虚拟技术。

  以后再说说我学习和实践中遇到的问题和一些经验,总之,“谁用谁知道。”

 

0
相关文章