一种串行与并行相结合的虚拟机在线迁移方法

文档序号:9843970阅读:873来源:国知局
一种串行与并行相结合的虚拟机在线迁移方法
【技术领域】
[0001]本发明涉及虚拟机在线迀移方法,具体涉及一种串行与并行相结合的虚拟机在线 迀移方法。
【背景技术】
[0002] 在线迀移技术作为虚拟化技术的一部分,能够在服务器或者数据中心异常时,实 现工作负载的自动转移。在虚拟机维护期间可以将负载迀移至空闲虚拟机,保证业务不间 断,除此之外,虚拟机在线迀移技术还可用于灾难恢复来实现容灾。
[0003] 目前虚拟机在线迀移技术大多采用主流的预拷贝策略,迀移时循环地将源主机上 虚拟机的内存数据发送至目的主机的虚拟机。循环第一轮发送所有内存页数据,接下来的 每一轮循环发送上一轮预拷贝过程中被虚拟机VM写过的脏页。直至达到有限循环上限w,预 拷贝循环结束,进入停机拷贝阶段,源主机被挂起,不再有内存更新,最后一轮循环中的脏 页被传输至目的主机的虚拟机VM。迀移代价为虚拟机迀移过程中迀移时延和宕机时间的总 和,主要受待转移的内存大小影响。
[0004] 现有的研究大多选用单一串行或并行迀移进行研究。虚拟机在线迀移技术的迀移 代价以总迀移时间来衡量。在单一串行迀移过程中,长时间的虚拟机在线迀移过程,和高脏 页率使得每次循环转移的内存增加,从而总迀移时间加长。而单一并行迀移过程,众多VM之 间并行迀移,会因竞争网络带宽而导致总的内存转移时间拖长,从而使得总迀移时间加长。 因此,要降低总迀移代价需要缩短内存转移时间。由于脏页率由VM上运行的服务决定,故而 提供充足的网络带宽可以有效避免并行迀移的VM之间,因竞争网络带宽而增加内存转移时 间的情况。如今全双工网络已能够支持跨汇聚层的两个迀移过程同时双向进行,因此串行 与并行相结合的虚拟机在线迀移方法更能满足降低迀移代价的需求。

【发明内容】

