热迁移(Live Migration),又叫动态迁移、实时迁移,即虚拟机保存/恢复,通常是将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
当前发展服务器虚拟化技术是当前的热点,而虚拟机的“热迁移(Live Migration)”技术则是虚拟化技术当中的热点。热迁移技术是指可以把一个虚拟机从一台物理服务器迁移到另一台物理服务器上,VMware公司在05年通过VMotion(虚拟机的迁移代理程序)、虚拟中心管理软件(Virtual Center management)首先进入到了这一领域。
因为VMware将其虚拟机文件系统(VMFS)覆盖了存储系统来允许虚拟机之间的热迁移,因此VMotion只能在两台访问同一个VMFS的服务器上进行虚拟机的热迁移。XenSource公司,这家提供开源Xen Hypervisor的供应商,宣布了其产品的热迁移特性。下个月,XenSource公司将在XenEnterprise 4.1当中内置XenMotion,并将通过赛门铁客的维尔软件来提供存储管理能力。
XenSource公司的资深副总裁Gordon Mangione表示,Xen与赛门铁客构成了绝妙的组合,因为很多Xen的使用者都在使用赛门铁客的维尔文件系统,这就不必强迫用户采用新的文件管理系统。
微软公司也计划在其开发代号为的Veridian hypervisor当中提供虚拟机的热迁移功能,但微软并没有给出确切的日期。 不过,微软公司Windows服务器分公司高级产品经理Patrick O’Rourke表示会在以后的升级中将其添加进去。
虚拟机的热迁移技术最初是被用于双机容错或者负载均衡,从而在应用上有很多优势。首先是可伸缩性比较强,在晚上或周末,IT管理者可以让运行某些关键业务的服务器适当减少工作量,以便进行更新操作系统,给应用程序打补丁等。而到了白天,又可以弹性地进行大负载量的运算。
其次,数据中心都追求环保节能, 工作量负载大的应用程序必然会令服务器能耗增加,有了虚拟机热迁移技术,当一台物理服务器负载过大时,系统管理员可以将其上面的虚拟机迁移到其他服务器,可有效减低数据中心服务器的总体能耗,再通过冷却系统将数据中心的温度保持在正常水平。
但是,进行虚拟机的热迁移也有不少的限制。例如,VMotion在进行迁移之前,管理软件会检测目标服务器的X86架构是否与原服务器兼容。包括存储设备以及处理器,虚拟机必须放到共享的存储里,CPU的类型也要一样,不仅不能一个是英特尔,一个是AMD,甚至相同厂商不同产品线的CPU也不行,比如英特尔至强和奔腾。
不过,处理器厂商正在试图解决这一问题。AMD已经找到了一种方法并将其加入到处理器架构之中,帮助虚拟机监控器分辨正在使用的X86指令。AMD虚拟化技术解决方案总监Tim Mueting说:“我们的目标是让虚拟机在不同的处理器之间进行迁移。”
而在08年6月12日,英特尔宣布,将在下半年推出两项新的虚拟化技术。其中一项名为“FlexMigration”,可将虚拟机转移到其他物理服务器,这一硬件级别的热迁移技术被业界普遍看好,并被认为是VMware VMotion的主要竞争对手。据悉,英特尔将在45纳米制程的Penryn处理器当中内嵌FlexMigration技术,该技术可支持跨代迁移。这样,虚拟机就可以在基于Penryn处理器的服务器和其他双核、四核处理器之间任意迁移。
应用领域计算机共享: 在一些公共场合用户需要共享计算机,但是由于不同的系统配置和软件需要花费大量的时间来配置和恢复。这时使用虚拟机的保存/恢复可以很好地解决这个问题。用户在虚拟机中进行所有工作,需要暂停时就将虚拟机保存到文件中。下次使用时使用原先的文件恢复虚拟机继续工作。
数据库备份:对于一些大型、关键的数据库应用,备份是一项重要但复杂的工作。虚拟机的保存/恢复可以将数据库运行在虚拟机中,如需备份就保存虚拟机,这样数据库中的所有数据、状态都做了备份。如果数据库崩溃了,就可以通过恢复虚拟机来恢复整个数据库。
环境重现:进行性能测试或程序调试时,都需要重现当时的环境,不仅仅是重启、配置软件,而且常常需要一定的运行时间。使用虚拟机的保存/恢复,将已经重现的环境保存起来,将来测试时只需恢复即可。一个512MB内存的虚拟机仅仅需要一两秒钟就可以保存/恢复,可以大大缩短重现时间。
系统硬件维护:当前很多操作系统都能够稳定支持7×24运行,但是硬件却需要定期的进行维护。如果使用虚拟机的动态迁移技术,将虚拟机从需要维护的物理机器迁移到另外一台备用机器,等维护完成后,在将其迁回到原来的物理机器。所有的系统服务和应用程序在恢复后仍旧正常运行,用户不会察觉到由于硬件维护造成的中断1。
Hyper-V热迁移原理为了追赶上VMware虚拟化霸主的脚步,微软从Hyper-V 2.0开始支持物理机与虚拟机之间的热迁移。热迁移对于实验室来说,需求可能并不高,但对于企业来说,这却是虚拟化成熟度的一个分水岭。
Hyper-V热迁移(Hyper-V Live Migration)并非故障状态下的非计划宕机。
该应用场景仅用于升级、硬件更换等计划宕机。
热迁移步骤:
一、在源和目标计算机之间建议连接
热迁移从本质上来说还是群集的一种实现方式。通信的速度与效率与源服务器和目标服务器的有关。在源服务器或目标服务器负载过高情况下会出现WMI调用clusres.dll超时失败的情况。该场景在PRO调用热迁移过程中,将会造成暂停(挂起)源虚拟机并传送状态卡死,导致虚拟机长时间处于挂起状态。微软官网上提供的相关的补丁,需要在所有节点上部署。
二、传送虚拟机配置及设备信息
这里值得注意的是,该部分传送的并非虚拟机目录中的XML配置文件,仅仅是注册表中的信息。以上两步完成的是迁移的准备工作,告知了目标服务器虚拟机所需的资源,并分配所需资源。
三、传送虚拟机内存
该部分是迁移的核心技术部分。不论是VMware还是Hyper-V来做迁移,都是无法逃避的问题。那些销售所谓的服务不会断线,不过是传说。从技术的角度来说只是断线的时间由秒这个级别降低到了毫秒级而已。
详细描述一下内存传送的过程:
1、锁定Guest主机内存,并将该部分的信息传送到目标服务器。
2、Guest主机继续运行,在Host主机中开启一个新的内存分区为Guest主机提供服务。该区域仅保存变更的内容。
3、新内存分区将继续分片锁定,并传送。
4、重复2~3,保证原HOST服务器与目标HOST服务器变更内存的差异在一个极小的时钟周期之内,直至操作1中的内存传送完成。
四、暂停(挂起)源虚拟机并传送状态
这部分包含3个操作:
1、挂起源虚拟机
2、传送最后的源虚拟机内存变更片段
3、通知存储,将存储挂载至目标服务器
第四步是迁移时间消耗的关键。而关键的关键是实时内存状态的保存。在Hyper-V 1.0中快速迁移采取的方式是挂起源虚拟机,再处理内存的方式。所以在迁移过程中会发现宕机的时间与虚拟机所消耗的内存量成正比。而在热迁移中,宕机时间不再由所迁移虚拟机消耗的内存来决定。决定宕机时间的关键点内存大小是一个相对较小的变更内存片段。根据实测,在热迁移操作中,ping包监视根据系统负载不同在丢包为2~6之间。完全可以满足一般企业高可用的需求2。
本词条内容贡献者为:
程鹏 - 副教授 - 西南大学