一种虚拟机热迁移方法、装置、设备及存储介质与流程

文档序号:14389778阅读:150来源:国知局
一种虚拟机热迁移方法、装置、设备及存储介质与流程

本公开一般涉及计算机领域,具体涉及虚拟机领域,尤其涉及一种虚拟机热迁移方法、装置、设备及存储介质。



背景技术:

随着云技术的不断普及,当云主机因为环境或者其他原因需要从物理机上搬迁时,系统管理员希望在不影响当前虚拟机使用情况下将它迁移至其他地方。

但是,在进行虚拟机热迁移时,目前已有的虚拟机迁移工具在创建步骤失败的情况下没有重试机制,即在目标主机上进行创建任务时,如果创建失败,就无法进行后续的步骤,不得不中断或者终止虚拟机热迁移。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种虚拟机热迁移方法、装置、设备及存储介质,以实现在虚拟机热迁移过程中出现创建失败的状况时,在较少人工干预的情况下获得及时进行处理。

第一方面,本发明实施例提供一种虚拟机热迁移方法,所述方法包括:

在目标主机上进行创建任务;

对于每个创建任务,确定创建任务失败时,重新在目标主机上执行该创建任务,直到同一创建任务失败的次数达到设定阈值时,终止虚拟机热迁移;

在各创建任务成功执行后,进行迁移操作。

优选的,所述创建任务具体包括:

在目标主机上创建虚拟机存储目录;

在目标主机上创建虚拟机存储池;

在目标主机上创建虚拟机磁盘创建。

进一步,所述在目标主机上进行创建任务之前,还包括:

获取满足迁移条件的物理机作为目标主机;

获取虚拟机的磁盘信息。

更进一步,所述获取满足迁移条件的物理机作为目标主机,具体包括:

根据设定的物理机性能参数从物理机列表中筛选满足性能条件的物理机;

从满足性能条件的物理机中排除非正常状态及正在迁入虚拟机的物理机,获得可用物理机列表;

从可用物理机列表中确定物理机作为目标主机,并修改虚拟机状态。

更进一步,所述获取虚拟机的磁盘信息,具体包括:

获取虚拟机磁盘的名称和大小。

优选的,在各创建任务成功执行后,进行迁移操作之前,还包括:

设置超时定时器;

所述进行迁移操作,具体包括:

进行迁移操作,并在迁移操作超过设定时长时,撤销迁移命令,并删除目标主机上已经通过创建任务创建的磁盘。

进一步,所述终止虚拟机热迁移,具体包括:

删除虚拟机中在热迁移过程中增加的数据,并修改虚拟机状态。

第二方面,本发明实施例还提供一种虚拟机热迁移装置,所述装置包括:

创建单元,用于在目标主机上进行创建任务;

重试单元,用于对于每个创建任务,确定创建任务失败时,重新在目标主机上执行该创建任务,直到同一创建任务失败的次数达到设定阈值时,终止虚拟机热迁移;

迁移单元,用于在各创建任务成功执行后,进行迁移操作。

进一步,所述创建任务具体包括:

在目标主机上创建虚拟机存储目录;

在目标主机上创建虚拟机存储池;

在目标主机上创建虚拟机磁盘创建。

进一步,所述创建单元还用于:

在目标主机上进行创建任务之前,获取满足迁移条件的物理机作为目标主机,获取虚拟机的磁盘信息。

优选的,所述迁移单元还用于:

在各创建任务成功执行后,进行迁移操作之前,启动超时定时器,在迁移操作超过设定时长时,撤销迁移命令,并删除目标主机上已经通过创建任务创建的磁盘。

进一步,所述重试单元终止虚拟机热迁移,具体包括:

删除虚拟机中在热迁移过程中增加的数据,并修改虚拟机状态。

第三方面,本发明实施例还提供一种设备,包括处理器和存储器;

所述存储器包含可由所述处理器执行的指令以使得所述处理器执行第一方面中所述的方法。

第四方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于实现如第一方面中所述的方法。

本发明实施例提供一种虚拟机热迁移方法、装置、设备及存储介质,在目标主机上进行创建任务时,对于每个创建任务,确定创建任务失败时,会进行至少一次重试,即重新在目标主机上执行该创建任务,直到同一创建任务失败的次数达到设定阈值时,终止虚拟机热迁移,从而实现在虚拟机热迁移过程中出现创建失败的状况时,在较少人工干预的情况下获得及时进行处理。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本发明实施例提供的虚拟机热迁移方法流程图之一;

图2为本发明实施例提供的虚拟机热迁移方法流程图之二;

图3为本发明实施例提供的目标主机确定方法流程图;

图4为本发明实施例提供的虚拟机热迁移方法流程图之三;

图5为本发明实施例提供的虚拟机热迁移装置结构示意图;

图6为本发明实施例提供的虚拟机热迁移设备结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图1,本发明实施例提供的虚拟机热迁移方法,包括:

步骤s101、在目标主机上进行创建任务;

