一种虚拟机的热迁移方法、系统、设备以及介质与流程

文档序号:22757850发布日期:2020-10-31 09:55阅读:126来源:国知局
一种虚拟机的热迁移方法、系统、设备以及介质与流程

本发明涉及虚拟机领域,具体涉及一种虚拟机的热迁移方法、系统、设备以及存储介质。



背景技术:

虚拟机,是指通过软件模拟的具有完整硬件系统功能的、运行在完全隔离环境种的计算机系统。虚拟机运行在物理机上,物理机上运行有hypvisor来管理虚拟机。

在虚拟化环境中,透传设备是指将物理机上的物理设备给虚拟机使用,物理机就无法对设备进行操控和管理,透传设备目前主要是pci、pci-e设备,如网卡、加密卡、特殊外设等。透传的设备因为直接被虚拟机使用,从而使虚拟机获得更好的性能。但也正因为物理机无法管控这些透传设备,导致hypvisor无法监控设备的状态,导致虚拟化环境中虚拟机热迁移功能无法生效。



技术实现要素:

有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种虚拟机的热迁移方法,包括以下步骤:

响应于接收到迁移源虚拟机的指令,获取所述源虚拟机的透传设备的寄存器的种类;

响应于所述寄存器为第一类寄存器,读取所述第一类寄存器的内容,并将所述第一类寄存器的内容传输至目标虚拟机的对应的第一类寄存器;

响应于所述寄存器为第二类寄存器,捕获迁移过程中对所述第一类寄存器的读写操作,以在所述目标虚拟机执行所述读写操作,进而将所述源虚拟机的所述第二类寄存器的内容同步至所述目标虚拟机的透传设备对应的第二类寄存器。

在一些实施例中,还包括:

获取所述源虚拟机的透传设备的标识;

将所述标识关联的dma脏页对应的数据写入所述目标虚拟机的内存中。

在一些实施例中,将所述标识关联的dma脏页对应的数据写入所述目标虚拟机的内存中,进一步包括:

将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器;

在所述目标虚拟机读取所述虚拟机监控器获取的dma脏页,并解析dma脏页以获得迁移过程中dma修改的数据,将解析得到的数据写入所述目标虚拟机的内存中。

在一些实施例中,将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器,进一步包括:

通过调用已配置的dma脏页传输接口执行将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器的操作。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种虚拟机的热迁移系统,包括:

获取模块,所述获取模块配置为响应于接收到迁移源虚拟机的指令,获取所述源虚拟机的透传设备的寄存器的种类;

第一响应模块,所述第一响应模块配置为响应于所述寄存器为第一类寄存器,读取所述第一类寄存器的内容,并将所述第一类寄存器的内容传输至目标虚拟机的对应的第一类寄存器;

第二响应模块,所述第二响应模块配置为响应于所述寄存器为第二类寄存器,捕获迁移过程中对所述第一类寄存器的读写操作,以在所述目标虚拟机执行所述读写操作,进而将所述源虚拟机的所述第二类寄存器的内容同步至所述目标虚拟机的透传设备对应的第二类寄存器。

在一些实施例中,还包括dma同步模块,所述dma同步模块配置为:

获取所述源虚拟机的透传设备的标识;

将所述标识关联的dma脏页对应的数据写入所述目标虚拟机的内存中。

在一些实施例中,所述dma同步模块还配置为:

将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器;

在所述目标虚拟机读取所述虚拟机监控器获取的dma脏页,并解析dma脏页以获得迁移过程中dma修改的数据,将解析得到的数据写入所述目标虚拟机的内存中。

在一些实施例中,所述dma同步模块还配置为:

通过调用已配置的dma脏页传输接口执行将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器的操作。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种虚拟机的热迁移方法的步骤。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种虚拟机的热迁移方法的步骤。

本发明具有以下有益技术效果之一:本发明提出的方案通过获取进行热迁移的虚拟机上获取透传设备所有寄存器的状态,那便可以获取透传设备的状态。然后将所有寄存器状态,同步到热迁移目的端机器上的相同pci设备,这样迁移目的端便能与源端虚拟机中的pci设备状态同步,再将迁移虚拟机与pci设备进行绑定,从而便可将透传设备进行热迁移。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

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

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

图3为本发明的实施例提供的虚拟机的热迁移系统的结构示意图;

图4为本发明的实施例提供的计算机设备的结构示意图;

图5为本发明的实施例提供的计算机可读存储介质的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

根据本发明的一个方面,本发明的实施例提出一种虚拟机的热迁移方法,如图1所示,其可以包括步骤:

s1,响应于接收到迁移源虚拟机的指令,获取所述源虚拟机的透传设备的寄存器的种类;

s2,响应于所述寄存器为第一类寄存器,读取所述第一类寄存器的内容,并将所述第一类寄存器的内容传输至目标虚拟机的对应的第一类寄存器;

s3,响应于所述寄存器为第二类寄存器,捕获迁移过程中对所述第一类寄存器的读写操作,以在所述目标虚拟机执行所述读写操作,进而将所述源虚拟机的所述第二类寄存器的内容同步至所述目标虚拟机的透传设备对应的第二类寄存器。

本发明提出的方案通过获取进行热迁移的虚拟机上获取透传设备所有寄存器的状态,那便可以获取透传设备的状态。然后将所有寄存器状态,同步到热迁移目的端机器上的相同pci设备,这样迁移目的端便能与源端虚拟机中的pci设备状态同步,再将迁移虚拟机与pci设备进行绑定,从而便可将透传设备进行热迁移。

在一些实施例中,如图2所示,还包括:

获取所述源虚拟机的透传设备的标识;

