admin 管理员组

文章数量: 887021


2024年3月9日发(作者:thrift的同义词)

虚拟机到虚拟机的迁移(

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. 然后,将存储从源虚拟机上解锁,并锁定在目标虚拟机上。启动目标服 务器,并

与存储资源和网络资源相连接。

源服务器 目标服务器 源服务器

目标服务器

源虚拟机

目标虚拟机

源虚拟机

目标虚拟机

内存

内存

内存

内存

系统验证目标服务器,预保留虚拟机的资源 内存镜像复制,复制过程中源机器内存发生变化

源服务器

目标服务器

共享存储、网络

所需复制的数据在减少,复制时间变短

源服务器 目标服务器 源服务器 目标服务器

源虚拟机

目标虚拟机

源虚拟机

目标虚拟机

内存

内存

内存

共享存储、网络

共享存储、网络

源虚拟机与目标虚拟机之间的差异达到一定标准 将存储从源虚拟机上解锁,并锁定在目标系统上

时暂停源虚拟机, 复制虚拟机状态信息

启动目标虚拟机,并与存储和网络资源相连接

图 KVM 的预拷贝在线迁移过程示意图


本文标签: 迁移 内存 循环 目标 复制