虚拟机动态迁移方法、设备及存储介质与流程

文档序号:18463903发布日期:2019-08-17 02:16阅读:426来源:国知局
虚拟机动态迁移方法、设备及存储介质与流程

本发明涉及云计算数据处理技术领域,尤其涉及一种虚拟机动态迁移方法、设备及存储介质。



背景技术:

虚拟化,特别是服务器虚拟化,可以提高硬件资源的利用率,充分发挥物理机器的计算能力,而且能迅速应对不断变化的需求,提高办公的自动化水平,因而广泛应用于数据中心、云计算等环境。虚拟机动态迁移是虚拟化的核心技术之一,它是在虚拟机的运行过程中,将整个虚拟机的运行状态快速、完整地从原来的物理机迁移到另一台物理机上,并且整个迁移过程是平滑的,用户几乎不会察觉到任何差异。使用虚拟机动态迁移技术能够有效实现服务器的负载均衡、在线维护和升级、灾难恢复等。

虚拟机的物理内存是迁移过程中所需处理状态中最大、最复杂的一部分,因为动态迁移中虚拟机仍要提供实时的服务,内存迁移必须考虑停机时间和总迁移时间的矛盾,使它们尽可能同时减小。

通常,内存迁移的过程可以分为如下三个阶段:

(1)迭代拷贝(pushcopy)阶段:源虚拟机运行期间传输部分内存页到目标宿主机,为保证一致性,该阶段被修改的内存页必须被再次传送。

(2)停机拷贝(stop-and-copy)阶段:源虚拟机被停机,拷贝内存页到目标宿主机,然后启动目标虚拟机。

(3)按需拷贝(pullcopy)阶段:目标虚拟机运行期间,如果其上的进程所需内存页未被拷贝,则该内存页产生页错误,通过网络从源虚拟机将该页拷贝过来。

在现有技术中,常用的方法有后拷贝(post-copy)和预拷贝(pre-copy)方法。其中,后拷贝采用stop-and-copy和pull两个阶段,首先暂停源虚拟机,在短暂的stop-and-copy阶段只传输关键的内核结构内存页到目标宿主机,然后启动目标虚拟机,剩余其他内存页将在首次使用产生页错误时再通过网络从源虚拟机中取回。这种方法虽然停机时间很短,但是总迁移时间将大大增长,而且目标虚拟机在pull阶段性能严重下降。另一方面,后拷贝极不稳定,一旦源虚拟机和目标虚拟机之一在pull阶段发生错误,迁移就无法将虚拟机恢复至正确状态。

预拷贝由一定数量的迭代的push阶段和非常短的stop-and-copy阶段组成。预拷贝方法虽然一定程度上平衡停机时间与总迁移时间之间的矛盾,但没有解决一个内存页应该在pre-copy阶段传输还是在stop-and-copy阶段传输的问题。



技术实现要素:

本发明的主要目的在于提出一种虚拟机动态迁移方法、设备及存储介质,旨在解决虚拟机动态迁移过程长、易出错、内存页传输阶段不确定等问题。

为实现上述目的,本发明提供的一种虚拟机动态迁移方法,所述方法包括步骤:

计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率;

判断所述第一脏页率是否小于预设的当前脏页率阈值;

若是,则将符合条件的内存页发送至接收端,其中,所述符合条件的内存页为第一脏页率小于所述预设的当前脏页率阈值。

此外,为实现上述目的,本发明还提出一种设备,所述设备包括处理器及存储器;

所述处理器用于执行存储器中存储的虚拟机动态迁移序,以实现上述的方法。

此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的方法。

本发明提出的虚拟机动态迁移方法、设备及存储介质,通过计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率,当第一脏页率小于预设的当前脏页率阈值时,则将符合条件的内存页发送至接收端。采用本发明的虚拟机动态迁移方法,基于脏页率预测的预拷贝减少了数据传输量,每轮迭代中传输的内存页数量减少,只有脏页率小于当前脏页率阈值的内存页才会被传送,总的迭代次数减少,缩短了迁移时间。

附图说明

图1为本发明第一实施例提供的虚拟机动态迁移方法的流程示意图;

图2为本发明第一实施例提供的虚拟机动态迁移方法的另一流程示意图一;

图3为本发明第一实施例提供的虚拟机动态迁移方法的另一流程示意图二;

图4为本发明第一实施例提供的虚拟机动态迁移方法的另一流程示意图三;

图5为本发明第二实施例提供的虚拟机动态迁移方法的流程示意图;

图6为本发明第三实施例提供的虚拟机动态迁移方法的流程示意图;

图7为本发明第四实施例提供的设备硬件架构的示意图;

图8为图7中虚拟机动态迁移程序的模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。

第一实施例

如图1所示,为本发明第一实施例提供的虚拟机动态迁移方法的流程示意图。在图1中,所述虚拟机动态迁移方法包括以下步骤:

步骤110,计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率。

具体的,启动内存迁移并同时开始预测脏页率,在本发明中,脏页率为:接下来一段时间内,内存页被改写的概率,也就是根据之前一段时间内内存页的改写情况估计出来的预测值。本领域技术人员可以理解的是,脏页率与内存页的改写速率相关。改写速率表示一段时间内内存页的平均改写次数。改写速率越大,脏页率越高。而相反地,由于脏页率是概率值,表示内存页被修改的可能性,从而脏页率越高,改写速率未必随之越大。

可选的,在本实施例中,将传输到目的端被修改的内存页称之为脏页。若内存页被频繁修改,也就是改写速率大,则将该内存页称之为高脏页。

在本实施例中,待迁移列表包括:标记在前一轮迭代过程中新产生的脏页,即:本轮迭代中需要传送的内存页。对于首轮迭代的情况,待迁移列表中为所有内存页。

在迭代过程中,由于被内存页被修改的频率是变化的,从而脏页率也是随之动态变化的。在步骤110中,在第一时刻分别计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率。本实施例中,将首轮迭代开始时刻至第一时刻之间的时间区间作为更新脏页率的的时间段。

步骤120,判断所述第一脏页率是否小于预设的当前脏页率阈值;若是,则进入步骤130,若否,则进入步骤140。

具体的,由于脏页率是动态变化的,则脏页率阈值也是动态变化的。随着迭代次数的增加,每轮迭代的持续时间在整体趋势上是缩短的,在每轮迭代持续时间内真正产生的脏页数量将减少,从而可以适当增加脏页率阈值,以使预拷贝阶段传输更多的内存页,缩短停机时间。

步骤130,将符合条件的内存页发送至接收端。

具体的,当第一脏页率小于当前脏页率阈值时,则该内存页为符合条件的内存页,可以在本轮迭代中传输至接收端。

可选的,在将符合条件的内存页发送至接收端之后,则将该内存页从待迁移列表中清除。

步骤140,暂停传输所述内存页。

具体的,当第一脏页率大于等于当前脏页率阈值时,则说明该内存页在迭代中有很大的概率在随后的时间内被修改,则在本轮迭代中暂停传输。

可选的,在步骤110之前,还可以包括以下步骤:

判断本轮迭代是否为首轮迭代,若是,则待迁移列表中的内存页为所有内存页;若否,则待迁移列表中的内存页为前一轮迭代过程中产生的被修改的内存页。

在本实施例中,首轮迭代及首轮迭代之后的每轮迭代都可以依据脏页率选择传输的内存页,对从未改写的内存页,在首轮传输;对极少改写的内存页,在首轮之后的第x轮传送之后如果被修改,其脏页率将增加并迅速衰减,待其脏页率降低之后再传送,其中,x为大于1的正整数;对频繁改写的内存页,改进方法甚至能在首轮中预测出其属于高脏页,应该留待后续迭代中传输或者在停机阶段传输。

可选的,为了避免迁移中进程阻塞,可以将高脏页从待迁移列表中移除,当预测被移除的内存页的脏页率降低时,再将其添加至待迁移列表。

可选的,作为对本实施例的进一步改进,对于脏页率高于预设的当前脏页率阈值而暂停传输的内存页,则存在以下三种方式在后续的迭代中继续传输至接收端:

方式一:

如图2所示,在步骤140之后,所述虚拟机动态迁移方法还包括:

步骤210,在本轮迭代中,计算内存页在第一时刻之后的至少一个预设时间段的第二脏页率;

步骤220,判断所述第二脏页率是否小于预设的当前脏页率阈值;若是,则进入步骤230;

步骤230,将所述内存页发送至接收端。

具体的,在本轮迭代中的第一时刻之后,每隔预设时间段(t),则更新内存页的脏页率(例如第二脏页率)。当判断第二脏页率小于预设的当前脏页率阈值时,说明对应的内存页在本轮迭代中虽然被修改,但后续的进程中并未再次改写或者改写概率较低,且本轮迭代时间相对较差,在经过多个预设时间段之后,该内存页的脏页率已经减小,则将该内存页在本轮迭代发送至接收端。否则,继续暂停传输该内存页。

方式二:

如图3所示,在步骤140之后,所述虚拟机动态迁移方法还包括:

步骤310,在本轮迭代中,计算所述内存页在第一时刻之后的至少一个预设时间段的第二脏页率;

步骤320,判断所述第二脏页率是否大于所述第一脏页率,且所述第二脏页率与第一脏页率的差值是否小于预设的阈值;若是,则进入步骤330;

步骤330,将所述内存页发送至接收端。

具体的,在本轮迭代中的第一时刻之后,每隔预设时间段(t),则更新内存页的脏页率(例如第二脏页率)。当第二脏页率高于第一脏页率时,计算从第一脏页率到第二脏页率的增加值,若增加值小于预设的阈值,则将该内存页在本轮迭代发送至接收端。否则,继续暂停传输该内存页。

方式三:

在虚拟机进入停机阶段时,将未传输的内存页发送至所述接收端。

可选的,如图4所示,在步骤130之后,本实施例的虚拟机动态迁移方法还包括:

步骤410,判断本轮迭代是否结束;若是,则进入步骤410,若否,则返回步骤110;

步骤410,标记本轮迭代中所产生的被修改的内存页,作为下一轮迭代中需传送的内存页,以更新所述待迁移列表。

具体的,当本轮迭代结束时,则标记本轮迭代中新产生的脏页,并作为下一轮迭代中需传输的内存页,进而更新待迁移列表。

本实施例提供的虚拟机动态迁移方法,通过计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率,当第一脏页率小于预设的当前脏页率阈值时,则将符合条件的内存页发送至接收端。采用本实施例的虚拟机动态迁移方法,基于脏页率预测的预拷贝减少了数据传输量,每轮迭代中传输的内存页数量减少,只有脏页率小于当前脏页率阈值的内存页才会被传送,总的迭代次数减少,缩短了迁移时间。

第二实施例

如图5所示,为本发明第二实施例提供的虚拟机动态迁移方法的流程示意图。在图5中,所述虚拟机动态迁移方法是在第一实施例的基础上作出的进一步改进,区别仅在于,所述方法还包括:

步骤510,判断本轮迭代中已经迁移的内存页是否小于预设值;若是,则进入步骤520,若否,则返回步骤110计算内存页的脏页率;

步骤520,终止迭代且虚拟机进入停机阶段;

步骤530,向接收端发送未传输的内存页。

具体的,当本轮迭代中已迁移的内存页小于预设值,则迭代终止,也就是在高脏页较多时迅速终止迭代,虚拟机进入停机阶段,并向接收端传输剩余内存页,且在停机阶段,还会向接收端传输其他非内存状态。

本实施例的虚拟机动态迁移方法,当本轮迭代中已经迁移的内存页小于预设值时,则终止迭代且虚拟机进入停机阶段,并向接收端发送未传输内存,减少了迭代次数,避免了高脏页的重传,缩短了总迁移时间。

如图6所示,为本发明第三实施例提供的虚拟机动态迁移方法的流程示意图。在图6中,所述虚拟机动态迁移方法是在第一实施例的基础上作出的进一步改进,区别仅在于,所述方法还包括:

步骤610,判断迭代次数是否达到最大值;若是,则进入步骤620,若否,则返回步骤110计算内存页的脏页率;

步骤620,终止迭代且虚拟机进入停机阶段;

步骤630,向接收端发送未传输的内存页。

具体的,当迭代次数达到最大值时,则迭代终止,虚拟机进入停机阶段,并向接收端传输剩余内存页,且在停机阶段,还会向接收端传输其他非内存状态。

本实施例的虚拟机动态迁移方法,当迭代次数达到最大值时,则终止迭代且虚拟机进入停机阶段,并向接收端发送未传输内存,减少了总的迭代次数,缩短了迁移时间。

第四实施例

如图7所示,为本发明第四实施例提供一种设备硬件架构的示意图。在图7中,设备包括:存储器710、处理器720及存储在所述存储器710上并可在所述处理器720上运行的虚拟机动态迁移程序730。在本实施例中,所述的虚拟机动态迁移程序730包括一系列的存储于存储器710上的计算机程序指令,当该计算机程序指令被处理器720执行时,可以实现本发明各实施例的虚拟机动态迁移操作。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,虚拟机动态迁移程序730可以被划分为一个或多个模块。如图8所示,虚拟机动态迁移程序730包括:计算模块810、判断模块820、发送模块830、暂停传输模块840、标记模块850以及迭代终止模块860。其中,

计算模块810,用于计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率。

具体的,启动内存迁移并同时计算模块810开始预测脏页率,在本发明中,脏页率为:接下来一段时间内,内存页被改写的概率,也就是根据之前一段时间内内存页的改写情况估计出来的预测值。本领域技术人员可以理解的是,脏页率与内存页的改写速率相关。改写速率表示一段时间内内存页的平均改写次数。改写速率越大,脏页率越高。而相反地,由于脏页率是概率值,表示内存页被修改的可能性,从而脏页率越高,改写速率未必随之越大。

可选的,在本实施例中,将传输到目的端被修改的内存页称之为脏页。若内存页被频繁修改,也就是改写速率大,则将该内存页称之为高脏页。

在本实施例中,待迁移列表包括:标记在前一轮迭代过程中新产生的脏页,即:本轮迭代中需要传送的内存页。对于首轮迭代的情况,待迁移列表中为所有内存页。

在迭代过程中,由于被内存页被修改的频率是变化的,从而脏页率也是随之动态变化的。计算模块810在第一时刻分别计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率。本实施例中,将首轮迭代开始时刻至第一时刻之间的时间区间作为更新脏页率的的时间段。

判断模块820,用于判断所述第一脏页率是否小于预设的当前脏页率阈值;若是,则触发发送模块830,若否,则触发暂停传输模块840。

具体的,由于脏页率是动态变化的,则脏页率阈值也是动态变化的。随着迭代次数的增加,每轮迭代的持续时间在整体趋势上是缩短的,在每轮迭代持续时间内真正产生的脏页数量将减少,从而可以适当增加脏页率阈值,以使预拷贝阶段传输更多的内存页,缩短停机时间。

发送模块830,用于将符合条件的内存页发送至接收端。

具体的,当第一脏页率小于当前脏页率阈值时,则该内存页可以在本轮迭代中传输至接收端。

可选的,在将符合条件的内存页发送至接收端之后,则将该内存页从待迁移列表中清除。

暂停传输模块840,用于暂停传输所述内存页。

具体的,当第一脏页率大于等于当前脏页率阈值时,则说明该内存页在迭代中有很大的概率在随后的时间内被修改,则暂停传输模块840在本轮迭代中暂停传输。

判断模块820,还用于判断本轮迭代是否为首轮迭代,若是,则待迁移列表中的内存页为所有内存页;若否,则待迁移列表中的内存页为前一轮迭代过程中产生的被修改的内存页。

在本实施例中,首轮迭代及首轮迭代之后的每轮迭代都可以依据脏页率选择传输的内存页,对从未改写的内存页,在首轮传输;对极少改写的内存页,在首轮之后的第x轮传送之后如果被修改,其脏页率将增加并迅速衰减,待其脏页率降低之后再传送,其中,x为大于1的正整数;对频繁改写的内存页,改进方法甚至能在首轮中预测出其属于高脏页,应该留待后续迭代中传输或者在停机阶段传输。