将所述标识关联的dma脏页对应的数据写入所述目标虚拟机的内存中。

在一些实施例中,将所述标识关联的dma脏页对应的数据写入所述目标虚拟机的内存中,进一步包括:

将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器;

在所述目标虚拟机读取所述虚拟机监控器获取的dma脏页,并解析dma脏页以获得迁移过程中dma修改的数据,将解析得到的数据写入所述目标虚拟机的内存中。

在一些实施例中,将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器,进一步包括:

通过调用已配置的dma脏页传输接口执行将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器的操作。

具体的,在一些实施例中,dma(directmemoryaccess,直接存储器访问)是一种不需要cpu参与的快速数据传输机制,允许不同的硬件装置直接沟通,不需要依赖于cpu的大量中断负载。脏页则是在进程修改了高速缓存中的数据时被标记为“脏页”的物理页。dma脏页表示dma操作中被标记的脏页。dma脏页传输接口可以是dma脏页传输逻辑的抽象接口,该接口被调用时,对应的dma脏页数据传输逻辑被执行,进而实现dna脏页同步功能。

dma脏页接口可以是dma脏页传输逻辑的抽象接口,该接口被调用时,对应的dma脏页数据传输逻辑被执行,进而实现dma脏页同步功能。在热迁移过程中,主机读取dma相关寄存器,从而获取dma描述中的设备内存地址。然后通过获取的内存地址捕获直通设备的dma操作,解析dma物理页信息、判断是否有新增数据从而确定dma操作是否完成。对于完成的dma操作,将相应的物理页标识未脏页。然后通过dma传输接口将dma数据进行同步。

在热迁移过程中,源端虚拟机不暂停服务,则在此过程中会产生新的数据,上述执行主体可以在热迁移执行阶段迭代执行多轮同步操作。在每轮的同步操作执行完毕后,可以判断当前轮的脏页率与上一轮的脏页率之间的差异是否小于预设的阈值,若是则可以短暂地停止源端虚拟机的服务,具体可以向发出读写请求的客户端返回读写失败的消息。之后再执行一次同步操作,以将源端虚拟机的所有数据都同步至目标端虚拟机。然后启动目标端虚拟机的服务,并在目标端虚拟机恢复直通设备寄存器的透传状态,使得目标端虚拟机的i/o性能达到最佳。

在一些实施例中,在步骤s2和s3中,第一类寄存器可以是读写寄存器,第二类寄存器可以是状态寄存器。通过调用寄存器状态同步接口读取源端虚拟机透传设备的读写寄存器的内容,将源端虚拟机透传设备的读写寄存器的内容传输并写入目标端虚拟机透传设备的读写寄存器;以及通过调用寄存器状态同步接口捕捉并记录源端虚拟机透传设备的对读写寄存器的读写操作,在目标端虚拟机透传设备执行源端虚拟机的读写操作,以将源端虚拟机透传设备的状态寄存器的内容同步至目标端虚拟机透传设备的状态寄存器。也就是说,对于读写寄存器,由于该类型寄存器可读写,因此可以直接通过调用寄存器状态同步接口读取源端虚拟机的透传设备的寄存器内容,然后写入目标端虚拟机的透传设备的寄存器。对于状态寄存器,由于该类型寄存器为只读寄存器,无法直接通过调用寄存器状态同步接口来读取源端虚拟机透传设备的寄存器内容并写入目标端虚拟机的寄存器,但状态寄存器中的状态与虚拟机透传设备的操作强相关,因此可以通过将源端虚拟机的操作在对端虚拟机重新执行一次,使得目标端虚拟机透传设备的状态寄存器发生与源端虚拟机透传设备的状态寄存器同步的改变。

本发明提出的方案通过获取进行热迁移的虚拟机上获取透传设备所有寄存器的状态,那便可以获取透传设备的状态。然后将所有寄存器状态,同步到热迁移目的端机器上的相同pci设备,这样迁移目的端便能与源端虚拟机中的pci设备状态同步,再将迁移虚拟机与pci设备进行绑定,从而便可将透传设备进行热迁移。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种时钟同步系统400,如图3所示,包括:

获取模块401,所述获取模块401配置为响应于接收到迁移源虚拟机的指令,获取所述源虚拟机的透传设备的寄存器的种类;

第一响应模块402,所述第一响应模块402配置为响应于所述寄存器为第一类寄存器,读取所述第一类寄存器的内容,并将所述第一类寄存器的内容传输至目标虚拟机的对应的第一类寄存器;

第二响应模块403,所述第二响应模块403配置为响应于所述寄存器为第二类寄存器,捕获迁移过程中对所述第一类寄存器的读写操作,以在所述目标虚拟机执行所述读写操作,进而将所述源虚拟机的所述第二类寄存器的内容同步至所述目标虚拟机的透传设备对应的第二类寄存器。

在一些实施例中,还包括dma同步模块,所述dma同步模块配置为:

获取所述源虚拟机的透传设备的标识;

将所述标识关联的dma脏页对应的数据写入所述目标虚拟机的内存中。

在一些实施例中,所述dma同步模块还配置为:

将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器;

在所述目标虚拟机读取所述虚拟机监控器获取的dma脏页,并解析dma脏页以获得迁移过程中dma修改的数据,将解析得到的数据写入所述目标虚拟机的内存中。

在一些实施例中,所述dma同步模块还配置为:

通过调用已配置的dma脏页传输接口执行将所述源虚拟机的透传设备的标识关联的dma脏页传输至虚拟机监控器的操作。

基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机设备501,包括:

至少一个处理器520;以及

存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种虚拟机的热迁移方法的步骤。

基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种虚拟机的热迁移方法的步骤。

最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。

此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。

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

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

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