CN114546604B - 一种虚拟机的热迁移方法及装置 - Google Patents
一种虚拟机的热迁移方法及装置 Download PDFInfo
- Publication number
- CN114546604B CN114546604B CN202210441822.8A CN202210441822A CN114546604B CN 114546604 B CN114546604 B CN 114546604B CN 202210441822 A CN202210441822 A CN 202210441822A CN 114546604 B CN114546604 B CN 114546604B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- driver
- network packet
- state
- target
- 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.)
- Active
Links
Images
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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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
-
- 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/45575—Starting, stopping, suspending or resuming 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/45591—Monitoring or debugging support
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种虚拟机的热迁移方法及装置。该发明包括:在检测到第一虚拟机进入第一预设状态的情况下,将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态;在第一虚拟机的状态为第二预设状态的情况下,将备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。通过本发明,解决了相关技术中虚拟机的热迁移只针对软件层面,不针对SR‑IOV硬件内部的问题。
Description
技术领域
本发明涉及虚拟机领域,具体而言,涉及一种虚拟机的热迁移方法及装置。
背景技术
相关技术中,虚拟机的热迁移技术一般针对一个纯软件实现的虚拟机的迁移,包括虚拟的外围设备,如虚拟网卡、虚拟磁盘等,监管虚拟机运行的程序(VMM)是运行于CPU的一个软件,它只能读取和拷贝CPU和内存的状态,而配有SR-IOV直通设备的虚拟机,因为硬件部分加速了虚拟机的内部处理,所以虚拟机运行状态不只存在软件层面,也存在于SR-IOV硬件的内部,例如Host物理地址与Guest虚拟地址的映射表,以及在硬件中正在处理网络包等,这给虚拟机的热迁徙造成了困难。
针对配有SR-IOV直通设备的虚拟机,目前已有若干方案试图解决热迁移问题:已有方案1) Bonding Ports,此方案为每个虚拟机的每个VF网卡都额外配置一个虚拟网卡,在虚拟机内部利用网卡Bonding技术合并成一个网口使用,存在的缺点是:切换为虚拟网卡后,性能降级,需要配置GuestOS网络,这会造成虚拟机提供者和使用者不同时,比如给公有云环境的实现带来了困难,即使可以配置,迁移时也会需要额外配置管理工作,增加复杂性。已有方案2) 增加模拟层,此方案是在GuestOS里面增加一层设备模拟层,上层协议访问模拟层,模拟层完全软件实现,所以可以热迁移,由模拟层来管理迁移后设备的启动和设置,并保持迁移对上层的透明,存在的缺点是:需要修改GuestOS,会造成日常维护不变,在公有云环境不太容易实现,在日常工作时导入额外的负载,影响系统性能。已有方案3) 重放数据以恢复VF网卡状态,此方案记录影响VF网卡开始运行后所有影响其状态的动作,然后在迁移后的新VF网卡部分重放,以达到和原VF网卡相同的状态,此方案同时利用压缩同类动作等优化措施以减少存储和缩短重放的时间开销,存在的缺点是:实现复杂,需要分析输入数据和网卡状态变化以压缩优化同类动作,否则所需存储容量和重放的时间将无法接受。另外上述已有方案还有一个共同的缺点是,旧虚拟机停止运行时,所有在网卡内部硬件正在处理的网络包都将会丢失,新虚拟机无法得到这些网络包,造成数据丢失或需要重传。
传统的虚拟机热迁移流程中,虚拟机管理系统(VMM)在checkpoint阶段暂停虚拟机时,不会跟网卡设备同步,也就是说可能是网卡和VF驱动交互的任一阶段,VF驱动可能正在读取某个网卡寄存器,或者是处于网卡中断处理程序中,而暂停并且在迁移目的主机上恢复运行后,VF驱动要求新的VF硬件部分的状态要跟暂停当时一样,才能正确的继续运行,而这发生的概率很小,因为虚拟机可以完全暂停,但网卡硬件会继续运行,不可避免的会造成硬件状态的改变,硬件内部的包处理器在虚拟机已经暂停后,还会继续运行,处理后的网络包会继续发给虚拟机,但因为虚拟机以无法接收,而只能是丢弃掉了。由于SR-IOV网卡向网络包接受队列传输数据时,是利用直接存储器访问(DMA)方式,也就是说直接写入主机物理内存,不经过中央处理器(CPU),因此虚拟机管理系统(VMM)不知道这部分内存已经改变,在向新虚拟机拷贝内存时会漏掉这部分内存,造成新虚拟机内存内容与旧虚拟机不一致,当新虚拟机恢复运行后,会造成问题。
针对相关技术中提到的上述问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种虚拟机的热迁移方法及装置,以解决相关技术中虚拟机的热迁移技术只针对软件层面,不针对SR-IOV硬件的内部的技术问题。
为了实现上述目的,根据本发明的一个方面,提供了一种虚拟机的热迁移方法,其中,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,第一网卡设备上配置有第一PF以及多个第一VF,第一PF对应配置有第一PF驱动,多个第一VF配置有多个目标第一VF驱动,第一PF驱动运行在第一主机的操作系统内,多个目标第一VF驱动运行在与第一主机对应的第一虚拟机的操作系统内,第二网卡设备上配置有第二PF以及多个第二VF,第一PF对应配置有第二PF驱动,多个第二VF配置有多个第二VF驱动,第二PF驱动运行在第二主机的操作系统内,多个第二VF驱该方法包括:在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。
进一步地,在检测第一PF驱动是否收到同步消息之前,该方法包括:控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至第一虚拟机的网络包接收队列中,第一同步点产生部件配置在第一虚拟机中;确定第一PF驱动接收到同步消息,包括:在第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,第一PF驱动配置在第一虚拟机内。
进一步地,确定第一PF驱动接收到同步网络包,包括:控制目标第一VF驱动读取同步网络包,目标第一VF驱动配置在第一虚拟机中,目标第一VF驱动为多个第一VF驱动中的任意一个VF驱动;在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包。
进一步地,在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动之后,该方法还包括:控制目标第一VF驱动处于挂起状态。
进一步地,在第一虚拟机的状态不为第二预设状态的情况下,该方法还包括:清除在接收到同步网络包之前,且备份在虚拟机管理系统的目标网络包;唤醒处于挂起状态的目标第一VF驱动,并控制目标第一VF驱动继续处理第一虚拟机接收到的网络包。
进一步地,在目标第一VF驱动读取到同步网络包的情况下,该方法还包括:确认第一虚拟机接收的网络包已经全部提交给第一VF,并控制第一VF暂停接收第一虚拟机接收到的新网络包,第一VF与目标第一VF驱动对应配置。
进一步地,在第一虚拟机的状态为第二预设状态的情况下,该方法还包括:控制第一PF驱动保存目标第一VF驱动的当前状态,并将第一VF的当前状态同步至第二VF上,第二VF配置在第二虚拟机上;控制第一虚拟机暂停运行。
进一步地,在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机,包括:控制第一通路选择部件的工作模式调整至回放模式,并控制第一通路选择部件将备份在虚拟机管理系统中的目标网络包发送至第二虚拟机。
为了实现上述目的,根据本申请的另一方面,提供了一种计算机可读存储介质,该计算机可读存储介质包括存储的程序,其中,该程序执行上述任意一项的一种虚拟机的热迁移方法。
为了实现上述目的,根据本申请的另一方面,提供了一种处理器,处理器用于运行程序,其中,该程序执行上述任意一项的一种虚拟机的热迁移方法。
通过本发明,采用以下步骤:在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机,解决了相关技术中虚拟机的热迁移技术只针对软件层面,不针对SR-IOV硬件的内部的技术问题,进而达到了虚拟机在热迁移过程中维持数据传输的完整性、不会造成数据丢失的效果。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例提供的一种虚拟机的热迁移方法的流程图;
图2是根据本发明实施例提供的一种虚拟机的热迁移的系统架构示意图;
图3是根据本发明实施例提供的一种虚拟机的热迁移流程的示意图;
图4是根据本发明实施例提供的一种虚拟机的热迁移的迁出过程的时序图;
图5是根据本发明实施例提供的一种虚拟机的热迁移的迁入过程的时序图;
图6是根据本发明实施例提供的一种虚拟机的热迁移装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
术语解释:
HostOS:运行于物理主机上的操作系统;
GuestOS:运行于虚拟机内部的操作系统;
CPU:中央处理器;
mbox:消息机制,用来交换消息;
PF:运行在主机上的物理的PCIe的网卡;
PF驱动:加载的设备驱动用来访问物理的PCIe的网卡;
VF:PF虚拟出来的虚拟PCIe网卡,通过mbox消息机制交来与PF交换控制消息;
VMM:虚拟机管理系统;
SR-IOV 设备:每个 SR-IOV 设备都可有一个物理功能 (Physical Function,PF),最多可有 64,000 个与其关联的虚拟功能 (Virtual Function, VF);
DMA:直接存储器访问,一种使得外围设备可以通过DMA控制器直接访问内存的技术,数据传输过程不需要CPU参与,可以继续执行程序。
根据本发明的实施例,提供了一种虚拟机的热迁移方法,其中,目标主机上配置有PF,PF虚拟出至少两个VF,至少两个VF分别被分配至至少两个虚拟机上,PF对应配置有PF驱动,每个VF对应配置有一个VF驱动,目标主机至少对应有第一虚拟机以及第二虚拟机。
图1是根据本发明实施例提供的一种虚拟机的热迁移方法的流程图。如图1所示,本申请提供的热迁移方法中,针对两个主机,第一主机以及第二主机,其中,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,第一网卡设备上配置有第一PF以及多个第一VF,第一PF对应配置有第一PF驱动,多个第一VF配置有多个目标第一VF驱动,第一PF驱动运行在第一主机的操作系统内,多个目标第一VF驱动运行在与第一主机对应的第一虚拟机的操作系统内,第二网卡设备上配置有第二PF以及多个第二VF,第一PF对应配置有第二PF驱动,多个第二VF配置有多个第二VF驱动,第二PF驱动运行在第二主机的操作系统内,多个第二VF驱动运行在与第二主机对应的第二虚拟机的操作系统内。
具体地,该发明包括以下步骤:
步骤S101,在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包。
上述地,虚拟机热迁移通常包括以下几步构成:
(1)Mark memory pages(标记脏页阶段): 在热迁移的开始阶段,将VM(虚拟机)的所有内存都标记为脏页(其中,硬盘的读写速度永远赶不上内存的速度,系统把读写比较频繁的数据事先放到内存中,以提高读写速度,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页),等待迁移;
(2)Pre-copy(迁移拷贝脏页阶段):Pre-copy阶段会迭代的扫描VM内存,将那些已经标记为脏页的内存页进行拷贝迁移,这里会存在一个页迁移后又被修改进而标记为脏页的情况,所以hypervisor(虚拟机监视器)需要跟踪这些修改。 Pre-copy阶段会持续直到只有很少数量的脏页为止,所以对应大规格VM,这个阶段时间会比较长;
(3)Checkpoint(内部事件,激活后触发数据库写进程阶段):Pre-copy结束后hypervisor会暂停VM,保存VM的设备状态和cpu状态;
(4)Switch-over:将Pre-copy剩余的一部分脏页以及Checkpoint部分保存的状态传输到目的host;
(5)Resume VM:将Checkpoint的状态在目的host恢复(restore),VM重新运行。
本申请提供了一种配置有通路选择部件、同步点产生部件的SR-IOV网卡,具体如图2所示。
上述地,第一预设状态为precopy状态,检测到旧虚拟机处于precopy状态时,旧虚拟机的通路选择部件具有镜像模式,通过镜像模式,将旧虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,避免了网络包的丢失。镜像备份具有将待迁移的目标网络包完整拷贝,恢复时能实现快速恢复,等同于操作系统的复制命令,作为级增量备份的作用。
需要说明的是,VMM是运行于CPU的一个软件,它只能读取和拷贝CPU和内存的状态。而配有SR-IOV直通设备的虚拟机,因为是有硬件部分加速了虚拟机的内部处理,所以虚拟机运行“状态”不只存在软件层面,也存在于SR-IOV硬件的内部,例如Host 物理地址与Guest 虚拟地址的映射表,以及在硬件中正在处理设网络包等,本申请的待迁移的网络包至少包括硬件设备内部正在处理的网络包,因此,通过对网络包进行备份,并且在下述步骤中在第二虚拟机中进行回放,避免了网络包的丢失,从而解决了虚拟机硬件层面的热迁移。
步骤S102,检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上。
上述地,图2中包含有本申请提供的一种SR-IOV网卡的示意图,如图2所示,旧虚拟机上配置有第一PF驱动,其中,PF驱动和VF驱动通过mbox交换控制信息,PF虚拟出来多个VF具有驱动访问PCIe设备及物理网卡的作用,PF驱动除了提供网络传输基本功能以外,还负责管理VF驱动的启动和配置。同步消息是由VF驱动通过mbox的方式发送到PF驱动,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取旧虚拟机的状态,并判断旧虚拟机是否处于checkpoint状态。
步骤S103,在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机。
上述地,在确定旧虚拟机处于checkpoint状态的情况下,将通过镜像备份在虚拟机管理系统中的目标网络包发送到新虚拟机。
步骤S104,控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。
上述地,脏页数据包含网卡接收数据,通过DMA方式传导到旧虚拟机,通过CPU读写获得。利用DMA技术,直接写入该内存区域,减少了CPU的负载。第一PF驱动还具有获取脏页数据和虚拟机状态的作用,并控制第一PF驱动将脏页数据以及旧虚拟机的状态发送至新虚拟机。
上述地,SR-IOV 标准规定将一个物理的PCIe的网卡(PF)虚拟化成多个虚拟的PCIe网卡(VF),并且每个设备可以直接分配给一个虚拟机。在虚拟机的内部,VF可以被识别为一个标准的PCIe网卡设备,所以GuestOS需要加载一个设备驱动来访问这个设备,称之为VF驱动。同时,在HostOS内部,也需要加载一个设备驱动,来访问物理的PCIe的网卡,称为PF驱动,PF驱动除了提供同样的网络传输基本功能以外,还负责管理VF的启动和配置。PF驱动和VF驱动通过mbox消息机制,来交换控制信息。
同时,需要注意的是,在SR-IOV网卡内部,有一系列的处理单元,来对接受的网络包进行各种处理,包括对网络包头部的解析,分类,数据校验,加解密,压缩解压缩等,在此统称为网络包处理流水线。此类处理会因不同厂家产品的不同,而具体实现的功能有所不同。经网络包处理流水线处理后的网络包,会根据目的地址,分发给各个虚拟网卡(VF)所分配的网络包接受队列,然后通知VF驱动来读取数据,转发给虚拟机里面的应用程序使用。网络包接受队列是虚拟机内部的一块内存,SR-IOV网卡向网络包接受队列传输数据时,是利用DMA技术,直接写入该内存区域,不经过CPU以减少CPU的负载。
如图2所示,图2是根据本发明实施例提供的一种虚拟机的热迁移的系统架构示意图,本申请针对配有SR-IOV直通网卡的虚拟机在热迁移过程中所遇到的问题,保持源虚拟机和目的虚拟机绑定的VF驱动具有一致的状态,不中断虚拟机内部应用的网络连接。由SR-IOV设备通过DMA引擎直接写入CPU的页面,虚拟机管理系统拷贝到目的虚拟机的内存中,不丢失硬件内部正在处理中的网络包,同时本申请避免背景技术中已有方案1)、2)、3)的缺点。虚拟机暂停时,Guest里面的VF驱动处于挂起状态,而不是网络包处理中间状态,这样能保证网络包处理的完整性,避免虚拟机恢复时出问题。由于同步备份了迁移过程中的网络包,虚拟机暂停后网卡硬件正在处理的网络包不会丢失,通过虚拟机恢复后的重放,维持网络数据传输的完整性,只需备份相邻两同步点之间的网络包,占用存储空间少,虚拟机管理系统间传输数据少,能够让虚拟机尽快恢复运行,不需要配置GuestOS网络,迁移对协议栈透明,应用网络连接不中断正常工作时不引入额外负载,修改限定在硬件和PF、VF驱动和虚拟机管理系统,不需要修改HostOS和GuestOS。
在一种可选的实例中,在检测第一PF驱动是否收到同步消息之前,该方法包括:控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至第一虚拟机的网络包接收队列中,第一同步点产生部件配置在第一虚拟机中;确定第一PF驱动接收到同步消息,包括:在第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,第一PF驱动配置在第一虚拟机内。
上述地,通路选择部件的镜像模式还具有将同步网络包插入至第一虚拟机的网络包接收队列的作用。同步网络包是同步点产生部件根据事先设定的参数,定时或每隔若干网络包,在输入网络包流里面插入一个特殊的网络包,PF驱动和VF驱动里面有相应的逻辑识别同步网络包。控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至旧虚拟机的网络包接收队列中,第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,上述过程发生在旧虚拟机内。
在一种可选的实例中,确定第一PF驱动接收到同步网络包,包括:控制目标第一VF驱动读取同步网络包,目标第一VF驱动配置在第一虚拟机中,目标第一VF驱动为多个第一VF驱动中的任意一个VF驱动;在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包。
上述地,PF驱动和VF驱动里面有相应的逻辑识别同步网络包,控制目标第一VF驱动读取同步网络包,再通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包。
在一种可选的实例中,在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动之后,该方法还包括:控制目标第一VF驱动处于挂起状态。
上述地,在目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包后,目标第一VF驱动控制目标第一VF驱动处于挂起状态,以准备虚拟机的迁移工作。
在一种可选的实例中,在第一虚拟机的状态不为第二预设状态的情况下,该方法还包括:清除在接收到同步网络包之前,且备份在虚拟机管理系统的目标网络包;唤醒处于挂起状态的目标第一VF驱动,并控制目标第一VF驱动继续处理第一虚拟机接收到的网络包。
上述地,当旧虚拟机处于precopy状态时,通过虚拟机管理系统清除在接收到同步网络包之前备份的目标网络包,唤醒处于挂起状态的目标第一VF驱动,并控制目标第一VF驱动继续处理第一虚拟机接收到的网络包,直到接收到下一个同步点网络包。
在一种可选的实例中,在目标第一VF驱动读取到同步网络包的情况下,该方法还包括:确认第一虚拟机接收的网络包已经全部提交给第一VF,并控制第一VF暂停接收第一虚拟机接收到的新网络包,第一VF与目标第一VF驱动对应配置。
上述地,在目标第一VF驱动读取到同步网络包的情况下,首先确认旧虚拟机在同步网络包之前接收到的网络包是否已经全部提交给第一VF,如果旧虚拟机在同步网络包之前接收到的网络包已经全部提交给第一VF, 第一VF暂停接收旧虚拟机接收到的新网络包。
在一种可选的实例中,在第一虚拟机的状态为第二预设状态的情况下,该方法还包括:控制第一PF驱动保存目标第一VF驱动的当前状态,并将第一VF的当前状态同步至第二VF上,第二VF配置在第二虚拟机上;控制第一虚拟机暂停运行。
上述地,在旧虚拟机处于checkpoint状态时,通过将第一VF的当前状态同步至第二VF上来配置新虚拟机。通过第一PF驱动保存目标第一VF驱动的当前状态,将第一VF的当前状态同步至第二VF上,从而实现将第二VF配置在新虚拟机上,旧虚拟机暂停运行。
在一种可选的实例中,在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机,包括:控制第一通路选择部件的工作模式调整至回放模式,并控制第一通路选择部件将备份在虚拟机管理系统中的目标网络包发送至第二虚拟机。
上述地,通路选择部件还具有回放模式,回放模式为对虚拟机管理系统备份的目标网络包重新发往VF驱动,并做相应网络包头部处理,例如改变目的mac地址。控制第一通路选择部件的工作模式调整至回放模式,第一PF驱动通过虚拟机管理系统将备份的目标网络包发送到新虚拟机,当所有保存的目标网络包回放结束时,通路选择部件恢复正常模式,新虚拟机处理目标网络包。需要注意的是,热迁移过程完毕后,旧虚拟机一般停止运行。
在本申请提供的一种实施例中,如图3所示,图3是根据本发明实施例提供的一种虚拟机的热迁移流程的示意图,通过在网络包流里插入同步点网络包,VF驱动得以在同步点时,清空发送队列,停止从VF接收新的网络包并挂起,从而使VF驱动处于一个确定的等待状态,当此时虚拟机管理系统暂停虚拟机并在目的主机上恢复虚拟机运行时,都处于此确定状态,而VF也相应的处于一个确定的状态,发送队列清空,接收队列的网络包处于等待VF驱动读取状态,虽然VF持续运行,向接收队列里面增加新的网络包,但这部分网络包同时也备份给虚拟机管理系统里面的网络包备份队列,所以不会丢失。当VF驱动处于等待迁移状态时,它在接收每个网络包时,检查包数据所在内存页的地址,通过一定手段,例如对相应地址读取后写入,使相应物理页的dirty位置位,以提示虚拟机管理系统需要拷贝相应页面到新虚拟机。同步点网络包的另一个作用是可以减少网络包备份队列所需的存储空间,当VF驱动向PF驱动发送通知表明它到达某个同步点时,也表明此同步点前的网络包都已处理,数据所在页面都已标记为脏页,可以被迁移到新的虚拟机内存。所以在网络包备份队列里面此同步点之前的网络包都可以被安全丢弃,而不会造成数据的丢失。
在本申请提供的另一种实施例中,如图4和图5所示,图4是根据本发明实施例提供的一种虚拟机的热迁移的迁出过程的时序图,图5是根据本发明实施例提供的一种虚拟机的热迁移的迁入过程的时序图,本申请相较于当前通用的虚拟机热迁移流程,其中发送端增加了:查询PF驱动是否可以checkpoint,发送VF状态,发送虚拟机管理系统保存的网络包。接收端增加了:接收VF状态并配置,接收虚拟机管理系统保存的网络包,重放虚拟机管理系统保存的网络包。
本发明实施例提供的一种虚拟机的热迁移方法,其中,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,第一网卡设备上配置有第一PF以及多个第一VF,第一PF对应配置有第一PF驱动,多个第一VF配置有多个目标第一VF驱动,第一PF驱动运行在第一主机的操作系统内,多个目标第一VF驱动运行在与第一主机对应的第一虚拟机的操作系统内,第二网卡设备上配置有第二PF以及多个第二VF,第一PF对应配置有第二PF驱动,多个第二VF配置有多个第二VF驱动,第二PF驱动运行在第二主机的操作系统内,多个第二VF驱通过在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机,解决了相关技术中虚拟机的热迁移技术只针对软件层面,不针对SR-IOV硬件的内部的技术问题,进而达到了虚拟机在热迁移过程中维持数据传输的完整性、不会造成数据丢失的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例还提供了一种虚拟机的热迁移装置,需要说明的是,本发明实施例的一种虚拟机的热迁移装置可以用于执行本发明实施例所提供的用于一种虚拟机的热迁移方法。以下对本发明实施例提供的一种虚拟机的热迁移装置进行介绍。
图6是根据本发明实施例提供的一种虚拟机的热迁移装置的示意图,其中,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,第一网卡设备上配置有第一PF以及多个第一VF,第一PF对应配置有第一PF驱动,多个第一VF配置有多个目标第一VF驱动,第一PF驱动运行在第一主机的操作系统内,多个目标第一VF驱动运行在与第一主机对应的第一虚拟机的操作系统内,第二网卡设备上配置有第二PF以及多个第二VF,第一PF对应配置有第二PF驱动,多个第二VF配置有多个第二VF驱动,第二PF驱动运行在第二主机的操作系统内,多个第二VF驱动运行在与第二主机对应的第二虚拟机的操作系统内,该装置包括:第一控制单元,用于在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测单元,用于检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;第二控制单元,用于在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;第三控制单元,用于控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。
在一种可选的实例中,该装置包括:第四控制单元,用于在检测第一PF驱动是否收到同步消息之前,控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至第一虚拟机的网络包接收队列中,第一同步点产生部件配置在第一虚拟机中;检测单元,包括:确定子单元,用于在第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,第一PF驱动配置在第一虚拟机内。
在一种可选的实例中,确定子单元,包括:第一控制模块,用于控制目标第一VF驱动读取同步网络包,目标第一VF驱动配置在第一虚拟机中,目标第一VF驱动为多个第一VF驱动中的任意一个VF驱动;第二控制模块,用于在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包。
在一种可选的实例中,该装置还包括:第五控制单元,用于在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动之后,控制目标第一VF驱动处于挂起状态。
在一种可选的实例中,该装置还包括:清除单元,用于在第一虚拟机的状态不为第二预设状态的情况下,清除在接收到同步网络包之前,且备份在虚拟机管理系统的目标网络包;唤醒单元,用于唤醒处于挂起状态的目标第一VF驱动,并控制目标第一VF驱动继续处理第一虚拟机接收到的网络包。
在一种可选的实例中,该装置还包括:确定单元,用于在目标第一VF驱动读取到同步网络包的情况下,确认第一虚拟机接收的网络包已经全部提交给第一VF,并控制第一VF暂停接收第一虚拟机接收到的新网络包,第一VF与目标第一VF驱动对应配置。
在一种可选的实例中,该装置还包括:第六控制单元,用于在第一虚拟机的状态为第二预设状态的情况下,控制第一PF驱动保存目标第一VF驱动的当前状态,并将第一VF的当前状态同步至第二VF上,第二VF配置在第二虚拟机上;第七控制单元,用于控制第一虚拟机暂停运行。
在一种可选的实例中,第二控制单元,包括:控制子单元,用于控制第一通路选择部件的工作模式调整至回放模式,并控制第一通路选择部件将备份在虚拟机管理系统中的目标网络包发送至第二虚拟机。
本发明实施例提供的一种虚拟机的热迁移装置,通过第一控制单元,用于在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测单元,用于检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;第二控制单元,用于在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;第三控制单元,用于控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机,解决了相关技术中虚拟机的热迁移技术只针对软件层面,不针对SR-IOV硬件的内部的技术问题,进而达到了虚拟机在热迁移过程中维持数据传输的完整性、不会造成数据丢失的效果。
一种虚拟机的热迁移装置包括处理器和存储器,上述第一控制单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决相关技术中虚拟机的热迁移技术只针对软件层面,不针对SR-IOV硬件的内部的技术问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现一种虚拟机的热迁移方法。
本发明实施例提供了一种处理器,处理器用于运行程序,其中,程序运行时执行一种虚拟机的热迁移方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。
进一步地,在检测第一PF驱动是否收到同步消息之前,该方法包括:控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至第一虚拟机的网络包接收队列中,第一同步点产生部件配置在第一虚拟机中;确定第一PF驱动接收到同步消息,包括:在第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,第一PF驱动配置在第一虚拟机内。
进一步地,确定第一PF驱动接收到同步网络包,包括:控制目标第一VF驱动读取同步网络包,目标第一VF驱动配置在第一虚拟机中,目标第一VF驱动为多个第一VF驱动中的任意一个VF驱动;在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包。
进一步地,在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动之后,该方法还包括:控制目标第一VF驱动处于挂起状态。
进一步地,在第一虚拟机的状态不为第二预设状态的情况下,该方法还包括:清除在接收到同步网络包之前,且备份在虚拟机管理系统的目标网络包;唤醒处于挂起状态的目标第一VF驱动,并控制目标第一VF驱动继续处理第一虚拟机接收到的网络包。
进一步地,在目标第一VF驱动读取到同步网络包的情况下,该方法还包括:确认第一虚拟机接收的网络包已经全部提交给第一VF,并控制第一VF暂停接收第一虚拟机接收到的新网络包,第一VF与目标第一VF驱动对应配置。
进一步地,在第一虚拟机的状态为第二预设状态的情况下,该方法还包括:控制第一PF驱动保存目标第一VF驱动的当前状态,并将第一VF的当前状态同步至第二VF上,第二VF配置在第二虚拟机上;控制第一虚拟机暂停运行。
进一步地,在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机,包括:控制第一通路选择部件的工作模式调整至回放模式,并控制第一通路选择部件将备份在虚拟机管理系统中的目标网络包发送至第二虚拟机。
本文中的设备可以是服务器、PC、PAD、手机等。
本发明还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。
进一步地,在检测第一PF驱动是否收到同步消息之前,该方法包括:控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至第一虚拟机的网络包接收队列中,第一同步点产生部件配置在第一虚拟机中;确定第一PF驱动接收到同步消息,包括:在第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,第一PF驱动配置在第一虚拟机内。
进一步地,确定第一PF驱动接收到同步网络包,包括:控制目标第一VF驱动读取同步网络包,目标第一VF驱动配置在第一虚拟机中,目标第一VF驱动为多个第一VF驱动中的任意一个VF驱动;在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包。
进一步地,在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动之后,该方法还包括:控制目标第一VF驱动处于挂起状态。
进一步地,在第一虚拟机的状态不为第二预设状态的情况下,该方法还包括:清除在接收到同步网络包之前,且备份在虚拟机管理系统的目标网络包;唤醒处于挂起状态的目标第一VF驱动,并控制目标第一VF驱动继续处理第一虚拟机接收到的网络包。
进一步地,在目标第一VF驱动读取到同步网络包的情况下,该方法还包括:确认第一虚拟机接收的网络包已经全部提交给第一VF,并控制第一VF暂停接收第一虚拟机接收到的新网络包,第一VF与目标第一VF驱动对应配置。
进一步地,在第一虚拟机的状态为第二预设状态的情况下,该方法还包括:控制第一PF驱动保存目标第一VF驱动的当前状态,并将第一VF的当前状态同步至第二VF上,第二VF配置在第二虚拟机上;控制第一虚拟机暂停运行。
进一步地,在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机,包括:控制第一通路选择部件的工作模式调整至回放模式,并控制第一通路选择部件将备份在虚拟机管理系统中的目标网络包发送至第二虚拟机。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带、磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种虚拟机的热迁移方法,其特征在于,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,所述第一网卡设备上配置有第一PF以及多个第一VF,所述第一PF对应配置有第一PF驱动,多个所述第一VF配置有多个目标第一VF驱动,所述第一PF驱动运行在所述第一主机的操作系统内,多个所述目标第一VF驱动运行在与所述第一主机对应的第一虚拟机的操作系统内,所述第二网卡设备上配置有第二PF以及多个第二VF,所述第一PF对应配置有第二PF驱动,多个所述第二VF配置有多个第二VF驱动,所述第二PF驱动运行在所述第二主机的操作系统内,多个所述第二VF驱动运行在与所述第二主机对应的第二虚拟机的操作系统内,所述方法包括:
在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在所述第二虚拟机对应的虚拟机管理系统中,其中,所述第一通路选择部件配置在所述第一虚拟机中,所述目标网络包至少包括设备网络包,所述第一预设状态为precopy状态;
检测所述第一PF驱动是否收到同步消息,在确定所述第一PF驱动接收到所述同步消息的情况下,控制所述第一PF驱动获取所述第一虚拟机的状态,并判断所述第一虚拟机的状态是否为第二预设状态,所述第二预设状态为checkpoint状态;
在所述第一虚拟机的状态为第二预设状态的情况下,将所述虚拟机管理系统中备份的所述目标网络包发送至所述第二虚拟机;
控制第一PF驱动获取所述第一虚拟机的脏页数据以及所述第一虚拟机的状态,并将所述脏页数据以及所述第一虚拟机的状态发送至所述第二虚拟机;
在检测所述第一PF驱动是否收到同步消息之前,所述方法包括:控制第一同步点产生部件等频率的产生同步网络包并将所述同步网络包插入至所述第一虚拟机的网络包接收队列中,所述第一同步点产生部件配置在所述第一虚拟机中;
确定所述第一PF驱动接收到所述同步消息,包括:
在第一PF驱动接收到所述同步网络包的情况下,确定所述第一PF驱动接收到所述同步消息,所述第一PF驱动配置在所述第一虚拟机内。
2.根据权利要求1所述的方法,其特征在于,确定所述第一PF驱动接收到所述同步网络包,包括:
控制目标第一VF驱动读取所述同步网络包,所述目标第一VF驱动配置在所述第一虚拟机中,所述目标第一VF驱动为多个所述第一VF驱动中的任意一个VF驱动;
在目标第一VF驱动读取到所述同步网络包的情况下,控制所述目标第一VF驱动通过mbox的方式将所述同步网络包发送给所述第一PF驱动以使所述第一PF驱动接收到所述同步网络包。
3.根据权利要求2所述的方法,其特征在于,在目标第一VF驱动读取到所述同步网络包的情况下,控制所述目标第一VF驱动通过mbox的方式将所述同步网络包发送给所述第一PF驱动之后,所述方法还包括:
控制所述目标第一VF驱动处于挂起状态。
4.根据权利要求3所述的方法,其特征在于,在所述第一虚拟机的状态不为第二预设状态的情况下,所述方法还包括:
清除在接收到所述同步网络包之前,且备份在所述虚拟机管理系统的所述目标网络包;
唤醒处于所述挂起状态的所述目标第一VF驱动,并控制所述目标第一VF驱动继续处理所述第一虚拟机接收到的网络包。
5.根据权利要求2所述的方法,其特征在于,在目标第一VF驱动读取到所述同步网络包的情况下,所述方法还包括:
确认所述第一虚拟机接收的网络包已经全部提交给第一VF,并控制所述第一VF暂停接收所述第一虚拟机接收到的新网络包,所述第一VF与所述目标第一VF驱动对应配置。
6.根据权利要求2所述的方法,其特征在于,在所述第一虚拟机的状态为第二预设状态的情况下,所述方法还包括:
控制所述第一PF驱动保存所述目标第一VF驱动的当前状态,并将所述第一VF的当前状态同步至第二VF上,所述第二VF配置在所述第二虚拟机上;
控制所述第一虚拟机暂停运行。
7.根据权利要求1所述的方法,其特征在于,在所述第一虚拟机的状态为第二预设状态的情况下,将所述虚拟机管理系统中备份的所述目标网络包发送至所述第二虚拟机,包括:
控制所述第一通路选择部件的工作模式调整至回放模式,并控制所述第一通路选择部件将备份在所述虚拟机管理系统中的所述目标网络包发送至所述第二虚拟机。
8.一种虚拟机的热迁移装置,其特征在于,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,所述第一网卡设备上配置有第一PF以及多个第一VF,所述第一PF对应配置有第一PF驱动,多个所述第一VF配置有多个目标第一VF驱动,所述第一PF驱动运行在所述第一主机的操作系统内,多个所述目标第一VF驱动运行在与所述第一主机对应的第一虚拟机的操作系统内,所述第二网卡设备上配置有第二PF以及多个第二VF,所述第一PF对应配置有第二PF驱动,多个所述第二VF配置有多个第二VF驱动,所述第二PF驱动运行在所述第二主机的操作系统内,多个所述第二VF驱动运行在与所述第二主机对应的第二虚拟机的操作系统内,所述装置包括:
第一控制单元,在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在所述第二虚拟机对应的虚拟机管理系统中,其中,所述第一通路选择部件配置在所述第一虚拟机中,所述目标网络包至少包括设备网络包,所述第一预设状态为precopy状态;
检测单元,检测所述第一PF驱动是否收到同步消息,在确定所述第一PF驱动接收到所述同步消息的情况下,控制所述第一PF驱动获取所述第一虚拟机的状态,并判断所述第一虚拟机的状态是否为第二预设状态,所述第二预设状态为checkpoint状态;
第二控制单元,在所述第一虚拟机的状态为第二预设状态的情况下,将所述虚拟机管理系统中备份的所述目标网络包发送至所述第二虚拟机;
第三控制单元,控制第一PF驱动获取所述第一虚拟机的脏页数据以及所述第一虚拟机的状态,并将所述脏页数据以及所述第一虚拟机的状态发送至所述第二虚拟机;
所述装置还包括:第四控制单元,用于在检测第一PF驱动是否收到同步消息之前,控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至第一虚拟机的网络包接收队列中,第一同步点产生部件配置在第一虚拟机中;检测单元,包括:确定子单元,用于在第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,第一PF驱动配置在第一虚拟机内。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述一种虚拟机的热迁移方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述一种虚拟机的热迁移方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210441822.8A CN114546604B (zh) | 2022-04-26 | 2022-04-26 | 一种虚拟机的热迁移方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210441822.8A CN114546604B (zh) | 2022-04-26 | 2022-04-26 | 一种虚拟机的热迁移方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114546604A CN114546604A (zh) | 2022-05-27 |
CN114546604B true CN114546604B (zh) | 2022-08-05 |
Family
ID=81667526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210441822.8A Active CN114546604B (zh) | 2022-04-26 | 2022-04-26 | 一种虚拟机的热迁移方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546604B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086219B (zh) * | 2022-05-31 | 2024-04-09 | 深信服科技股份有限公司 | 一种虚拟路由器确定方法、设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557444A (zh) * | 2015-09-30 | 2017-04-05 | 中兴通讯股份有限公司 | 实现sr-iov网卡的方法和装置、实现动态迁移的方法和装置 |
CN109739618A (zh) * | 2018-12-10 | 2019-05-10 | 新华三云计算技术有限公司 | 虚拟机迁移方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200150997A1 (en) * | 2020-01-17 | 2020-05-14 | Yu Bruce Chang | Windows live migration with transparent fail over linux kvm |
-
2022
- 2022-04-26 CN CN202210441822.8A patent/CN114546604B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557444A (zh) * | 2015-09-30 | 2017-04-05 | 中兴通讯股份有限公司 | 实现sr-iov网卡的方法和装置、实现动态迁移的方法和装置 |
CN109739618A (zh) * | 2018-12-10 | 2019-05-10 | 新华三云计算技术有限公司 | 虚拟机迁移方法及装置 |
Non-Patent Citations (2)
Title |
---|
《SRVM: Hypervisor Support for Live Migration with Passthrough SR-IOV Network Devices》;Xin Xu 等;《ACM SIGPLAN Notices》;20160731;全文 * |
《基于虚拟机执行过程重放的热迁移系统研究》;胡晓昌 等;《计算机工程与设计》;20101231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114546604A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11604708B2 (en) | Memory first live snapshot | |
US10198377B2 (en) | Virtual machine state replication using DMA write records | |
US8694828B2 (en) | Using virtual machine cloning to create a backup virtual machine in a fault tolerant system | |
US9904570B2 (en) | Exchanging and adjusting memory pre-copy convergence times (MPCT) among a group of virtual in order to converge at a pre-copy convergence time window | |
CN100489787C (zh) | 一种虚拟机的外存在线迁移方法 | |
US7660867B2 (en) | Virtual computer system and virtual computer migration control method | |
CN102073462B (zh) | 虚拟存储迁移方法、系统和虚拟机监控器 | |
CN110609730B (zh) | 一种实现虚拟处理器间中断透传的方法及设备 | |
US9547605B2 (en) | Method for data backup, device and system | |
US20070192765A1 (en) | Virtual machine system | |
US20140208012A1 (en) | Virtual disk replication using log files | |
WO2017132872A1 (zh) | 虚拟机备份方法、备份装置及宿主机 | |
US20080028402A1 (en) | Method of setting operation environment and computer system | |
CN103793258A (zh) | 基于管理程序的服务器复制系统及其方法 | |
EP3311272B1 (en) | A method of live migration | |
CN107370622B (zh) | 一种虚拟机复用宿主机mac和ip的方法及系统 | |
CN106469085A (zh) | 虚拟机在线迁移方法、装置及系统 | |
CN105760218A (zh) | 一种虚拟机在线迁移方法及装置 | |
CN111988230B (zh) | 虚拟机通信方法、装置、系统及电子设备 | |
CN102073556A (zh) | 虚拟机的热备份和恢复方法、设备及系统 | |
CN114546604B (zh) | 一种虚拟机的热迁移方法及装置 | |
CN111506385A (zh) | 引擎抢占和复原 | |
CN115408103A (zh) | 虚拟机热迁移方法、系统、设备及存储介质 | |
US10809939B2 (en) | Disk synchronization | |
US11720457B2 (en) | Remote direct memory access (RDMA)-based recovery of dirty data in remote memory |
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 |