虚拟机迁移原理详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
虚拟机到虚拟机的迁移(Virtual-to-Virtual)
V2V 迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件。虚拟机从一个物理机上的VMM 迁移到另一个物理机的VMM,这两个VMM 的类型可以相同,也可以不同。如VMware 迁移到KVM,KVM 迁移到KVM。可以通过多种方式将虚拟机从一个VM Host 系统移动到另一个VM Host 系统。
V2V 离线迁移
离线迁移(offline migration):也叫做常规迁移、静态迁移。在迁移之前将虚拟机暂停,如果共享存储,则只拷贝系统状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。如果使用本地存储,则需要同时拷贝虚拟机镜像和状态到目的主机。到这种方式的迁移过程需要显示的停止虚拟机的运行。从用户角度看,有明确的一段服务不可用的时间。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。
V2V 在线迁移
在线迁移(online migration):又称为实时迁移(live migration)。是指在保证虚拟机上服务正常运行的同时,虚拟机在不同的物理主机之间进行迁移,其逻辑步骤与离线迁移几乎完全一致。不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机运行,当迁移进行到一定阶段,目的主机已经具备了运行系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,服务在目的主机上继续运行。对于服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。在线迁移适用于对服务可用性要求很高的场景。
目前主流的在线迁移工具,都要求物理机之间采用SAN(storage area network),NAS(network-attached storage)之类的集中式共享外存设备,因而在迁移时只需要考虑操作系统内存执行状态的迁移,从而获得较好的迁移性能。
另外,在某些没有使用共享存储的场合,可以使用存储块在线迁移技术来实现V2V 的虚拟机在线迁移。相比较基于共享存储的在线迁移,数据块在线迁移的需要同时迁移虚拟机磁盘镜像和系统内存状态,迁移性能上打了折扣。但是他使得在采用分散式本地存储的环境下,仍然能够利用迁移技术转移计算机环境,并且保证迁移过程中操作系统服务的可用性,扩展了虚拟机在线迁移的应用范围。V2V 在线迁移技术消除了软硬件相关性,是进行软硬件系统升级,维护等管理操作的有力工具。
V2V 内存迁移技术
对于VM 的内存状态的迁移,XEN 和KVM 都采用了主流的的预拷贝(pre-copy)的策略。迁移开始之后,源主机VM 仍在运行,目的主机VM 尚未启动。迁移通过一个循环,将源主机VM 的内存数据发送至目的主机VM。循环第一轮发送所有内存页数据,接下来的每一轮循环发送上一轮预拷贝过程中被VM 写过的脏页内存dirty pages。直到时机成熟,预拷贝循环结束,进入停机拷贝阶段,源主机被挂起,不再有内存更新。最后一轮循环中的脏页被传输至目的主机VM。预拷贝机制极大的减少了停机拷贝阶段需要传输的内存数据量,从而将停机时间大大缩小。
然而,对于更新速度非常快的内存部分,每次循环过程都会变脏,需要重复pre-copy,同时也导致循环次数非常多,迁移的时间变长。针对这种情况,KVM 虚拟机建立了三个原则:集中原则,一个循环内的dirty pages 小于等于50;不扩散原则,一个循环内传输的dirty pages 少于新产生的;有限循环原则,循环次数必须少于30。在实现上,就是采取了以下措施:
●有限循环:循环次数和效果受到控制,对每轮pre-copy 的效果进行计算,
若pre-copy 对于减少不一致内存数量的效果不显著,或者循环次数超
过了上限,循环将中止,进入停机拷贝阶段。
●在被迁移VM 的内核设置一个内存访问的监控模块。在内存pre-copy
过程中,VM 的一个进程在一个被调度运行的期间,被限制最多执行40
次内存写操作。这个措施直接限制了pre-copy 过程中内存变脏的速度,
其代价是对VM 上的进程运行进行了一定的限制。
KVM 的预拷贝在线迁移过程详解
开始
系统验证目标服务器
的存储器和网络设置
在目标服务器保留所迁移
虚拟机的资源
将虚拟机的
全部内存镜像复制到目标
服务器
检查上一个循环中内
存是否发生了变化将发生变化的内存页重新
复制到目标服务器中覆盖
掉先前的内存页
复制所耗费的时间变短
到内存在期间发生变化
量达到一定标准
将剩余的内存变化
和源系统设备的工作状态复
制到目标服务器
内存复制操作结束,暂
停源系统
将存储从源系统上解锁,并锁定
在目标系统上,
启动目标服务器,并与存储资源
和网络资源相连接
结束
图KVM 的预拷贝在线迁移过程流程图
1.系统验证目标服务器的存储器和网络设置是否正确,并预保留目标服务
器虚拟机的资源。
2.当虚拟机还在源服务器上运转时,第一个循环内将全部内存镜像复制到
目标服务器上。在这个过程中,KVM 依然会监视内存的任何变化。3.以后的循环中,检查上一个循环中内存是否发生了变化。假如发生了变
化,那么VMM 会将发生变化的内存页即dirty pages 重新复制到目标服务器中,并覆盖掉先前的内存页。在这个阶段,VMM 依然会继续监视内存的变化情况。
4.VMM 会持续这样的内存复制循环。随着循环次数的增加,所需要复制
的dirty pages 就会明显减少,而复制所耗费的时间就会逐渐变短,那么内存就有可能没有足够的时间发生变化。最后,当源服务器与目标服务器之间的差异达到一定标准时,内存复制操作才会结束,同时暂停源虚拟机。
5.在源虚拟机和目标虚拟机都停机的情况下,将最后一个循环的
dirty-pages 和源虚拟机设备的工作状态复制到目标服务器。
6.然后,将存储从源虚拟机上解锁,并锁定在目标虚拟机上。启动目标服
务器,并与存储资源和网络资源相连接。