《虚拟机动态迁移方法》
云计算;虚拟机;动态迁移;虚拟化;内存迁移;虚拟机重现
[1]常德成,徐高潮.虚拟机动态迁移方法[J].计算机应用研究,2013,30(04):971-976.
综述,内存预拷贝迁移、内存后拷贝迁移、内存混合复制迁移和基于日志跟踪重现的迁移方法。
1. 对出现的名词添加参考文献
2.
综述
3. 虚拟机动态迁移方法分类与分析
4. 内存预拷贝迁移方法
5. 内存后拷贝迁移方法
6. 基于内存混合复制迁移方法
7. 基于日志跟踪重现的动态迁移方法
8. 虚拟机动态迁移方法的应用与发展
0.
云计算 --> 虚拟化技术 --> 虚拟机动态迁移 --> 虚拟机动态迁移的应用 --> 总结
应用:
a. 负载均衡
b. 在线维护:虚拟机迁移不关机,对物理机进行维护
c. 主动容错:对于某个可能存在故障的物理机,其上的虚拟机主动迁移到更安全的位置
d. 资源优化和电源管理:轻负载的主机整合到重负载的主机上,迁移完毕后将被迁移的虚拟机关闭
1. 虚拟机动态迁移方法分类与分析
主要有三类资源需要被迁移:内存和CPU状态、网络连接和虚拟设备状态、存储。
目前,动态迁移的研究与应用主要集中在局域网环境,主要通过 ARP 广播实现。
数据中心更倾向于使用 NAS 等共享设备,这能够避免迁移磁盘存储,共享存储的环境中,虚拟机内存状态是最主要的迁移数据,当虚拟机正在运行实时服务时,传输方式应该考虑最小化停机时间和总迁移时间,内存传输有三个阶段:
- 推送复制(push):源虚拟机继续运行,并主动将虚拟机复制到目的虚拟机。为保证一致性,过程中被修改的内存页面必须重新传送。
- 停机拷贝(stop-and-copy):源虚拟机停止运行,将虚拟机内存页面拷贝到目的虚拟机,然后启动目的虚拟机。
- 按需复制(pull):目的虚拟机开始运行,如果它访问到一个还没被拷贝的页面,该页面通过缺页异常的方式从源主机传递过来。
评价虚拟机动态迁移方法工作效率的性能指标:
- 总迁移时间
- 停机时间
- 总数据传输量
- 应用性能损失:虚拟机内部应用执行延时或对外表现出的性能抖动
动态迁移应该对虚拟机、运行在虚拟机内的应用程序透明。停机时间内服务不可用,较长的停机时间会导致可察觉的服务中断,引起一致性和透明性等问题。
动态迁移的目标就是可忽略不计的宕机时间、最小的网络带宽消耗、合理的总迁移时间,而且不要因为资源争夺而干扰在同一主机内的其他应用服务。
2. 内存预拷贝迁移方法(主流)
应用最多,典型 VMWare 和 XenSource 分别推出的 VMotion 和 Xen-Motion。
预拷贝迁移的工作过程:
- VMM 将所有内存页标记为脏页面并拷贝到目的主机上
- 然后迭代拷贝(采用几轮增量同步,上一轮传输过程中被修改过的页面在本次迁移,当需要传输的内存小于一个阈值或者迭代次数超过设置的最大迭代次数时停止迭代拷贝)内存页,同时虚拟机继续运行。
- 挂起源主机上的虚拟机,拷贝 CPU 状态和最后一轮产生的脏页面到目的主机,然后恢复目的主机上的虚拟机。
预拷贝实现了在虚拟机运行的同时进行迁移,而且具有可靠性,如果目的主机出现故障,则终止迁移过程,继续在源主机上运行虚拟机。
对于特定类型的虚拟机效果可能不明显:迁移CPU敏感、内存敏感、应用程序负载密集的虚拟机、网络带宽低时,虚拟机内存页面弄脏速度可能比网络传输速度快,进而延长停机时间和总迁移时间。
优化预拷贝迁移需要考虑导致内存脏页面产生率比网络传输率大的问题。
2.1 基于内存压缩的预拷贝迁移方法
- 压缩内存间接增加了用于迁移的网络带宽,压缩的脏页面在网络传输的时间减少。
- 由于传输数据量的减少,迁移网络流量急剧下降。
自适应内存压缩动态迁移算法 MECOM
和 XBRLE
动态迁移算法。
内存页面分为三类:大量零字节组成、高相似度、低相似度。
MECOM 算法识别页面类型,针对不同类型的页面采用不同的压缩算法:
对于大量零字节组成的页面:只记录页面中非零字节的值和偏移等信息;
对高相似度页面采用 WKdm
算法;
对低相似度页面,采用具有高压缩比的通用压缩算法,如 LZO
。
XBRLE 动态迁移算法:
Delta 压缩。传输内存页面改变的部分而不是整个页面。通过对当前页面和修改前页面应用异或操作计算 Delta 页(该页面被修改的部分),然后在目的端对修改前页面和 Delta 页应用异或操作得到当前页面。
2.2 基于内存冗余数据消除策略的预拷贝迁移方法
预拷贝迁移过程中,在每个迁移阶段都有许多重复数据的传输。
在迁移的第一阶段,存在大量的零内存页和相同或相似内存页,在之后的迭代迁移阶段,大多数迁移内存页面只有少量的数据被修改。因此也存在很多相同或相似内存页。
MDD 动态迁移算法将冗余数据删除策略应用于预拷贝迁移中。 MDD 根据据运行时内存镜像的自相似性来减少重复内存数据的传输:使用基于哈希的指纹发现相同或相似的内存页面,在这些内存页面之间应用抑或操作使内存页面的重复部分变成连续的零块,并采用 RLE 进行压缩,然后再传输压缩后的数据。在目的主机上进行逆向冗余数据消除以得到原本的内存镜像。
MDD 还可通过多线程技术减少冗余数据删除带来的额外时间开销,并维护双哈希消除数据的不一致性。
2.3 通过改变内存传输顺序优化预拷贝迁移方法
一些内存由于频繁修改而被多次传输,会消耗网络带宽,增加总迁移时间。
该方法思想是:使频繁修改的内存页面尽可能在最后阶段传输,从而减少内存页的重传数目。
rapid page dirtying 方法:周期性查看当前轮的脏页面位图,只传输那些在前一轮迭代拷贝中弄脏而在扫描时还没有再次被弄脏的内存页面。该方法问题是;在相隔的两次迭代拷贝被弄脏,该页面仍需重新传输。
**页面传输动态重排序方法:**引入页面优先级位图,将页面根据不同的页面权重组织起来,为更新频率低的页面赋予较高的优先级,按照优先级顺序传输内存页面,把更新频繁的页面留到最后传输。
2.4 基于调节脏页面产生速率的预拷贝迁移方法
Rouge process stunning 限制每个进程发生写故障次数,达到写故障次数限制的进程进入等待队列。
**将 CPU 调度引入预拷贝迁移过程来控制脏页面产生率。**在迭代拷贝阶段调节分配给虚拟机的cpu时间片以控制写内存速度。该方法适用于能容忍一定程度的性能降低,而服务中断会导致严重问题的应用程序。
2.5 通过新网络技术优化内存页面传输
RDMA(remote direct memory access) 和 OS-bypass。
2.6 其他预拷贝迁移优化方法
-
对CPU依赖应用程序的虚拟机的方法
-
对于访存密集型应用进行优化的方法
3. 内存后拷贝迁移方法
推迟虚拟机内存的传输。
- 挂起源主机上需要迁移的虚拟机,拷贝处理器状态到目的主机并在其上恢复。
- 然后通过网络从源主机获取内存页面——按需取页、主动推送
主要方法:页面预取技术和动态内存气球驱动机制。
页面预取技术:根据网络缺页异常发生的位置和空间局部性原理,预测目的主机上虚拟机的内存页面访问位置,调整主动推送页面的顺序,使得缺页异常附近的页面被虚拟机访问之前传输到目的主机。
动态内存气球驱动机制:周期性地从虚拟机回收空闲页面,减少迁移过程中空闲页面的传输。
4. 基于内存混合复制迁移方法
可用于进程迁移。
- 通过一次预拷贝将所有内存页拷贝到目的主机上
- 挂起虚拟机,将处理器状态和不可分页的脏页面拷贝到目的主机上,并在目的主机上恢复虚拟机
- 后拷贝,从源主机推送剩余的脏页面
HybMEC 算法
- 全内存同步
- 内存位图同步
- 脏内存同步
5. 基于日志跟踪重现的动态迁移方法
伺机重现虚拟机迁移和CR/TR-Motion通过日志的跟踪和重现技术同步虚拟机状态。
伺机重现虚拟机迁移:GUI 级捕获用户与应用程序间的交互,并生成相应的日志文件传输到目的主机,在目的端虚拟机中重现用户的交互行为。要求主机与源主机的虚拟机有相同的配置和初始状态,辅助使用加密哈希技术识别和传输不同的虚拟机状态。
CR/TR-Motion:采用检查点/恢复和跟踪重现技术实现快速透明的虚拟机动态迁移。
6. 虚拟机动态迁移方法的应用与发展
未来研究方向:
- 广域网虚拟机动态迁移。在几个数据中心之间负载均衡。不仅要传输虚拟机内存,而且要传输本地持久化状态和网络连接。
目前提出的用于广域网的动态迁移方法,主要解决在广域网下传输磁盘状态和透明的迁移网络连接。
方法:结合预拷贝迁移和写字节流的块级解决方案,采用结合 IP tunneling 和 dynami DNS 的临时网络重定向方案解决网络连接的迁移问题。
- 多虚拟机同时迁移策略。当维护一个数据中心时,将它上面的虚拟机都迁移到其它数据中心。在同一位置(如在一台物理机上)的虚拟机通常有很多相同的内容,即各个虚拟机之间有许多相同的内存内容。
冗余数据删除的方法迁移在同一位置的一组虚拟机,使用content-hashing 实现页面级和子页面级的冗余数据删除策略。
Shrinker 是在广域网中迁移多个虚拟机的动态迁移系统。
- 移动云计算的迁移方法研究。移动终端的计算能力、存储大小和电源供应有限,移动网络带宽通常较低,现有的迁移方法不能直接应用到云计算中,需要根据云计算的特点和问题提出相应的迁移方法。
更多推荐
所有评论(0)