一种虚拟机的热迁移方法及装置制造方法及图纸

技术编号:33624011 阅读:11 留言:0更新日期:2022-06-02 00:51
本发明专利技术公开了一种虚拟机的热迁移方法及装置。该发明专利技术包括:在检测到第一虚拟机进入第一预设状态的情况下,将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态;在第一虚拟机的状态为第二预设状态的情况下,将备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。通过本发明专利技术,解决了相关技术中虚拟机的热迁移只针对软件层面,不针对SR

【技术实现步骤摘要】
一种虚拟机的热迁移方法及装置


[0001]本专利技术涉及虚拟机领域,具体而言,涉及一种虚拟机的热迁移方法及装置。

技术介绍

[0002]相关技术中,虚拟机的热迁移技术一般针对一个纯软件实现的虚拟机的迁移,包括虚拟的外围设备,如虚拟网卡、虚拟磁盘等,监管虚拟机运行的程序(VMM)是运行于CPU的一个软件,它只能读取和拷贝CPU和内存的状态,而配有SR

IOV直通设备的虚拟机,因为硬件部分加速了虚拟机的内部处理,所以虚拟机运行状态不只存在软件层面,也存在于SR

IOV硬件的内部,例如Host物理地址与Guest虚拟地址的映射表,以及在硬件中正在处理网络包等,这给虚拟机的热迁徙造成了困难。
[0003]针对配有SR

IOV直通设备的虚拟机,目前已有若干方案试图解决热迁移问题:已有方案1) Bonding Ports,此方案为每个虚拟机的每个VF网卡都额外配置一个虚拟网卡,在虚拟机内部利用网卡Bonding技术合并成一个网口使用,存在的缺点是:切换为虚拟网卡后,性能降级,需要配置GuestOS网络,这会造成虚拟机提供者和使用者不同时,比如给公有云环境的实现带来了困难,即使可以配置,迁移时也会需要额外配置管理工作,增加复杂性。已有方案2) 增加模拟层,此方案是在GuestOS里面增加一层设备模拟层,上层协议访问模拟层,模拟层完全软件实现,所以可以热迁移,由模拟层来管理迁移后设备的启动和设置,并保持迁移对上层的透明,存在的缺点是:需要修改GuestOS,会造成日常维护不变,在公有云环境不太容易实现,在日常工作时导入额外的负载,影响系统性能。已有方案3) 重放数据以恢复VF网卡状态,此方案记录影响VF网卡开始运行后所有影响其状态的动作,然后在迁移后的新VF网卡部分重放,以达到和原VF网卡相同的状态,此方案同时利用压缩同类动作等优化措施以减少存储和缩短重放的时间开销,存在的缺点是:实现复杂,需要分析输入数据和网卡状态变化以压缩优化同类动作,否则所需存储容量和重放的时间将无法接受。另外上述已有方案还有一个共同的缺点是,旧虚拟机停止运行时,所有在网卡内部硬件正在处理的网络包都将会丢失,新虚拟机无法得到这些网络包,造成数据丢失或需要重传。
[0004]传统的虚拟机热迁移流程中,虚拟机管理系统(VMM)在checkpoint阶段暂停虚拟机时,不会跟网卡设备同步,也就是说可能是网卡和VF驱动交互的任一阶段,VF驱动可能正在读取某个网卡寄存器,或者是处于网卡中断处理程序中,而暂停并且在迁移目的主机上恢复运行后,VF驱动要求新的VF硬件部分的状态要跟暂停当时一样,才能正确的继续运行,而这发生的概率很小,因为虚拟机可以完全暂停,但网卡硬件会继续运行,不可避免的会造成硬件状态的改变,硬件内部的包处理器在虚拟机已经暂停后,还会继续运行,处理后的网络包会继续发给虚拟机,但因为虚拟机以无法接收,而只能是丢弃掉了。由于SR

IOV网卡向网络包接受队列传输数据时,是利用直接存储器访问(DMA)方式,也就是说直接写入主机物理内存,不经过中央处理器(CPU),因此虚拟机管理系统(VMM)不知道这部分内存已经改变,在向新虚拟机拷贝内存时会漏掉这部分内存,造成新虚拟机内存内容与旧虚拟机不一致,当新虚拟机恢复运行后,会造成问题。
[0005]针对相关技术中提到的上述问题,目前尚未提出有效的解决方案。

技术实现思路

[0006]本专利技术的主要目的在于提供一种虚拟机的热迁移方法及装置,以解决相关技术中虚拟机的热迁移技术只针对软件层面,不针对SR