步骤s102、对于每个创建任务,确定创建任务失败时,重新在目标主机上执行该创建任务,直到同一创建任务失败的次数达到设定阈值时,终止虚拟机热迁移;

步骤s103、在各创建任务成功执行后,进行迁移操作。

通过步骤s102的失败重试机制,即可实现确定创建任务失败时,进行至少一次重试,从而实现在虚拟机热迁移过程中出现创建失败的状况时,在较少人工干预的情况下获得及时进行处理。

在kvm(kernel-basedvirtualmachine,基于硬件的虚拟机)虚拟机热迁移过程中,步骤s101和步骤s102中的创建任务,具体包括:

在目标主机上创建虚拟机存储目录;

在目标主机上创建虚拟机存储池;

在目标主机上创建虚拟机磁盘创建。

对于不同的虚拟机,在热迁移过程中所需要进行的创建任务可能有所不同,本领域技术人员可以根据实际情况灵活修改与应用。

通常来讲,如图2所示,在虚拟机热迁移过程中,在步骤s101、在目标主机上进行创建任务之前,还包括:

步骤s201、获取满足迁移条件的物理机作为目标主机;

步骤s202、获取虚拟机的磁盘信息。

确定了目标主机和虚拟机的磁盘信息后,即可根据磁盘信息在目标主机上进行创建任务。

对于特殊情况的虚拟机热迁移,也可能有固定的目标主机及磁盘信息,就不需要执行步骤s201和步骤s202。

具体的,如图3所示,步骤s201,获取满足迁移条件的物理机作为目标主机,具体包括以下步骤:

步骤s301、根据设定的物理机性能参数从物理机列表中筛选满足性能条件的物理机;

步骤s302、从满足性能条件的物理机中排除非正常状态及正在迁入虚拟机的物理机,获得可用物理机列表;

步骤s303、从可用物理机列表中确定物理机作为目标主机,并修改虚拟机状态。

此时,一般是将虚拟机状态由“运行中”修改为“热迁移中”,对于不同的虚拟机,可能存在不同的状态模式,本领域技术人员可以根据实际情况灵活进行修改和应用。

具体的,虚拟机的磁盘信息一般指虚拟磁盘的名称和大小,此时,步骤s202,获取虚拟机的磁盘信息,具体包括:

获取虚拟机磁盘的名称和大小。

一般情况下,通过前端传入的虚拟机所在的物理机ip、虚拟机名称、虚拟机uuid(universallyuniqueidentifier,通用唯一标识码),来查询数据库中虚拟机磁盘的名称和大小。

为使得在迁移操作超时的情况出现时,也能够及时得到处理,在各创建任务成功执行后,进行迁移操作之前,可以启动超时定时器,在迁移操作超过设定时长时,撤销迁移命令,并删除目标主机上已经通过创建任务创建的磁盘。

超时定时器所设置的时间可以根据虚拟机规模、传输速度等实际情况进行设定,例如,若设定为40分钟,则在迁移操作执行时间超过40分钟时,即撤销迁移命令,并删除目标主机上已经通过创建任务创建的磁盘。

在设置超时定时器失败时,也可以重新设置超时定时器,直至设置成功或者失败次数达到设定次数,若失败次数达到设定次数,则终止虚拟机迁移或者放弃超时定时器设置。

在迁移操作过程中,也可以在迁移操作失败时,重新进行迁移操作,直至迁移成功或者失败次数达到设定次数或者定时器超时,若失败次数达到设定次数,则终止虚拟机迁移,若定时器超时,则撤销迁移命令,并删除目标主机上已经通过创建任务创建的磁盘。

在步骤s102中,终止虚拟机热迁移,可以具体包括:

删除虚拟机中在热迁移过程中增加的数据,并修改虚拟机状态。

在步骤s303中,修改虚拟机状态时,可以在虚拟机中增加一条数据,标明虚拟机迁移至目标主机,数据可以标记为虚拟机—目标主机,在终止虚拟机热迁移时,需要删除该数据,若在热迁移过程中,在虚拟机中增加了其它数据,也可以根据实际需求进行删除。

此时,一般是将虚拟机状态由“热迁移中”修改为“运行中”,对于不同的虚拟机,可能存在不同的状态模式,本领域技术人员可以根据实际情况灵活进行修改和应用。

如图4所示,本发明实施例提供的较具体的虚拟机热迁移方法包括:

步骤s401、确定物理机列表;

首先找到同集群所有libvirtd管理程序正常工作的物理机列表并从数据库中取出列表中每一台物理机的性能数据信息,包括物理机cpu、内存、磁盘大小信息,以及物理机cpu使用率、内存使用率、硬盘使用率、网卡使用率以及物理机libvirtd管理进程状态。

步骤s402、根据设定的物理机性能参数从物理机列表中筛选满足性能条件的物理机;

具体实施时,可以通过设定物理机性能过滤器过滤满足条件物理机,过滤需要考虑数据时效性,例如可以设定为1分钟内数据是有效的。