可选的,为了避免迁移中进程阻塞,可以将高脏页从待迁移列表中移除,当预测被移除的内存页的脏页率降低时,再将其添加至待迁移列表。

可选的,作为对本实施例的进一步改进,对于脏页率高于预设的当前脏页率阈值而暂停传输的内存页,则存在以下三种方式在后续的迭代中继续传输至接收端:

方式一:

计算模块810,在本轮迭代中,还用于计算所述内存页在第一时刻之后的至少一个预设时间段的第二脏页率;

判断模块820,还用于判断所述第二脏页率是否小于预设的当前脏页率阈值;若是,则发送模块830,将所述内存页发送至接收端。

具体的,在本轮迭代中的第一时刻之后,每隔预设时间段(t),则更新内存页的脏页率(例如第二脏页率)。当判断模块820判断第二脏页率小于预设的当前脏页率阈值时,说明对应的内存页在本轮迭代中虽然被修改,但后续的进程中并未再次改写或者改写概率较低,且本轮迭代时间相对较差,在经过多个预设时间段之后,该内存页的脏页率已经减小,则发送模块830将该内存页在本轮迭代发送至接收端。否则,暂停传输模块840继续暂停传输该内存页。

方式二:

判断模块820,还用于判断所述第二脏页率是否大于所述第一脏页率,且所述第二脏页率与第一脏页率的差值是否小于预设的阈值;若是,则发送模块830,将所述内存页发送至接收端。

具体的,在本轮迭代中的第一时刻之后,每隔预设时间段(t),则更新内存页的脏页率(例如第二脏页率)。当判断模块820判断第二脏页率高于第一脏页率时,计算从第一脏页率到第二脏页率的增加值,若判断模块820判断增加值小于预设的阈值,则发送模块830将该内存页在本轮迭代发送至接收端。否则,暂停传输模块840继续暂停传输该内存页。

方式三:

发送模块830,还用于在虚拟机进入停机阶段时,将未传输的内存页发送至所述接收端。

可选的,判断模块,还用于判断本轮迭代是否结束;若是,则触发标记模块850,用于标记本轮迭代中所产生的被修改的内存页,作为下一轮迭代中需传送的内存页,以更新所述待迁移列表。

具体的,当本轮迭代结束时,则标记模块850标记本轮迭代中新产生的脏页,并作为下一轮迭代中需传输的内存页,进而更新待迁移列表。

可选的,判断模块820,还用于判断本轮迭代中已经迁移的内存页是否小于预设值;若是,则触发迭代终止模块860,若否,则触发计算模块810继续计算内存页的脏页率;

可选的,在其他实施例中,判断模块820,还用于判断迭代次数是否达到最大值;若是,则触发迭代终止模块860终止迭代且虚拟机进入停机阶段,若否,则触发计算模块810继续计算内存页的脏页率。

迭代终止模块860,用于在判断模块820判断本轮迭代中已经迁移的内存页小于预设值或者迭代次数达到最大值时,终止迭代且虚拟机进入停机阶段;

发送模块830,还用于在停机阶段向接收端发送未传输的内存页。

具体的,当判断模块820判断本轮迭代中已迁移的内存页小于预设值或者迭代次数达到最大值时,则迭代终止,也就是在高脏页较多时迅速终止迭代,虚拟机进入停机阶段,并向接收端传输剩余内存页,且在停机阶段,还会向接收端传输其他非内存状态。

本实施例提供的设备,通过计算模块810计算待迁移列表中的每个内存页在本轮迭代中的第一脏页率,当判断模块820判断第一脏页率小于预设的当前脏页率阈值时,则发送模块830将符合条件的内存页发送至接收端。采用本实施例的设备,基于脏页率预测的预拷贝减少了数据传输量,每轮迭代中传输的内存页数量减少,只有脏页率小于当前脏页率阈值的内存页才会被传送,总的迭代次数减少,缩短了迁移时间。

第五实施例

本发明实施例还提供了一种计算机可读存储介质。这里的计算机可读存储介质存储有一个或者多个程序。其中,计算机可读存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。当计算机可读存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述实施例所提供的虚拟机动态迁移方法。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1