IOV硬件的内部的技术问题。
[0007]为了实现上述目的,根据本专利技术的一个方面,提供了一种虚拟机的热迁移方法,其中,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,第一网卡设备上配置有第一PF以及多个第一VF,第一PF对应配置有第一PF驱动,多个第一VF配置有多个目标第一VF驱动,第一PF驱动运行在第一主机的操作系统内,多个目标第一VF驱动运行在与第一主机对应的第一虚拟机的操作系统内,第二网卡设备上配置有第二PF以及多个第二VF,第一PF对应配置有第二PF驱动,多个第二VF配置有多个第二VF驱动,第二PF驱动运行在第二主机的操作系统内,多个第二VF驱该方法包括:在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在第二虚拟机对应的虚拟机管理系统中,其中,第一通路选择部件配置在第一虚拟机中,目标网络包至少包括设备网络包;检测第一PF驱动是否收到同步消息,在确定第一PF驱动接收到同步消息的情况下,控制第一PF驱动获取第一虚拟机的状态,并判断第一虚拟机的状态是否为第二预设状态,其中,第一PF驱动配置在第一虚拟机上;在第一虚拟机的状态为第二预设状态的情况下,将虚拟机管理系统中备份的目标网络包发送至第二虚拟机;控制第一PF驱动获取第一虚拟机的脏页数据以及第一虚拟机的状态,并将脏页数据以及第一虚拟机的状态发送至第二虚拟机。
[0008]进一步地,在检测第一PF驱动是否收到同步消息之前,该方法包括:控制第一同步点产生部件等频率的产生同步网络包并将同步网络包插入至第一虚拟机的网络包接收队列中,第一同步点产生部件配置在第一虚拟机中;确定第一PF驱动接收到同步消息,包括:在第一PF驱动接收到同步网络包的情况下,确定第一PF驱动接收到同步消息,第一PF驱动配置在第一虚拟机内。
[0009]进一步地,确定第一PF驱动接收到同步网络包,包括:控制目标第一VF驱动读取同步网络包,目标第一VF驱动配置在第一虚拟机中,目标第一VF驱动为多个第一VF驱动中的任意一个VF驱动;在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动以使第一PF驱动接收到同步网络包。
[0010]进一步地,在目标第一VF驱动读取到同步网络包的情况下,控制目标第一VF驱动通过mbox的方式将同步网络包发送给第一PF驱动之后,该方法还包括:控制目标第一VF驱动处于挂起状态。
[0011]进一步地,在第一虚拟机的状态不为第二预设状态的情况下,该方法还包括:清除在接收到同步网络包之前,且备份在虚拟机管理系统的目标网络包;唤醒处于挂起状态的目标第一VF驱动,并控制目标第一VF驱动继续处理第一虚拟机接收到的网络包。
[0012]进一步地,在目标第一VF驱动读取到同步网络包的情况下,该方法还包括:确认第一虚拟机接收的网络包已经全部提交给第一VF,并控制第一VF暂停接收第一虚拟机接收到的新网络包,第一VF与目标第一VF驱动对应配置。
[0013]进一步地,在第一虚拟机的状态为第二预设状态的情况下,该方法还包括:控制第
一PF驱动保存目标第一VF驱动的当前状态,并将第一VF的当前状态同步至第二VF上,第二VF配置在第二虚拟机上;控制第一虚拟机暂停运行。
[0014]进一步地,在第一虚拟机的状态为第二预设状本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种虚拟机的热迁移方法,其特征在于,第一主机以及第二主机上分别对应配置有第一网卡设备以及第二网卡设备,所述第一网卡设备上配置有第一PF以及多个第一VF,所述第一PF对应配置有第一PF驱动,多个所述第一VF配置有多个目标第一VF驱动,所述第一PF驱动运行在所述第一主机的操作系统内,多个所述目标第一VF驱动运行在与所述第一主机对应的第一虚拟机的操作系统内,所述第二网卡设备上配置有第二PF以及多个第二VF,所述第一PF对应配置有第二PF驱动,多个所述第二VF配置有多个第二VF驱动,所述第二PF驱动运行在所述第二主机的操作系统内,多个所述第二VF驱动运行在与所述第二主机对应的第二虚拟机的操作系统内,所述方法包括:在检测到第一虚拟机进入第一预设状态的情况下,控制第一通路选择部件将第一虚拟机中的待迁移的目标网络包镜像备份在所述第二虚拟机对应的虚拟机管理系统中,其中,所述第一通路选择部件配置在所述第一虚拟机中,所述目标网络包至少包括设备网络包;检测所述第一PF驱动是否收到同步消息,在确定所述第一PF驱动接收到所述同步消息的情况下,控制所述第一PF驱动获取所述第一虚拟机的状态,并判断所述第一虚拟机的状态是否为第二预设状态;在所述第一虚拟机的状态为第二预设状态的情况下,将所述虚拟机管理系统中备份的所述目标网络包发送至所述第二虚拟机;控制第一PF驱动获取所述第一虚拟机的脏页数据以及所述第一虚拟机的状态,并将所述脏页数据以及所述第一虚拟机的状态发送至所述第二虚拟机。2.根据权利要求1所述的方法,其特征在于,在检测所述第一PF驱动是否收到同步消息之前,所述方法包括:控制第一同步点产生部件等频率的产生同步网络包并将所述同步网络包插入至所述第一虚拟机的网络包接收队列中,所述第一同步点产生部件配置在所述第一虚拟机中;确定所述第一PF驱动接收到所述同步消息,包括:在第一PF驱动接收到所述同步网络包的情况下,确定所述第一PF驱动接收到所述同步消息,所述第一PF驱动配置在所述第一虚拟机内。3.根据权利要求2所述的方法,其特征在于,确定所述第一PF驱动接收到所述同步网络包,包括:控制目标第一VF驱动读取所述同步网络包,所述目标第一VF驱动配置在所述第一虚拟机中,所述目标第一VF驱动为多个所述第一VF驱动中的任意一个VF驱动;在目标第一VF驱动读取到所述同步网络包的情况下,控制所述目标第一VF驱动通过mbox的方式将所述同步网络包发送给所述第一PF驱动以使所述第一PF驱动接收到所述同步网络包。4.根据权利要求3所述的方法,其特征在于,在目标第一VF驱动读取到所述同步网络包的情况下,控制所述目标第一VF驱动通过mbox的方式将所述同步网络包发送给所述第一PF驱动之后,所述方法还包括:控制所述目标第一VF驱动处于挂起状态。5.根据权利要求4所述的方法,其特征在于,在所述第一虚拟机的状态不为第二预设状态的情况下,所述方法还包括:清除在接收到所述同步网络包之前,且备份在所述虚拟机管理系统的所述目标网络
包;唤醒处于所述挂起状态的所述目标第一VF驱动,...

【专利技术属性】
技术研发人员:刘航
申请(专利权)人:赛芯半导体技术北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1