步骤s403、从满足性能条件的物理机中排除非正常状态及正在迁入虚拟机的物理机,获得可用物理机列表;

步骤s404、从可用物理机列表中确定物理机作为目标主机,并修改虚拟机状态。

从可用物理机列表中确定物理机作为目标主机的方式,可以是将筛选出的可用物理机列举给用户,由用户选中并提交某个物理机后,根据用户所提交的内容确定某个物理机作为目标主机,确定目标主机后,可以拼装虚拟机迁移所需要的json格式参数,将消息发送给kafka指定主题。

修改虚拟机状态时,可以将虚拟机状态修改为“热迁移中”,还可以在数据中增加一条虚拟机—目标主机的记录。

步骤s405、获取虚拟机的磁盘信息,可以通过前端传入的虚拟机所在的物理机ip、虚拟机名称、虚拟机uuid查询数据库中虚拟机磁盘的名称和大小;

步骤s406、在目标主机上创建虚拟机存储目录;

通过request_id查库确认虚拟机目录是否已经创建成功,成功则跳过此步骤,否则通过ansible到虚拟机所要分配的物理机上使用虚拟机uuid创建虚拟机存储目录,创建成功继续执行步骤s407,若创建失败,则再次进行创建,直至失败次数达到设定的第一阈值时,终止虚拟机热迁移。

步骤s407、在目标主机上创建虚拟机存储池;

通过request_id查库确认虚拟机storagepool(存储池)是否已经创建成功,成功则跳过此步骤,否则使用libvirtd创建storage接口创建存储池,创建成功继续执行步骤s408,若创建失败,则再次进行创建,直至失败次数达到设定的第二阈值时,终止虚拟机热迁移。

task_id用于记录任务工单信息,request_id用于标示每一台虚拟机热迁移过程。

步骤s408、在目标主机上创建虚拟机磁盘创建;

根据步骤s405中获取的虚拟机磁盘名称、大小,在迁移目标主机上创建同样名称、大小的磁盘,创建成功继续执行步骤s409,若创建失败,则再次进行创建,直至失败次数达到设定的第二阈值时,终止虚拟机热迁移。

步骤s409、为迁移操作设置超时定时器;

步骤s410、执行迁移操作;

通过源主机ip、目标主机ip、虚拟机名称,将虚拟机迁移到目标主机上。执行成功继续步骤s411,迁移失败时,将删除步骤s408中创建的磁盘。

若迁移操作持续的时间超过了定时器设置的时间,则撤销迁移,删除目标主机上已经通过创建任务创建的磁盘。

步骤s411、在源主机上将该虚拟机以及对应的存储池进行undefined(未定义)操作。

步骤s412、在源主机上将虚拟机的存储目录名称进行修改。

步骤s413、修改虚拟机状态为运行中,热迁移完成。

其中,步骤s406-步骤s408中的终止虚拟机热迁移,是删除步骤s404中新增的虚拟机—目标主机的记录,并将虚拟机状态修改为“运行中”。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

本发明实施例还相应提供一种虚拟机热迁移装置,如图5所示,该装置包括:

创建单元501,用于在目标主机上进行创建任务;

重试单元502,用于对于每个创建任务,确定创建任务失败时,重新在目标主机上执行该创建任务,直到同一创建任务失败的次数达到设定阈值时,终止虚拟机热迁移;

迁移单元503,用于在各创建任务成功执行后,进行迁移操作。

进一步,创建任务具体包括:

在目标主机上创建虚拟机存储目录;

在目标主机上创建虚拟机存储池;

在目标主机上创建虚拟机磁盘创建。

进一步,创建单元501还用于:

在目标主机上进行创建任务之前,获取满足迁移条件的物理机作为目标主机,获取虚拟机的磁盘信息。

更进一步,创建单元501获取满足迁移条件的物理机作为目标主机,具体包括:

根据设定的物理机性能参数从物理机列表中筛选满足性能条件的物理机;

从满足性能条件的物理机中排除非正常状态及正在迁入虚拟机的物理机,获得可用物理机列表;

从可用物理机列表中确定物理机作为目标主机,并修改虚拟机状态。

更进一步,创建单元501获取虚拟机的磁盘信息,具体包括:

获取虚拟机磁盘的名称和大小。

优选的,迁移单元503还用于:

在各创建任务成功执行后,进行迁移操作之前,启动超时定时器,在迁移操作超过设定时长时,撤销迁移命令,并删除目标主机上已经通过创建任务创建的磁盘。

进一步,重试单元502终止虚拟机热迁移,具体包括:

删除虚拟机中在热迁移过程中增加的数据,并修改虚拟机状态。

应当理解,该装置中记载的诸单元或模块与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于该装置及其中包含的单元,在此不再赘述。该装置可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。该装置中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。

下面参考图6,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。

如图6所示,计算机系统包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本公开的实施例,上文参考图1描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行图1的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括xx单元、yy单元以及zz单元。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,xx单元还可以被描述为“用于xx的单元”。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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