CN108874506A - 虚拟机直通设备的热迁移方法和装置 - Google Patents
虚拟机直通设备的热迁移方法和装置 Download PDFInfo
- Publication number
- CN108874506A CN108874506A CN201810590075.8A CN201810590075A CN108874506A CN 108874506 A CN108874506 A CN 108874506A CN 201810590075 A CN201810590075 A CN 201810590075A CN 108874506 A CN108874506 A CN 108874506A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- equipment
- buffer status
- read
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了虚拟机直通设备的热迁移方法和装置。该方法的一具体实施方式包括:通过调用寄存器状态同步接口执行寄存器状态同步方法,将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机;取消源端虚拟机直通设备的透传状态,迭代执行如下多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机:通过调用寄存器状态同步接口执行寄存器状态同步方法,捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作;通过调用DMA脏页传输接口执行DMA脏页同步方法,将源端虚拟机直通设备的DMA脏页对应的数据写入目标端虚拟机的内存中。上述实施方式无需更改虚拟机内核即可实现直通设备的热迁移。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及虚拟机热迁移技术领域,尤其涉及虚拟机直通设备的热迁移方法和装置。
背景技术
虚拟机(Virtual Machine),是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机通常运行在宿主机上,每台宿主机上可以运行多台虚拟机。
在云计算中,直通设备可以直接将宿主机上的PCI-E(PeripheralComponentInterface Express,外围组件接口表示)设备透传给虚拟机,使得虚拟机可以直接访问该设备而不需要经过宿主机上的VMM(Virtual Machine Monitor,虚拟机监控器),从而使得该设备在虚拟机中获得最佳的性能。然而,由于直通设备的数据传输不需要虚拟机监控器的参与,在虚拟机热迁移时,虚拟机监控器无法获取直通设备的状态,因而无法配置新的虚拟机上的设备状态,所以直通设备无法实现热迁移。
发明内容
本申请实施例提出了虚拟机直通设备的热迁移方法和装置。
第一方面,本申请实施例提供了一种虚拟机直通设备的热迁移方法,包括:通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机;取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;同步操作包括:通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作;以及通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
在一些实施例中,上述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机,包括:通过调用已配置的寄存器状态同步接口执行将源端虚拟机直通设备的寄存器状态传输至虚拟机监控器的操作,在目标端虚拟机同步虚拟机监控器获取的寄存器状态;以及上述通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,包括:通过调用已配置的寄存器状态同步接口执行将迁移过程中对源端虚拟机直通设备的寄存器的读写操作记录传输至虚拟机监控器的操作。
在一些实施例中,上述通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中,包括:通过调用已配置的DMA脏页传输接口执行将源端虚拟机直通设备标识的DMA脏页传输至虚拟机监控器的操作;在目标端虚拟机读取虚拟机监控器获取的DMA脏页,并解析DMA脏页获得迁移过程中DMA修改的数据,将解析得到的数据写入目标端虚拟机的内存中。
在一些实施例中,上述方法还包括:读取源端虚拟机直通设备的设备标识;上述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,包括:通过调用已配置的寄存器状态同步接口执行设备标识关联的寄存器状态同步方法;上述通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,包括:通过调用已配置的DMA脏页传输接口执行设备标识关联的DMA脏页同步方法。
在一些实施例中,上述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机,包括:通过调用寄存器状态同步接口读取源端虚拟机直通设备的读写寄存器的内容,将源端虚拟机直通设备的读写寄存器的内容传输并写入目标端虚拟机直通设备的读写寄存器;通过调用寄存器状态同步接口捕捉并记录源端虚拟机直通设备的对读写寄存器的读写操作,在目标端虚拟机直通设备执行源端虚拟机的读写操作,以将源端虚拟机直通设备的状态寄存器的内容同步至目标端虚拟机直通设备的状态寄存器。
第二方面,本申请实施例提供了一种虚拟机直通设备的热迁移装置,包括:寄存器状态同步单元,被配置成通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机;增量数据同步单元,被配置成取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;增量数据同步单元包括寄存器读写数据同步单元和DMA脏页同步单元,寄存器读写数据同步单元被配置成执行如下同步操作:通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作;DMA脏页同步单元被配置成执行如下同步操作:通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
在一些实施例中,上述寄存器状态同步单元进一步被配置成:通过调用已配置的寄存器状态同步接口执行将源端虚拟机直通设备的寄存器状态传输至虚拟机监控器的操作,在目标端虚拟机同步虚拟机监控器获取的寄存器状态;以及上述寄存器读写数据同步单元进一步被配置成:通过调用已配置的寄存器状态同步接口执行将迁移过程中对源端虚拟机直通设备的寄存器的读写操作记录传输至虚拟机监控器的操作。
在一些实施例中,上述DMA脏页同步单元进一步被配置成:通过调用已配置的DMA脏页传输接口执行将源端虚拟机直通设备标识的DMA脏页传输至虚拟机监控器的操作;在目标端虚拟机读取虚拟机监控器获取的DMA脏页,并解析DMA脏页获得迁移过程中DMA修改的数据,将解析得到的数据写入目标端虚拟机的内存中。
在一些实施例中,上述装置还包括:读取单元,被配置成读取源端虚拟机直通设备的设备标识;上述寄存器状态同步单元进一步被配置成通过调用已配置的寄存器状态同步接口执行设备标识关联的寄存器状态同步方法;上述寄存器读写数据同步单元进一步被配置成通过调用已配置的寄存器状态同步接口执行设备标识关联的寄存器状态同步方法;DMA脏页同步单元进一步被配置成通过调用已配置的DMA脏页传输接口执行设备标识关联的DMA脏页同步方法。
在一些实施例中,上述寄存器状态同步单元进一步被配置成按照如下方式将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机:通过调用寄存器状态同步接口读取源端虚拟机直通设备的读写寄存器的内容,将源端虚拟机直通设备的读写寄存器的内容传输并写入目标端虚拟机直通设备的读写寄存器;通过调用寄存器状态同步接口捕捉并记录源端虚拟机直通设备的对读写寄存器的读写操作,在目标端虚拟机直通设备执行源端虚拟机的读写操作,以将源端虚拟机直通设备的状态寄存器的内容同步至目标端虚拟机直通设备的状态寄存器。
第三方面,本申请实施例提供了一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面提供的虚拟机直通设备的热迁移方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,程序被处理器执行时实现第一方面提供的虚拟机直通设备的热迁移方法。
本申请上述实施例的虚拟机直通设备的热迁移方法和装置,首先通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机;之后取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;同步操作包括:通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备寄存器执行所捕获的读写操作;通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。通过配置的寄存器状态同步接口以及DMA脏页传输接口可以在虚拟机热迁移时将源端虚拟机的直通设备的相关数据传输至目标端虚拟机,从而在不改变虚拟机内核的情况下实现了直通设备的热迁移。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请实施例可以应用于其中的示例性系统架构图;
图2是根据本申请的虚拟机直通设备的热迁移方法的一个实施例的流程图;
图3是根据本申请的虚拟机直通设备的热迁移方法的另一个实施例的流程图;
图4是根据本申请的虚拟机直通设备热迁移方法的一种框架示意图;
图5是根据本申请的虚拟机直通设备的热迁移装置的一个结构示意图;
图6是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的虚拟机直通设备的热迁移方法或虚拟机直通设备的热迁移装置的示例性系统架构100。
如图1所示,系统架构100可以包括宿主机101、102。宿主机101、102之间可以通过网络连接。宿主机101、102可以是提供云计算的虚拟机运行于其上的物理机。宿主机101上可以运行虚拟机111、112、113,宿主机102上可以运行虚拟机121、122、123。运行在同一宿主机101上的虚拟机111、112、113之间、运行在同一宿主机102上的虚拟机121、122、123之间、以及运行在不同虚拟机101、102上的虚拟机之间可以互相通信。
虚拟机可以访问宿主机的硬件设备,例如虚拟机111可以通过安装在虚拟机111上的设备驱动来访问宿主机101的硬件设备。一般地,虚拟机111的设备驱动访问宿主机的硬件设备的行为可以被宿主机101上的虚拟机监控器记录。宿主机101上的一些硬件设备可以通过“透传”(passthrough)的方式被虚拟机访问,例如网卡、GPU(GraphicsProcessingUnit,图形处理器)等,这些设备可以被称为直通设备。在“透传”方式中,虚拟机111可以通过虚拟PCIE设备访问宿主机上的硬件设备,不需要经过虚拟机监控器。
在虚拟机需要维护时,通常可以将虚拟机的运行状态完整地保存下来并恢复到另一个平台上,即可以进行虚拟机热迁移。例如图1中虚拟机101需要维护时,可以将虚拟机111的运行状态迁移到同一宿主机上的其他虚拟机112、113或者迁移到其他宿主机上的虚拟机121、122、123上。
在实际场景中,宿主机101、102可以是提供各种云服务的服务器,虚拟机监控器可以运行在服务器上,用于管理、记录服务器上运行的虚拟机的状态和操作。
需要说明的是,本申请实施例所提供的虚拟机直通设备的热迁移方法可以由宿主机101、102(服务器)执行,相应地,虚拟机直通设备的热迁移装置可以设置于宿主机101、102中。
需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
应该理解,图1中的终端设备、网络、服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、服务器。
继续参考图2,其示出了根据本申请的虚拟机直通设备的热迁移方法的一个实施例的流程200。该虚拟机直通设备的热迁移方法,包括以下步骤:
步骤201,通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机。
在本实施例中,上述虚拟机机直通设备的热迁移方法的执行主体(例如图1中待迁移的虚拟机所在的宿主机101或102)可以预先配置寄存器状态同步接口。该寄存器状态同步接口可以是寄存器状态同步逻辑的抽象接口,该接口被调用时,对应的寄存器状态同步逻辑被执行,进而实现寄存器状态同步功能。
在实践中,寄存器状态同步接口可以是用于实现寄存器状态同步功能的接口函数,通过调用该接口函数可以执行寄存器状态同步的代码。
在配置寄存器状态同步接口时,可以为该寄存器状态同步接口设置接口名称,例如为函数配置函数名。这样,可以将寄存器状态同步接口的名称作为被调用的参数传输至用于执行虚拟机的热迁移的主程序,从而实现寄存器状态同步接口的调用。
寄存器状态同步接口所对应的寄存器状态同步方法可以包括:读取源端虚拟机直通设备的寄存器状态数据,将读取到的源端虚拟机直通设备的寄存器状态数据传输至目标端虚拟机。在这里,源端虚拟机是待迁移的虚拟机,目标虚拟机是替换源端虚拟机进行云服务的虚拟机。在虚拟机直通设备热迁移时,需要将源端虚拟机的直通设备迁移至目标端的虚拟机。目标虚拟机可以将接收到的寄存器状态数据写入目标虚拟机直通设备的寄存器。
上述步骤201可以在停止源端虚拟机的服务之前的迁移准备阶段执行。在这个阶段,可以通过调用寄存器状态同步接口,将源端虚拟机的直通设备的寄存器和目标端虚拟机的直通设备的寄存器同步至同样的工作状态。
在本实施例的一些可选的实现方式中,迁移准备阶段的寄存器状态同步主要包括读写寄存器的同步以及状态寄存器的同步。读写寄存器为可读写的寄存器,用于暂存读写数据。状态寄存器是用于暂存状态数据的寄存器。具体来说,上述步骤201可以包括:通过调用寄存器状态同步接口读取源端虚拟机直通设备的读写寄存器的内容,将源端虚拟机直通设备的读写寄存器的内容传输并写入目标端虚拟机直通设备的读写寄存器;以及通过调用寄存器状态同步接口捕捉并记录源端虚拟机直通设备的对读写寄存器的读写操作,在目标端虚拟机直通设备执行源端虚拟机的读写操作,以将源端虚拟机直通设备的状态寄存器的内容同步至目标端虚拟机直通设备的状态寄存器。也就是说,对于读写寄存器,由于该类型寄存器可读写,因此可以直接通过调用寄存器状态同步接口读取源端虚拟机的直通设备的寄存器内容,然后写入目标端虚拟机的直通设备的寄存器。对于状态寄存器,由于该类型寄存器为只读寄存器,无法直接通过调用寄存器状态同步接口来读取源端虚拟机直通设备的寄存器内容并写入目标端虚拟机的寄存器,但状态寄存器中的状态与虚拟机直通设备的操作强相关,因此可以通过将源端虚拟机的操作在对端虚拟机重新执行一次,使得目标端虚拟机直通设备的状态寄存器发生与源端虚拟机直通设备的状态寄存器同步的改变。
可选地,在迁移准备阶段,还可以对除了读写寄存器和状态寄存器之外的其他寄存器的状态进行同步,包括但不限于统计寄存器、只写寄存器等。这些寄存器的状态的同步可以通过取消源端虚拟机直通设备的透传状态,通过寄存器状态同步接口将源端虚拟机的寄存器状态传输至虚拟机监控器,由虚拟机监控器将这些寄存器的状态同步至目标端虚拟机来实现。
在本实施例的一些可选的实现方式中,可以判断目标端虚拟机是否对源端虚拟机的直通设备的寄存器状态同步成功,如果不成功,则可以回滚,取消本次迁移或者重新执行通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机的操作。
在本实施例的一些可选的实现方式中,上述执行主体可以通过虚拟机监控器来将源端虚拟机的直通设备的相关数据迁移至目标端虚拟机。具体地,上述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机的步骤201,可以包括:通过调用已配置的寄存器状态同步接口执行将源端虚拟机直通设备的寄存器状态传输至虚拟机监控器的操作,在目标端虚拟机同步虚拟机监控器获取的寄存器状态。在这里,已配置的寄存器状态同步接口可以作为虚拟机监控器获取直通设备的寄存器状态的入口。在迁移准备阶段,可以调用该寄存器状态同步接口,执行寄存器状态同步接口对应的代码逻辑,并将执行结果返回至虚拟机监控器。这样,虚拟机监控器可以通过寄存器状态同步接口捕获直通设备的寄存器状态。随后,虚拟机监控器可以与目标虚拟机连接,并将捕获的直通设备的寄存器状态传输至目标端虚拟机。目标端虚拟机可以将虚拟机监控器传输的数据写入相应的直通设备寄存器中。
步骤202,取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机。
在本实施例中,上述执行主体可以取消源端虚拟机的透传状态,以使源端虚拟机对这些直通设备的寄存器的访问都可以被暂存至上述执行主体的存储器中。
源端虚拟机可以建立负责宿主机物理地址和虚拟机物理地址转换的页表,用来实现直通设备的透传。可以将该页表的状态置为“非法”或“无效”,使得源端虚拟机的直通设备不能成功地根据该页表实现虚拟机物理地址到宿主机物理地址的转换,产生缺页中断,进而使得直通设备对虚拟机的访问可以被宿主机的虚拟机监控器捕获。上述同步操作可以包括同步寄存器状态的步骤2021和同步DMA脏页的步骤2022。
具体地,在步骤2021中,通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作。
在热迁移执行阶段,可以持续同步寄存器状态。可以通过调用寄存器状态同步接口对应的寄存器状态同步方法来执行寄存器读写操作的同步。在这里,由于在步骤201中已经执行了直通设备的寄存器状态的同步,这里,可以仅对迁移过程中源端虚拟机在持续提供服务的过程中产生的新增数据同步至目标端虚拟机,因此,可以通过将捕获的读写操作在目标端虚拟机执行一次来同步新增数据。
在本实施例的一些可选的实现方式中,上述通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作的步骤2021,可以包括:通过调用已配置的寄存器状态同步接口执行将迁移过程中对源端虚拟机直通设备的寄存器的读写操作记录传输至虚拟机监控器的操作。也即可以将已配置的寄存器状态同步接口作为虚拟机监控器获取直通设备的寄存器状态的入口。在迁移执行阶段,主要执行新的访问请求所产生的新数据的同步。可以调用该寄存器状态同步接口,执行寄存器状态同步接口对应的代码逻辑,该寄存器状态同步接口对应的代码逻辑具体可以包括或获取源端虚拟机直通设备的寄存器的读写操作数据的逻辑,然后可以将执行结果返回至虚拟机监控器。这样,虚拟机监控器可以通过寄存器状态同步接口捕获直通设备的寄存器的读写操作。随后,虚拟机监控器可以将捕获的直通设备的寄存器的读写操作传输至目标端虚拟机。目标端虚拟机可以执行虚拟机监控器传输的读写操作,以将迁移过程中产生的新的数据写入相应的直通设备寄存器中。
在步骤2022中,通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
在本实施例中,上述执行主体可以预先配置DMA脏页传输接口。DMA(DirectMemory Access,直接存储器访问)是一种不需要CPU参与的快速数据传输机制,允许不同的硬件装置直接沟通,不需要依赖于CPU的大量中断负载。脏页则是在进程修改了高速缓存中的数据时被标记为“脏页”的物理页。DMA脏页表示DMA操作中被标记的脏页。
DMA脏页传输接口可以是DMA脏页传输逻辑的抽象接口,该接口被调用时,对应的DMA脏页数据传输逻辑被执行,进而实现DNA脏页同步功能。
在实践中,DMA脏页传输接口可以是用于实现DMA脏页传输功能的接口函数,通过调用该接口函数可以执行DMA脏页传输的代码。
在配置DMA脏页传输接口时,可以为DMA脏页传输接口设置相应的接口名称,例如为函数配置函数名。这样,可以通过DMA脏页传输接口的名称调用该接口对应的DMA脏页传输方法。
DMA脏页传输接口所对应的DMA脏页传输方法可以包括:获取源端虚拟机标记的DMA脏页,并将获取的DMA脏页传输至目标端虚拟机,目标端虚拟机可以解析DMA脏页以将其中的数据写入内存中。
在热迁移执行阶段,上述执行主体可以读取DMA相关的寄存器,以获取DMA描述符的内存地址。然后根据DMA描述符的内存地址捕获直通设备的DMA操作,解析DMA描述符来获取对应的物理页信息。继而通过DMA描述符链表是否新增数据或通过判断物理页内容是否有更新来确定DMA操作是否完成。对于完成的DMA操作,可以将对应的物理页标识为脏页。这时,可以通过上述DMA脏页传输接口,将DMA脏页传输至目标端虚拟机以进行DMA脏页对应的数据的同步。
在热迁移过程中,源端虚拟机不暂停服务,则在此过程中会产生新的数据,上述执行主体可以在热迁移执行阶段迭代执行多轮同步操作,即迭代执行步骤2021和步骤2022,在每轮的同步操作执行完毕后,可以判断当前轮的脏页率与上一轮的脏页率之间的差异是否小于预设的阈值,若是则可以短暂地停止源端虚拟机的服务,具体可以向发出读写请求的客户端返回读写失败的消息。之后再执行一次同步操作,以将源端虚拟机的所有数据都同步至目标端虚拟机。然后启动目标端虚拟机的服务,并在目标端虚拟机恢复直通设备寄存器的透传状态,使得目标端虚拟机的I/O性能达到最佳。
具体来说,可以通过将上述用于转换宿主机物理地址和虚拟机物理地址的页表的状态恢复为“合法”或“有效”来恢复目标端虚拟机直通设备的寄存器的透传状态,使得目标端虚拟机实现对网卡、GPU等设备的直接访问。
在本实施例的一些可选的实现方式中,上述通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中的步骤2022,可以包括:通过调用已配置的DMA脏页传输接口执行将源端虚拟机直通设备标识的DMA脏页传输至虚拟机监控器的操作;在目标端虚拟机读取虚拟机监控器获取的DMA脏页,并解析DMA脏页获得迁移过程中DMA修改的数据,将解析得到的数据写入目标端虚拟机的内存中。也就是说,与寄存器状态同步接口类似地,DMA脏页传输接口也可以作为虚拟机监控器捕获DMA脏页数据的入口,虚拟机监控器可以通过DMA脏页传输接口读取到源端虚拟机直通设备产生的DMA脏页,并传输至目标端虚拟机进行DMA脏页解析,从而将对应的数据写入目标端虚拟机的内存中。
本申请上述实施例的虚拟机直通设备的热迁移方法,首先通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机;之后取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;同步操作包括:通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备寄存器执行所捕获的读写操作;通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。通过配置的寄存器状态同步接口以及DMA脏页传输接口可以在虚拟机热迁移时将源端虚拟机的直通设备的相关数据传输至目标端虚拟机,从而在不改变虚拟机内核的情况下实现了直通设备的热迁移,简化了虚拟机热迁移的实现。并且上述虚拟机直通设备的热迁移方法可以应用在linux、windows等操作系统的虚拟机迁移中,拓展了虚拟机热迁移方法的适用范围。。
继续参考图3,其示出了根据本申请的虚拟机直通设备的热迁移方法的另一个实施例的流程图。如图3所示,本实施例的虚拟机直通设备的热迁移方法的流程300,可以包括以下步骤:
步骤301,读取源端虚拟机直通设备的设备标识。
在本实施例中,虚拟机可以采用透传方式访问多个直通设备。不同的直通设备可以提供不同的访问方式,对应的寄存器的构成和位置也不相同,因而虚拟机访问不同的直通设备时的逻辑不相同。为了在热迁移时可以将虚拟机的各直通设备的相关数据完整地迁移至目标端虚拟机,可以读取源端虚拟机直通设备的设备标识,以设备标识来区分不同的直通设备。在这里,设备标识可以由总线号和设备编号组成。
步骤302,通过调用已配置的寄存器状态同步接口执行设备标识关联的寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机。
在本实施例中,寄存器状态同步接口封装了不同直通设备的寄存器状态同步逻辑。并且每个直通设备的寄存器状态同步逻辑是与其设备标识关联的。可以预先设置设备标识与实现该设备标识所标识的直通设备的寄存器状态同步方法的逻辑之间的关联关系。在迁移准备阶段,调用寄存器状态同步接口之后,可以根据待迁移的直通设备的设备标识来获取相应的寄存器状态不同逻辑,并执行相应的直通设备的寄存器状态的同步操作。具体可以将步骤301读取的直通设备的设备标识作为参数传输至被调用的寄存器状态同步接口,使得寄存器状态同步接口可以根据该参数执行对应的状态同步方法。
在本实施例的一些可选的实现方式中,迁移准备阶段的寄存器状态同步可以包括读写寄存器的同步以及状态寄存器的同步。可以通过调用寄存器状态同步接口,执行上述设备标识所关联的寄存器状态同步逻辑,来读取源端虚拟机直通设备的读写寄存器的内容并记录源端虚拟机对直通设备的状态寄存器的操作,将源端虚拟机直通设备的读写寄存器的内容传输并写入目标端虚拟机直通设备的读写寄存器,并在目标端虚拟机执行所记录的源端虚拟机对直通设备的状态寄存器的操作。
可选地,上述执行主体可以通过虚拟机监控器来将源端虚拟机的直通设备的相关数据迁移至目标端虚拟机。具体来说,调用寄存器状态接口来执行设备标识关联的寄存器状态同步方法之后,可以通过寄存器状态接口将结果传输至虚拟机监控器,经由虚拟机监控器将直通设备的寄存器状态同步至目标端虚拟机的直通设备的寄存器。
步骤303,取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机。
在本实施例中,上述执行主体可以取消源端虚拟机的透传状态,以使源端虚拟机对这些直通设备的寄存器的访问都可以被记录在上述执行主体中。
上述步骤303中的同步操作可以包括同步寄存器状态的步骤3031和同步DMA脏页的步骤3032。
步骤3031,通过调用已配置的寄存器状态同步接口执行设备标识关联的寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作。
在热迁移执行阶段,可以持续同步寄存器状态。具体可以将设备标识作为参数传递至寄存器状态同步接口,在寄存器状态同步接口被调用时执行该设备标识关联的寄存器状态同步方法,以捕获源端虚拟机对直通设备的寄存器的读写操作,进而可以在目标端虚拟机直通设备的寄存器执行同样的读写操作,以保证迁移后数据的完整。
步骤3032,通过调用已配置的DMA脏页传输接口执行设备标识关联的DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
可以将设备标识作为参数传递至DMA脏页传输接口,在DMA脏页传输接口被调用时执行该设备标识关联的DMA脏页传输方法。这里的DMA脏页传输方法可以包括:读取源端虚拟机直通设备标识的DMA脏页,将源端虚拟机直通设备标识的DMA脏页传输至目标端虚拟机,目标端虚拟机将接收到的DMA脏页解析后得到的数据写入内存中。
可选地,上述步骤3031和步骤3032可以分别通过寄存器状态同步接口和DMA脏页传输接口将寄存器状态和DMA脏页传输至虚拟机监控器,也即,虚拟机监控器可以通过已配置的寄存器状态同步接口和DMA脏页传输接口捕获源端虚拟机直通设备的寄存器状态数据和DMA脏页数据,然后将捕获到的寄存器状态数据和DMA脏页数据根据设备标识同步至目标端虚拟机的相应的直通设备的寄存器中。
在本实施例中,与图2所示的实施例类似地,可以在热迁移执行阶段迭代执行多轮同步操作,即迭代执行步骤3031和步骤3032,在每轮的同步操作执行完毕后,可以判断当前轮的脏页率与上一轮的脏页率之间的差异是否小于预设的阈值,若是则可以短暂地停止源端虚拟机的服务,具体可以向发出读写请求的客户端返回读写失败的消息。之后再执行一次同步操作,以将源端虚拟机的所有数据都同步至目标端虚拟机。然后启动目标端虚拟机的服务,并在目标端虚拟机恢复直通设备寄存器的透传状态,使得目标端虚拟机的I/O性能达到最佳。
请参考图4,其示出了图3所示虚拟机直通设备热迁移方法的一种示意性的框架。如图4所示,上述虚拟机直通设备热迁移方法的框架可以包括辅助热迁模块和虚拟机监控器VMM。可以在虚拟机的宿主机中配置辅助热迁模块,该辅助热迁模块可以包括抽象层和设备实现层。抽象层可以包括预先配置的寄存器状态同步接口和DMA脏页传输接口。寄存器状态同步接口可以是将不同直通设备(例如图4所示网卡A、网卡B、GPU X等)的寄存器状态同步逻辑抽象后提供给虚拟机监控器的接口,DMA脏页传输接口可以是将不同直通设备(例如图4所示网卡A、网卡B、GPU X等)的DMA脏页传输逻辑抽象后提供给虚拟机监控器(VMM)的接口。设备实现层可以包括与各直通设备关联的寄存器状态同步逻辑和DMA脏页传输逻辑。这样,在虚拟机的直通设备热迁移时,可以通过抽象层提供的接口实现直通设备的寄存器状态同步方法和DMA脏页传输方法,将直通设备的寄存器状态和DMA脏页传输至虚拟机监控器,进而通过虚拟机监控器来主导直通设备的迁移。
从图3和图4可以看出,本实施例的虚拟机直通设备的迁移方法,通过读取待迁移的直通设备的设备标识,在调用寄存器状态同步接口和DMA脏页传输接口时,可以根据设备标识查找并执行相应直通设备的寄存器状态和DMA脏页同步方法,能够实现源端虚拟机上不同直通设备的热迁移,进一步保证迁移过程中数据被完整地同步至新的虚拟机,保证虚拟机迁移后正常运行。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种虚拟机直通设备的热迁移装置的一个实施例,该装置实施例与图2或图3所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的虚拟机直通设备的热迁移装置500包括:寄存器状态同步单元501和增量数据同步单元502。其中,寄存器状态同步单元501可以被配置成通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机。增量数据同步单元502可以被配置成取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机。增量数据同步单元502可以包括寄存器读写数据同步单元5021和DMA脏页同步单元5022。寄存器读写数据同步单元5021被配置成执行如下同步操作:通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作。DMA脏页同步单元5022被配置成执行如下同步操作:通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
在一些实施例中,寄存器状态同步单元501可以进一步被配置成:通过调用已配置的寄存器状态同步接口执行将源端虚拟机直通设备的寄存器状态传输至虚拟机监控器的操作,在目标端虚拟机同步虚拟机监控器获取的寄存器状态;以及寄存器读写数据同步单元进一步被配置成:通过调用已配置的寄存器状态同步接口执行将迁移过程中对源端虚拟机直通设备的寄存器的读写操作记录传输至虚拟机监控器的操作。
在一些实施例中,DMA脏页同步单元5022可以进一步被配置成:通过调用已配置的DMA脏页传输接口执行将源端虚拟机直通设备标识的DMA脏页传输至虚拟机监控器的操作;在目标端虚拟机读取虚拟机监控器获取的DMA脏页,并解析DMA脏页获得迁移过程中DMA修改的数据,将解析得到的数据写入目标端虚拟机的内存中。
在一些实施例中,装置500还可以包括:读取单元,被配置成读取源端虚拟机直通设备的设备标识。上述寄存器状态同步单元501可以进一步被配置成通过调用已配置的寄存器状态同步接口执行设备标识关联的寄存器状态同步方法;上述寄存器读写数据同步单元5021可以进一步被配置成通过调用已配置的寄存器状态同步接口执行设备标识关联的寄存器状态同步方法;上述DMA脏页同步单元5022可以进一步被配置成通过调用已配置的DMA脏页传输接口执行设备标识关联的DMA脏页同步方法。
在一些实施例中,上述寄存器状态同步单元501可以进一步被配置成按照如下方式将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机:通过调用寄存器状态同步接口读取源端虚拟机直通设备的读写寄存器的内容,将源端虚拟机直通设备的读写寄存器的内容传输并写入目标端虚拟机直通设备的读写寄存器;通过调用寄存器状态同步接口捕捉并记录源端虚拟机直通设备的对读写寄存器的读写操作,在目标端虚拟机直通设备执行源端虚拟机的读写操作,以将源端虚拟机直通设备的状态寄存器的内容同步至目标端虚拟机直通设备的状态寄存器。
装置500中记载的诸单元与参考图2和图3描述的方法中的各个步骤相对应。由此,上文针对方法实施例及其可选实现方式描述的操作和特征同样适用于装置500及其中包含的单元,在此不再赘述。
本申请上述实施例的虚拟机直通设备的热迁移装置,寄存器状态同步单元通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机;之后增量数据同步单元取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;增量数据同步单元包括寄存器读写数据同步单元和DMA脏页同步单元,寄存器读写数据同步单元被配置成执行如下同步操作:通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作;DMA脏页同步单元被配置成执行如下同步操作:通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。通过配置的寄存器状态同步接口以及DMA脏页传输接口可以在虚拟机热迁移时将源端虚拟机的直通设备的相关数据传输至目标端虚拟机,从而在不改变虚拟机内核的情况下实现了直通设备的热迁移。
下面参考图6,其示出了适于用来实现本申请实施例的服务器的计算机系统600的结构示意图。图6示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括寄存器状态同步单元和增量数据同步单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,寄存器状态同步单元还可以被描述为“通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至目标端虚拟机;取消源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;同步操作包括:通过调用寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作;通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种虚拟机直通设备的热迁移方法,包括:
通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至所述目标端虚拟机;
取消所述源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;
所述同步操作包括:
通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作;以及
通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
2.根据权利要求1所述的方法,其中,所述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至所述目标端虚拟机,包括:
通过调用已配置的寄存器状态同步接口执行将源端虚拟机直通设备的寄存器状态传输至虚拟机监控器的操作,在目标端虚拟机同步所述虚拟机监控器获取的寄存器状态;以及
所述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,包括:
通过调用已配置的寄存器状态同步接口执行将迁移过程中对源端虚拟机直通设备的寄存器的读写操作记录传输至所述虚拟机监控器的操作。
3.根据权利要求1所述的方法,其中,所述通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中,包括:
通过调用已配置的DMA脏页传输接口执行将所述源端虚拟机直通设备标识的DMA脏页传输至虚拟机监控器的操作;
在目标端虚拟机读取所述虚拟机监控器获取的DMA脏页,并解析DMA脏页获得迁移过程中DMA修改的数据,将解析得到的数据写入所述目标端虚拟机的内存中。
4.根据权利要求1-3任一项所述的方法,其中,所述方法还包括:
读取源端虚拟机直通设备的设备标识;
所述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,包括:
通过调用已配置的寄存器状态同步接口执行所述设备标识关联的寄存器状态同步方法;
所述通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,包括:
通过调用已配置的DMA脏页传输接口执行所述设备标识关联的DMA脏页同步方法。
5.根据权利要求1所述的方法,其中,所述通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至所述目标端虚拟机,包括:
通过调用所述寄存器状态同步接口读取源端虚拟机直通设备的读写寄存器的内容,将源端虚拟机直通设备的读写寄存器的内容传输并写入目标端虚拟机直通设备的读写寄存器;
通过调用所述寄存器状态同步接口捕捉并记录源端虚拟机直通设备的对读写寄存器的读写操作,在目标端虚拟机直通设备执行所述源端虚拟机的读写操作,以将源端虚拟机直通设备的状态寄存器的内容同步至目标端虚拟机直通设备的状态寄存器。
6.一种虚拟机直通设备的热迁移装置,包括:
寄存器状态同步单元,被配置成通过调用已配置的寄存器状态同步接口执行寄存器状态同步方法,以将源端虚拟机直通设备的寄存器状态同步至所述目标端虚拟机;
增量数据同步单元,被配置成取消所述源端虚拟机直通设备的透传状态,通过迭代执行多轮同步操作将源端虚拟机直通设备迁移至目标端虚拟机;
所述增量数据同步单元包括寄存器读写数据同步单元和DMA脏页同步单元,
所述寄存器读写数据同步单元被配置成执行如下同步操作:通过调用所述寄存器状态同步接口执行寄存器状态同步方法,以捕获迁移过程中对源端虚拟机直通设备的寄存器的读写操作,对目标端虚拟机直通设备的寄存器执行所捕获的读写操作;
所述DMA脏页同步单元被配置成执行如下同步操作:通过调用已配置的DMA脏页传输接口执行DMA脏页同步方法,以将源端虚拟机直通设备标识的DMA脏页对应的数据写入目标端虚拟机的内存中。
7.根据权利要求6所述的装置,其中,所述寄存器状态同步单元进一步被配置成:
通过调用已配置的寄存器状态同步接口执行将源端虚拟机直通设备的寄存器状态传输至虚拟机监控器的操作,在目标端虚拟机同步所述虚拟机监控器获取的寄存器状态;以及
所述寄存器读写数据同步单元进一步被配置成:
通过调用已配置的寄存器状态同步接口执行将迁移过程中对源端虚拟机直通设备的寄存器的读写操作记录传输至所述虚拟机监控器的操作。
8.根据权利要求6所述的装置,其中,所述DMA脏页同步单元进一步被配置成:
通过调用已配置的DMA脏页传输接口执行将所述源端虚拟机直通设备标识的DMA脏页传输至虚拟机监控器的操作;
在目标端虚拟机读取所述虚拟机监控器获取的DMA脏页,并解析DMA脏页获得迁移过程中DMA修改的数据,将解析得到的数据写入所述目标端虚拟机的内存中。
9.根据权利要求6-8任一项所述的装置,其中,所述装置还包括:
读取单元,被配置成读取源端虚拟机直通设备的设备标识;
所述寄存器状态同步单元进一步被配置成通过调用已配置的寄存器状态同步接口执行所述设备标识关联的寄存器状态同步方法;
所述寄存器读写数据同步单元进一步被配置成通过调用已配置的寄存器状态同步接口执行所述设备标识关联的寄存器状态同步方法;
所述DMA脏页同步单元进一步被配置成通过调用已配置的DMA脏页传输接口执行所述设备标识关联的DMA脏页同步方法。
10.根据权利要求6所述的装置,其中,所述寄存器状态同步单元进一步被配置成按照如下方式将源端虚拟机直通设备的寄存器状态同步至所述目标端虚拟机:
通过调用所述寄存器状态同步接口读取源端虚拟机直通设备的读写寄存器的内容,将源端虚拟机直通设备的读写寄存器的内容传输并写入目标端虚拟机直通设备的读写寄存器;
通过调用所述寄存器状态同步接口捕捉并记录源端虚拟机直通设备的对读写寄存器的读写操作,在目标端虚拟机直通设备执行所述源端虚拟机的读写操作,以将源端虚拟机直通设备的状态寄存器的内容同步至目标端虚拟机直通设备的状态寄存器。
11.一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810590075.8A CN108874506B (zh) | 2018-06-08 | 2018-06-08 | 虚拟机直通设备的热迁移方法和装置 |
US16/353,136 US10963286B2 (en) | 2018-06-08 | 2019-03-14 | Live migration method and apparatus for virtual machine passthrough device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810590075.8A CN108874506B (zh) | 2018-06-08 | 2018-06-08 | 虚拟机直通设备的热迁移方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874506A true CN108874506A (zh) | 2018-11-23 |
CN108874506B CN108874506B (zh) | 2020-07-24 |
Family
ID=64338552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810590075.8A Active CN108874506B (zh) | 2018-06-08 | 2018-06-08 | 虚拟机直通设备的热迁移方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10963286B2 (zh) |
CN (1) | CN108874506B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918172A (zh) * | 2019-02-26 | 2019-06-21 | 烽火通信科技股份有限公司 | 一种虚拟机热迁移方法及系统 |
CN111427659A (zh) * | 2020-03-08 | 2020-07-17 | 苏州浪潮智能科技有限公司 | 一种ssd硬盘直通虚拟机的热迁移的方法和设备 |
WO2020192448A1 (zh) * | 2019-03-25 | 2020-10-01 | 阿里巴巴集团控股有限公司 | 虚拟机的迁移方法和系统 |
CN111736945A (zh) * | 2019-08-07 | 2020-10-02 | 北京京东尚科信息技术有限公司 | 基于智能网卡的虚拟机热迁移方法、装置、设备及介质 |
CN111857968A (zh) * | 2020-07-29 | 2020-10-30 | 山东超越数控电子股份有限公司 | 一种虚拟机的热迁移方法、系统、设备以及介质 |
CN112148421A (zh) * | 2019-06-29 | 2020-12-29 | 华为技术有限公司 | 虚拟机迁移的方法以及装置 |
CN112306624A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
CN113626142A (zh) * | 2021-07-14 | 2021-11-09 | 麒麟软件有限公司 | 一种虚拟时统卡热迁移方法 |
WO2022041839A1 (zh) * | 2020-08-29 | 2022-03-03 | 华为云计算技术有限公司 | 裸金属服务器在线迁移方法以及系统 |
WO2022143717A1 (zh) * | 2020-12-29 | 2022-07-07 | 华为云计算技术有限公司 | 一种虚拟机迁移方法、装置及系统 |
WO2024099228A1 (zh) * | 2022-11-10 | 2024-05-16 | 杭州阿里云飞天信息技术有限公司 | 一种虚拟机迁移方法、系统、设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809888B2 (en) * | 2019-04-29 | 2023-11-07 | Red Hat, Inc. | Virtual machine memory migration facilitated by persistent memory devices |
US11809899B2 (en) * | 2019-06-28 | 2023-11-07 | Intel Corporation | Methods and apparatus for accelerating virtual machine migration |
US11436042B2 (en) * | 2019-10-10 | 2022-09-06 | Red Hat, Inc. | Migrating the runtime state of a container between two nodes |
US20210165675A1 (en) * | 2019-12-02 | 2021-06-03 | Xiao Wang | Live migration for hardware accelerated para-virtualized io device |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119087A1 (en) * | 2007-11-06 | 2009-05-07 | Vmware, Inc. | Pass-through and emulation in a virtual machine environment |
US20100250824A1 (en) * | 2009-03-25 | 2010-09-30 | Vmware, Inc. | Migrating Virtual Machines Configured With Pass-Through Devices |
CN102185774A (zh) * | 2011-05-10 | 2011-09-14 | 中兴通讯股份有限公司 | 虚拟机无缝迁移的方法、管理器及系统 |
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
CN103823638A (zh) * | 2014-02-08 | 2014-05-28 | 华为技术有限公司 | 一种虚拟设备访问方法及装置 |
US20150058838A1 (en) * | 2013-08-21 | 2015-02-26 | Red Hat Israel, Ltd. | Switching between devices having a common host backend in a virtualized environment |
US20170046184A1 (en) * | 2015-08-14 | 2017-02-16 | Red Hat Israel, Ltd. | Guest Management of Devices Assigned to a Virtual Machine |
US20170090965A1 (en) * | 2015-09-28 | 2017-03-30 | Red Hat Israel, Ltd. | Dirty Memory Tracking with Assigned Devices by Exitless Paravirtualization |
US20180046483A1 (en) * | 2016-08-09 | 2018-02-15 | Red Hat Israel, Ltd. | Driver switch for live migration with an assigned device |
CN107844304A (zh) * | 2016-09-18 | 2018-03-27 | 阿里巴巴集团控股有限公司 | 虚拟机热升级方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489699B2 (en) * | 2010-08-13 | 2013-07-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over SR IOV adapter |
US9195401B2 (en) * | 2014-02-18 | 2015-11-24 | University Of Florida Research Foundation, Inc. | Method and apparatus for virtual machine live storage migration in heterogeneous storage environment |
US9342346B2 (en) * | 2014-07-27 | 2016-05-17 | Strato Scale Ltd. | Live migration of virtual machines that use externalized memory pages |
-
2018
- 2018-06-08 CN CN201810590075.8A patent/CN108874506B/zh active Active
-
2019
- 2019-03-14 US US16/353,136 patent/US10963286B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119087A1 (en) * | 2007-11-06 | 2009-05-07 | Vmware, Inc. | Pass-through and emulation in a virtual machine environment |
US20100250824A1 (en) * | 2009-03-25 | 2010-09-30 | Vmware, Inc. | Migrating Virtual Machines Configured With Pass-Through Devices |
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
CN102185774A (zh) * | 2011-05-10 | 2011-09-14 | 中兴通讯股份有限公司 | 虚拟机无缝迁移的方法、管理器及系统 |
US20150058838A1 (en) * | 2013-08-21 | 2015-02-26 | Red Hat Israel, Ltd. | Switching between devices having a common host backend in a virtualized environment |
CN103823638A (zh) * | 2014-02-08 | 2014-05-28 | 华为技术有限公司 | 一种虚拟设备访问方法及装置 |
US20170046184A1 (en) * | 2015-08-14 | 2017-02-16 | Red Hat Israel, Ltd. | Guest Management of Devices Assigned to a Virtual Machine |
US20170090965A1 (en) * | 2015-09-28 | 2017-03-30 | Red Hat Israel, Ltd. | Dirty Memory Tracking with Assigned Devices by Exitless Paravirtualization |
US20180046483A1 (en) * | 2016-08-09 | 2018-02-15 | Red Hat Israel, Ltd. | Driver switch for live migration with an assigned device |
CN107844304A (zh) * | 2016-09-18 | 2018-03-27 | 阿里巴巴集团控股有限公司 | 虚拟机热升级方法及装置 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918172A (zh) * | 2019-02-26 | 2019-06-21 | 烽火通信科技股份有限公司 | 一种虚拟机热迁移方法及系统 |
WO2020192448A1 (zh) * | 2019-03-25 | 2020-10-01 | 阿里巴巴集团控股有限公司 | 虚拟机的迁移方法和系统 |
CN111736943A (zh) * | 2019-03-25 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 虚拟机的迁移方法和系统 |
WO2021000689A1 (zh) * | 2019-06-29 | 2021-01-07 | 华为技术有限公司 | 虚拟机迁移的方法以及装置 |
CN112148421B (zh) * | 2019-06-29 | 2024-01-30 | 华为技术有限公司 | 虚拟机迁移的方法以及装置 |
EP3985504A4 (en) * | 2019-06-29 | 2022-08-10 | Huawei Technologies Co., Ltd. | METHOD AND APPARATUS FOR MIGRATION TO A VIRTUAL MACHINE |
CN112148421A (zh) * | 2019-06-29 | 2020-12-29 | 华为技术有限公司 | 虚拟机迁移的方法以及装置 |
WO2021017719A1 (zh) * | 2019-07-31 | 2021-02-04 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
CN112306624A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
US12117947B2 (en) | 2019-07-31 | 2024-10-15 | Huawei Technologies Co., Ltd. | Information processing method, physical machine, and PCIE device |
CN111736945A (zh) * | 2019-08-07 | 2020-10-02 | 北京京东尚科信息技术有限公司 | 基于智能网卡的虚拟机热迁移方法、装置、设备及介质 |
CN111736945B (zh) * | 2019-08-07 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 基于智能网卡的虚拟机热迁移方法、装置、设备及介质 |
CN111427659B (zh) * | 2020-03-08 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 一种ssd硬盘直通虚拟机的热迁移的方法和设备 |
CN111427659A (zh) * | 2020-03-08 | 2020-07-17 | 苏州浪潮智能科技有限公司 | 一种ssd硬盘直通虚拟机的热迁移的方法和设备 |
CN111857968A (zh) * | 2020-07-29 | 2020-10-30 | 山东超越数控电子股份有限公司 | 一种虚拟机的热迁移方法、系统、设备以及介质 |
WO2022041839A1 (zh) * | 2020-08-29 | 2022-03-03 | 华为云计算技术有限公司 | 裸金属服务器在线迁移方法以及系统 |
WO2022143717A1 (zh) * | 2020-12-29 | 2022-07-07 | 华为云计算技术有限公司 | 一种虚拟机迁移方法、装置及系统 |
CN113626142B (zh) * | 2021-07-14 | 2024-04-05 | 麒麟软件有限公司 | 一种虚拟时统卡热迁移方法 |
CN113626142A (zh) * | 2021-07-14 | 2021-11-09 | 麒麟软件有限公司 | 一种虚拟时统卡热迁移方法 |
WO2024099228A1 (zh) * | 2022-11-10 | 2024-05-16 | 杭州阿里云飞天信息技术有限公司 | 一种虚拟机迁移方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108874506B (zh) | 2020-07-24 |
US20190377594A1 (en) | 2019-12-12 |
US10963286B2 (en) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874506A (zh) | 虚拟机直通设备的热迁移方法和装置 | |
CN109597677A (zh) | 用于处理信息的方法和装置 | |
CN109889875A (zh) | 通信方法、装置、终端设备和计算机可读介质 | |
US8495262B2 (en) | Using a table to determine if user buffer is marked copy-on-write | |
CN110609730B (zh) | 一种实现虚拟处理器间中断透传的方法及设备 | |
CN104335180B (zh) | 虚拟化i/o处理延迟的实时测量 | |
US10983913B2 (en) | Securing exclusive access to a copy of a metadata track via a process while the metadata track is held in a shared mode by another process | |
CN109597640B (zh) | 一种应用程序的账号管理方法、装置、设备和介质 | |
US9529618B2 (en) | Migrating processes between source host and destination host using a shared virtual file system | |
CN109492013A (zh) | 应用于数据库集群的数据处理方法、装置和系统 | |
CN105700944A (zh) | 虚拟机没有共享存储条件下的在线迁移方法和装置 | |
US11144213B2 (en) | Providing preferential access to a metadata track in two track writes | |
WO2023179388A1 (zh) | 一种虚拟机实例的热迁移方法 | |
CN108052664A (zh) | 数据库存储集群的数据迁移方法和装置 | |
US20210311891A1 (en) | Handling an input/output store instruction | |
CN111736945A (zh) | 基于智能网卡的虚拟机热迁移方法、装置、设备及介质 | |
CN109634764A (zh) | 工作流控制方法、装置、设备、存储介质和系统 | |
US10318343B2 (en) | Migration methods and apparatuses for migrating virtual machine including locally stored and shared data | |
CN110119386A (zh) | 数据处理方法、数据处理装置、介质和计算设备 | |
CN111209080A (zh) | 一种图形处理器透传的方法 | |
CN109977102A (zh) | 数据处理方法、装置、介质及电子设备 | |
CN108733602A (zh) | 数据处理 | |
CN109347899A (zh) | 在分布式存储系统中写入日志数据的方法 | |
CN113127430B (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
CN110096543B (zh) | 应用程序的数据操作方法、装置、服务器和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |