二、Hyper-V/VMware/Xen,孰优孰劣?
说老实话,作为虚拟化市场的先驱,VMware的技术无疑更加成熟。VMware采用一种所谓的VMotion技术。VMotion采用内存后台备份的机制,可以实现在线迁移,也就是说,几乎没有停机时间。
VMotion也需要共享存储的支持,虚机的磁盘文件保存在共享存储设备上,但是需要指出的是,VMotion并不是基于群集的。
1. VMotion的原理
假设虚机要从主机A迁移到主机B上。VMotion的过程简述如下:
(1)VMotion首先尝试把虚机的内存映像从主机A拷贝到主机B。在这个过程中,主机A上的虚机继续对外提供服务。
(2)在内存映像拷贝过程中。用户对该虚机的任何内存写入操作,都会记录到一张叫做内存位图(Memory Bitmap)的表中。
(3)内存映像拷贝完成后,会把内存位图表拷贝到主机B上。这段时间虚机会暂时停止工作(时间极短,如果尝试Ping的话,通常只有一个数据包显示超时),如附图所示。 (图4)

(4)当虚机在主机B上启动时,系统会把内存位图表里记录的已修改页(Modified Memory Page)继续拷贝到主机B中,直到结束。
2. VMware VMotion和Hyper-V快速迁移之间的对比
(1)由于VMotion采用后台内存拷贝的模式,只有在拷贝内存位图表时,才会临时中止客户端访问,用户几乎感觉不到服务中断(一般最多1~2秒)
而Hyper-V快速迁移则需要有一个内存状态的保存和恢复时间,根据虚机内存和存储带宽的大小,有少量的服务中断时间(少则1~2秒,多则1~2分钟)。
从原理上讲,Hyper-V采用的是比较简单的内存状态保存的技术,以避免在内存映像传输时,后续的内存写入同步问题,以增加停机时间作为代价,但一般来说这点时间还是可以容忍的,通常不会有损SLA。
(2)VMotion需要相对比较昂贵的费用(必须采购更高版本才能获得)
而Hyper-V快速迁移则包含在Windows Server 2008的授权费用中,不需要额外付费。
(3)VMotion需要两台主机的CPU为同一系列(最好是同一型号),以避免CPU指令集的不同而导致的指令兼容问题。
尽管在UI里没有体现,但是Hyper-V快速迁移也有这个限制。
(4)VMotion适用于计划维护停机事件,如果是突发故障,可以借助VMware的HA功能(需要付费),让虚机在另外一台主机上重启。
而Hyper-V则可以借助主机群集功能同时实现快速转移和高可用性。
(5)VMotion是VMware Infrastructure的核心功能之一,它也是DRS(动态资源调度)的基础。系统可以根据一定的优先级和性能监控,自动通过VMotion在不同主机之间在线迁移虚机,以便平衡数据中心的可用资源。
相信今后的Hyper-V的正式版本,也有类似的机制,例如可以借助System Center Operation Manager自动监控虚机和物理主机的性能,然后借助System Center Virtual Machine Manager进行快速迁移。
那么Xen呢,Citrix的XenServer Enterprise可以实现类似的XenMotion功能,盆盆没有测试过,估计类似于VMware的功能。今后盆盆会抽空进行测试,并给出相应的测试报告。