[0005] 针对现有技术中存在的问题,本发明提供一种串行与并行相结合的虚拟机在线迀 移方法,能够缩短云环境下连续性服务或灾难恢复时等待大量虚拟机迀移的时间,也为后 续依赖此虚拟机混合迀移方法的虚拟机整合奠定基础。
[0006] 本发明是通过以下技术方案来实现:
[0007] -种串行与并行相结合的虚拟机在线迀移方法,包括如下步骤,
[0008] 步骤1,将迀移前后的虚拟机与其宿主机的映射变化分别抽象为迀移前后矩阵,其 中矩阵中的每个元素代表虚拟机与其宿主机的映射关系;
[0009] 步骤2,对迀移前后矩阵逐行比较,找出两宿主机上在迀移前后仅对调位置的虚拟 机,将这两个对调迀移过程判定为无用迀移,并将其剔除后剩余有用迀移;
[0010] 步骤3,根据混合迀移算法将有用迀移生成串行与并行迀移队列;
[0011] 步骤4,根据生成的串行与并行迀移队列输出串行与并行迀移批次及最早迀移时 间,用于后续虚拟机的整合。
[0012] 优选的,步骤1中,还包括生成虚拟机迀移前后源主机和目的主机位置集合的步 骤。
[0013] 进一步,步骤2中,通过查找源主机和目的主机位置集合,找出迀移前后仅交换了 源主机和目的主机位置的元素,该元素对应的虚拟机即两宿主机上在迀移前后仅对调位置 的虚拟机。
[0014] 优选的,步骤3包括如下步骤,
[0015] 3.1初始化迀移参数并记录虚拟机分配的内存;
[0016] 3.2若迀移前后源主机和目的主机连接同一接入层交换机,则该迀移过程可与其 他迀移过程并行;利用混合迀移算法标记能够并行迀移的虚拟机批次序号,得到并行迀移 队列;
[0017] 3.3若迀移前后源主机和目的主机连接不同接入层交换机,那么该迀移过程将需 要独占连接至汇聚层交换机的链路,因此独占该链路的迀移均需要排队等待,利用混合迀 移算法标记需要顺序迀移的虚拟机批次序号,得到串行迀移队列;不需占用该链路的迀移 能够与此次迀移并行,纳入同一并行迀移批次。
[0018] 优选的,步骤4中,每个并行迀移队列中最后结束迀移的时间为该批次总迀移时 间,也是下一并行迀移批次的最早开始时间;经过混合迀移算法的标记生成串行迀移队列, 以及能够与串行迀移队列中的每个迀移过程并行进行的并行迀移队列;分别统计串行迀移 批次和各个并行迀移队列,输出各并行迀移中最大迀移内存和最早迀移时间,并生成MIGR 统计表;用于后续虚拟机的整合。
[0019]优选的,步骤1具体的包括如下步骤,
[0020] 1.1构造迀移前后虚拟机相对于其宿主机的映射矩阵;
[0021] 在虚拟机混合迀移的场景中,将迀移前虚拟机与其宿主机映射关系抽象为矩阵 Pm,n,迀移后虚拟机与其宿主机的映射关系抽象为矩阵;Pm, n矩阵中每一个元素代表 迀移前第i台虚拟机VMi是否放置在第j台宿主机HM」上,是为1,否为0; /^"矩阵中每一个元 素代表迀移后第i台虚拟机VM\是否放置在第j台宿主机HM、上,是为1,否为0;得到的 矩阵如下所示,
[0022]
[0023] 1.2生成虚拟机迀移前后源主机和目的主机集合;
[0024] 对迀移前矩阵Pm,n和迀移后矩阵/^"逐行统计每个虚拟机迀移前后的宿主机编号
生成迀移前后源、目的主机位置集合如下,
[0025]
[0026] 其中,/a/r""为第k台虚拟机的源主机,//Mf __为第k台虚拟机迀移后的目的 主机,k=l,2,. . .,m,m为矩阵中虚拟机的个数。
[0027]进一步,步骤2具体的包括如下步骤,
[0028] 2.1查找迀移前后仅交换源、目的主机的迀移;查找源主机和目的主机位置集合, 找出迀移前后仅交换了源主机与目的主机的两个虚拟机,即两宿主机上在迀移前后仅对调 位置的虚拟机;
[0029] 2.2剔除无用迀移,若迀移前后仅对调源、目的主机的两个虚拟机所获得的内存资 源相同,则将这两个对调迀移过程判定为无用迀移,将其迀移状态标记为已迀移,不再列入 混合迀移算法待安置队列,其余的迀移过程为有用迀移。
[0030] 再进一步,步骤3具体的包括如下步骤,
[0031] 3.1初始化迀移参数并记录虚拟机分配的内存;
[0032] 3.11将所有有用迀移的虚拟机状态设置为未安排;初始化虚拟机迀移批次序号mb =〇,设置迀移安置数组ΜΑκ,其中MAi,i = 1,2,. . .,K为第i台虚拟机VMi的迀移批次序号,K为 全部有用迀移的虚拟机数,设置参数为第i台虚拟机的内存,用来逐一记录每个虚拟 机所分配的内存;
[0033] 3.12设置代表宿主机册,接入层交换机31^与汇聚层交换机31^两两之间链路状 态的四个参数一一Lmk,sw,Linkf-i,Linkr'swAm,Linkr4i"- sw"'并设置 条链路的初始状态为空闲,其中为第k台虚拟机的源主机连接源接入层交换机的 链路状态,为第k台虚拟机的目的主机连接目的接入层交换机的链路状态, ^为源接入层交换机连接汇聚层交换机的链路状态,为汇聚层 交换机连接目的接入层交换机的链路状态;
[0034] 3.2利用混合迀移算法标记能够并行迀移虚拟机的批次序号;
[0035] 3.21设置k循环,k为全局循环次数且k=l,2, ...,K,来进行全局匹配过程;在算法 中,对全部的Κ台虚拟机从1开始到Κ进行遍历,VMk为遍历时的第k台虚拟机;
[0036] 3.22当遍历VMk时,若其没有进行迀移安排,则mb自增1,设置VM k在迀移安置数组所 对应的第k元素值为迀移批次序号mb值即MAk=mb,并标记VMk为已安排迀移;设置VM k迀移时 涉及的源主机^?/广~到源主机连接的源接入层交换机SifT…与目的主机连接的目的接 入层交换机5^厂'' 到目的主机的两条链路如汝为独占状 态,;
[0037] 3.23当VMk的源主机与目的主机分别连接不同的接入层交换 机,则设%与ii/汝f'为独占状态,即本次迀移需要独占跨汇聚层交换 机的链路,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1