CN118312284A - 虚拟机热迁移方法和通信设备 - Google Patents

虚拟机热迁移方法和通信设备

Info

Publication number
CN118312284A
CN118312284A CN202410278156.XA CN202410278156A CN118312284A CN 118312284 A CN118312284 A CN 118312284A CN 202410278156 A CN202410278156 A CN 202410278156A CN 118312284 A CN118312284 A CN 118312284A
Authority
CN
China
Prior art keywords
virtual machine
network card
virtual
module
state information
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.)
Pending
Application number
CN202410278156.XA
Other languages
English (en)
Inventor
曹水
刘耀崇
邱军
欧阳长春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN118312284A publication Critical patent/CN118312284A/zh
Pending legal-status Critical Current

Links

Abstract

本申请实施例公开了一种虚拟机热迁移方法,可实现SR‑IOV网卡状态热迁移。应用于运行有第一虚拟机的源服务器,该方法用于向目的服务器迁移该第一虚拟机,该源服务器包括单根输入/输出虚拟化SR‑IOV网卡,该源服务器中运行有第一虚拟机、该第一虚拟机使用的第一虚拟网卡、虚拟机管理器和热迁移模块,该第一虚拟网卡是基于该SR‑IOV网卡虚拟出的,该方法包括:该虚拟机管理器向该热迁移模块下发热迁移命令;该热迁移模块根据该热迁移命令获取该第一虚拟机需迁移的信息,该第一虚拟机需迁移的信息包括该第一虚拟网卡的状态信息以及该第一虚拟机的内存数据,并上报该虚拟机管理器;该虚拟机管理器向该目的服务器发送该状态信息以及该第一虚拟机的内存数据。

Description

虚拟机热迁移方法和通信设备
本申请是分案申请,原申请的申请号是201910704642.2,原申请日是2019年07月31日,原申请的全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,特别涉及一种虚拟机热迁移方法和通信设备。
背景技术
虚拟机的热迁移又称动态迁移或在线迁移,是指在保证应用服务正常运行的同时,将一个虚拟机从一台物理服务器迁移到另一台物理服务器上,为了保证迁移过程中客户机服务的可用性,迁移过程只能有非常短暂的停机时间。依靠虚拟机在不同的主机之间迁移,集群能够有效地进行资源的分配和调度。
单根输入/输出虚拟化(single-root I/O virtualization,SR-IOV)是一种输入输出(input/output,I/O)虚拟化技术,该技术可以在一个物理快捷外围部件互连标准(peripheral component interconnection express,PCIE)设备上虚拟化出多个虚拟的PCIE设备,称之为虚拟功能(virtual function,VF)。SR-IOV网卡可以虚拟化出多个虚拟网卡,虚拟机通过虚拟网卡执行业务,每个虚拟机可以绕开虚拟机管理器,直接与其对应的一个或多个虚拟网卡进行网络I/O的数据交互,虚拟网卡的状态信息保存在网卡的存储介质中,虚拟机管理器无法获取SR-IOV网卡的存储介质中的状态信息。
虚拟机热迁移时,需要将虚拟机对应虚拟网卡的状态信息由源服务器迁移至目的服务器,由于虚拟网卡的状态信息保存在物理网卡的存储介质中,虚拟机管理器不感知SR-IOV网卡的存储介质,无法获取该状态信息,因此无法实现虚拟机对应的虚拟网卡的状态信息迁移。
发明内容
本申请实施例提供了一种虚拟机热迁移方法,可以实现SR-IOV网卡状态热迁移,从而使得使用SR-IOV网卡的物理机同样可以执行虚拟机的热迁移过程。
本申请实施例第一方面提供了一种虚拟机热迁移方法,应用于运行有第一虚拟机的源服务器,该方法用于向目的服务器迁移该第一虚拟机,该源服务器包括单根输入/输出虚拟化SR-IOV网卡,该源服务器中运行有第一虚拟机、该第一虚拟机使用的第一虚拟网卡、虚拟机管理器和热迁移模块,该第一虚拟网卡是基于该SR-IOV网卡虚拟出的,该方法包括:该虚拟机管理器向该热迁移模块下发热迁移命令;该热迁移模块根据该热迁移命令获取该第一虚拟机需迁移的信息,该第一虚拟机需迁移的信息包括该第一虚拟网卡的状态信息以及该第一虚拟机的内存数据,并上报该虚拟机管理器;该虚拟机管理器向该目的服务器发送该状态信息以及该第一虚拟机的内存数据。
当源服务器中的第一虚拟机从源服务器迁移至目的服务器时,源服务器获取热迁移请求,源服务器与目的主机建立连接,并根据热迁移请求向目的服务器发送热迁移消息,该热迁移消息用于指示运行于该主机设备的第一虚拟机迁移至该目的服务器;热迁移模块接收该虚拟机管理器根据该热迁移请求下发的热迁移命令,可以通过新增的该热迁移模块获取该第一虚拟机对应的第一虚拟网卡的状态信息;然后,该虚拟机管理器将该状态信息发送给该目的服务器。由此,可以将该状态信息迁移至目的服务器,进而实现第一虚拟机的迁移。
在第一方面的一种可能的实现方式中,该热迁移模块根据该热迁移命令获取该第一虚拟机需迁移的信息包括:该热迁移模块根据该热迁移命令,将该状态信息拷贝至该虚拟机管理器分配的该第一内存空间,该第一内存空间不包括在给该第一虚拟机分配的虚拟内存内。
本申请实施例提供的虚拟机热迁移方法,热迁移模块可以将获取的状态信息拷贝至虚拟机管理器分配的第一内存空间,该第一内存空间不包括在给该第一虚拟机分配的虚拟内存内,第一虚拟机不感知该迁移过程。
在第一方面的一种可能的实现方式中,该热迁移模块根据该热迁移命令,将该状态信息拷贝至该虚拟机管理器分配的该第一内存空间包括:该热迁移模块从该SR-IOV网卡的基地址寄存器、微处理器和微码中拷贝该状态信息至该第一内存空间。
本申请实施例提供的虚拟机热迁移方法,热迁移模块获取该状态信息的包括了分别从物理网卡的基地址寄存器、微处理器和微码中进行拷贝,提供了获取状态信息的一种可行的实现方式。
在第一方面的一种可能的实现方式中,该热迁移模块根据该热迁移命令获取该第一虚拟机需迁移的信息之前,该方法还包括:该热迁移模块锁定该第一虚拟网卡的第一任务队列,以使得该第一任务队列无法接收新的任务,该第一任务队列用于放置为该第一虚拟机下发的任务;该第一虚拟机的第一虚拟功能驱动清空该第一任务队列中所有已有的任务。
在第一虚拟机的迁移过程中,若用户通过该第一虚拟机下发用户命令改变对应的虚拟网卡的状态信息,将可能发生在命令执行完成之前,第一虚拟机对应的虚拟网卡状态信息已经迁移到目标虚拟机的情况,有可能产生命令超时等异常,导致业务中断。本申请实施例提供的虚拟机热迁移方法,在获取虚拟网卡的状态信息之前,该热迁移模块可以锁定第一任务队列,第一虚拟功能驱动可执行第一任务队列中的任务直至排空该队列。这样用户将无法修改第一虚拟机对应的虚拟网卡的状态信息,还可以避免业务异常。
在第一方面的一种可能的实现方式中,该虚拟机管理器向该热迁移模块下发热迁移命令之后,该方法还包括:该热迁移模块对该内存数据进行迭代拷贝;在剩余的该内存数据可一次拷贝完成的情况下,该第一虚拟功能驱动清空该第一任务队列中所有已有的任务之后,该虚拟机管理器挂起该第一虚拟机;该热迁移模块执行最后一次内存数据拷贝。
本申请实施例提供的虚拟机热迁移方法,限定了热迁移模块在内存数据迭代拷贝剩余内存可一次拷贝完成时,锁定并排空执行用户命令的通道,由于锁定执行用户命令的通道后,将不再响应新的用户命令,剩余内存可一次拷贝完成时执行锁定操作,可以减少不响应用户命令阶段的时长。
本申请实施例第二方面提供了一种虚拟机热迁移方法,应用于虚拟机迁移的目的服务器,该目的服务器包括SR-IOV网卡,该目的服务器中运行有虚拟机管理器和热迁移模块,该方法包括:该虚拟机管理器获取热迁移命令,该热迁移命令用于指示源服务器的第一虚拟机将将迁移至该目的服务器的第二虚拟机;该虚拟机管理器接收该源服务器发送的该第一虚拟机对应的第一虚拟网卡的状态信息;该热迁移模块根据该虚拟机管理器的指示,将该状态信息恢复至该SR-IOV网卡。
当源服务器中的第一虚拟机从源服务器迁移至目的服务器的第二虚拟机时,需要将第一虚拟机对应的第一网卡的状态信息也迁移至目的服务器的物理网卡中。该虚拟机管理器接收源服务器发送的第一虚拟机对应的虚拟网卡的状态信息,目的服务器的虚拟机管理器接收到该状态信息后,通过该热迁移模块需要将该状态信息恢复至物理网卡中。使得第一虚拟机的成功迁移。
在第二方面的一种可能的实现方式中,该热迁移模块根据该虚拟机管理器的指示,将该状态信息恢复至该SR-IOV网卡包括:该热迁移模块将该状态信息分别恢复至该SR-IOV网卡的基地址寄存器、微码和微处理器中。
本申请实施例提供的虚拟机热迁移方法,可以将状态信息分别写入该物理网卡的基地址寄存器、微码和微处理器中,增强了方案的可实现性。
在第二方面的一种可能的实现方式中,该热迁移模块将该状态信息分别恢复至该SR-IOV网卡的基地址寄存器、微码和微处理器中包括:该热迁移模块将该状态信息中的第一信息拷贝至该微处理器,该第一信息为从该源服务器的只读基地址寄存器中获取的信息,该微处理器用于将该第一信息恢复至该SR-IOV网卡的只读基地址寄存器。
对于从源服务器的只读基地址寄存器中获取的第一信息,热迁移模块不能直接写入目的服务器的只读基地址寄存器,而是通过拷贝至微处理器中进行恢复,由于微处理器权限较高,可以解决只读基地址寄存器中不能直接写入的问题。
在第二方面的一种可能的实现方式中,该虚拟机管理器接收该源服务器发送的该第一虚拟机对应的第一虚拟网卡的状态信息之前,该方法还包括:该虚拟机管理器通过该热迁移模块分配该第二虚拟机对应的第二虚拟网卡的标识信息。
本申请实施例提供的虚拟机热迁移方法,在接收源服务器发送的第一虚拟机对应的虚拟网卡的状态信息之前,进行全局资源分配,可以避免全局资源被占用带来的冲突。
在第二方面的一种可能的实现方式中,该虚拟机管理器接收该源服务器发送的该第一虚拟机对应的第一虚拟网卡的状态信息包括:该虚拟机管理器接收该源服务器发送的第二信息,该第二信息为该第二虚拟机对应的第二虚拟网卡的第二任务队列的锁定状态信息,该第二虚拟网卡是基于该SR-IOV网卡虚拟出的,该第二任务队列用于放置为该第二虚拟机下发的任务;该方法还包括:该热迁移模块解锁该第二任务队列。
本申请实施例提供的虚拟机热迁移方法,可以将锁定的执行用户命令的通道解锁,这样可以在网卡状态恢复后继续执行用户下发的命令。
该方法还包括:该虚拟机管理器接收该源服务器发送的第一虚拟机对应的内存数据;该虚拟机管理器恢复该第一虚拟机对应的内存数据。
本申请实施例第三方面提供了一种虚拟机热迁移方法,应用于运行有第一虚拟机的源服务器,该方法用于向目的服务器迁移该第一虚拟机,该源服务器包括单根输入/输出虚拟化SR-IOV网卡,该源服务器中运行有第一虚拟机、该第一虚拟机使用的第一虚拟网卡、虚拟机管理器和物理功能驱动,该第一虚拟网卡是基于该SR-IOV网卡虚拟出的,该方法包括:该虚拟机管理器向该虚拟功能驱动下发热迁移命令;该虚拟功能驱动根据该热迁移命令获取该第一虚拟机需迁移的信息,该第一虚拟机需迁移的信息包括该第一虚拟机对应的第一虚拟网卡的状态信息以及该第一虚拟机的内存数据,并上报该虚拟机管理器;该虚拟机管理器向该目的服务器发送该状态信息以及该第一虚拟机的内存数据。
本申请实施例提供的虚拟机热迁移方法,虚拟机管理器不感知SR-IOV网卡的存储介质,无法获取虚拟网卡的状态信息,物理功能驱动则可以与SR-IOV网卡进行交互,本申请实施例中虚拟机管理器通过VFIO与物理功能驱动连接,进而可以通过物理功能驱动获取虚拟网卡的状态信息,进而实现第一虚拟机的迁移。
在第三方面的一种可能的实现方式中,该虚拟功能驱动根据该热迁移命令获取该第一虚拟机需迁移的信息包括:该虚拟功能驱动根据该热迁移命令,将该状态信息拷贝至该虚拟机管理器分配的该第一内存空间,该第一内存空间不包括在给该第一虚拟机分配的虚拟内存内。
在第三方面的一种可能的实现方式中,该虚拟功能驱动根据该热迁移命令,将该状态信息拷贝至该虚拟机管理器分配的该第一内存空间包括:该虚拟功能驱动从该SR-IOV网卡的基地址寄存器、微处理器和微码中拷贝该状态信息至该第一内存空间。
在第三方面的一种可能的实现方式中,该虚拟功能驱动根据该热迁移命令,将该状态信息拷贝至该虚拟机管理器分配的该第一内存空间之前,该方法还包括:该虚拟功能驱动锁定该第一虚拟网卡的第一任务队列,以使得该第一任务队列无法接收新的任务,该第一任务队列用于放置为该第一虚拟机下发的任务;该第一虚拟机运行的第一虚拟功能驱动清空该第一任务队列中所有已有的任务。
在第三方面的一种可能的实现方式中,该虚拟机管理器获取热迁移请求之后,该方法还包括:该虚拟功能驱动对该内存数据进行迭代拷贝;在剩余的该内存数据可一次拷贝完成的情况下,该第一虚拟功能驱动清空该第一任务队列中所有已有的任务之后,该虚拟机管理器挂起该第一虚拟机;该虚拟功能驱动执行最后一次内存数据拷贝。
在第三方面的一种可能的实现方式中,该虚拟功能驱动通过用户态驱动框架VFIO与虚拟机管理器连接。
在第三方面的一种可能的实现方式中,该虚拟功能驱动包括热迁移模块,该热迁移模块用于根据虚拟机管理器的指示获取第一虚拟网卡的状态信息。
本申请实施例提供的虚拟机热迁移方法,在物理功能驱动可以通过新增的热迁移模块,用于辅助实现虚拟机热迁移。虚拟机管理器不感知SR-IOV网卡的存储介质,无法获取虚拟网卡的状态信息,物理功能驱动则可以与SR-IOV网卡进行交互,本申请实施例中通过在物理功能驱动中新增热迁移模块,虚拟机管理器通过VFIO与该热迁移模块连接,进而可以通过热迁移模块获取虚拟网卡的状态信息,进而实现第一虚拟机的迁移。
本申请实施例第四方面提供了一种虚拟机热迁移方法,其特征在于,应用于虚拟机迁移的目的服务器,该目的服务器包括SR-IOV网卡,该目的服务器中运行有虚拟机管理器和物理功能驱动,该方法包括:该虚拟机管理器获取热迁移命令,该热迁移命令用于指示源服务器的第一虚拟机将将迁移至该目的服务器的第二虚拟机;该虚拟机管理器接收该源服务器发送的该第一虚拟机对应的第一虚拟网卡的状态信息;该虚拟功能驱动根据该虚拟机管理器的指示,将该状态信息恢复至该SR-IOV网卡。
在第四方面的一种可能的实现方式中,该虚拟功能驱动根据该虚拟机管理器的指示,将该状态信息恢复至该SR-IOV网卡包括:该虚拟功能驱动将该状态信息分别恢复至该SR-IOV网卡的基地址寄存器、微码和微处理器中。
在第四方面的一种可能的实现方式中,该虚拟功能驱动将该状态信息分别恢复至该SR-IOV网卡的基地址寄存器、微码和微处理器中包括:该虚拟功能驱动将该状态信息中的第一信息拷贝至该微处理器,该第一信息为从该源服务器的只读基地址寄存器中获取的信息;该微处理器将该第一信息恢复至该SR-IOV网卡的只读基地址寄存器。
在第四方面的一种可能的实现方式中,该虚拟机管理器接收该源服务器发送的该第一虚拟机对应的第一虚拟网卡的状态信息之前,该方法还包括:该虚拟机管理器通过该虚拟功能驱动分配该第二虚拟机对应的第二虚拟网卡的标识信息。
该虚拟机管理器接收该源服务器发送的该第一虚拟机对应的第一虚拟网卡的状态信息包括:该虚拟机管理器接收该源服务器发送的第二信息,该第二信息为该第二虚拟机对应的第二虚拟网卡的第二任务队列的锁定状态信息,该第二虚拟网卡是基于该SR-IOV网卡虚拟出的,该第二任务队列用于放置为该第二虚拟机下发的任务;该方法还包括:该虚拟功能驱动解锁该第二任务队列。
在第四方面的一种可能的实现方式中,该虚拟功能驱动包括热迁移模块,该热迁移模块用于根据虚拟机管理器的指示将该状态信息恢复至该SR-IOV网卡。
本申请实施例提供的虚拟机热迁移方法,在物理功能驱动可以通过新增的热迁移模块用于辅助实现虚拟机热迁移。
本申请实施例第五方面提供了一种通信设备,该通信设备为虚拟机热迁移的源源端,该通信设备中运行有第一虚拟机、该第一虚拟机使用的第一虚拟网卡、虚拟机管理器和热迁移模块,该第一虚拟网卡是基于SR-IOV网卡虚拟出的,该方法包括:该虚拟机管理器,用于向该热迁移模块下发热迁移命令;该热迁移模块,用于根据该热迁移命令获取该第一虚拟机需迁移的信息,该第一虚拟机需迁移的信息包括该第一虚拟网卡的状态信息以及该第一虚拟机的内存数据,并上报该虚拟机管理器;该虚拟机管理器,还用于向该目的端通信设备发送该状态信息以及该第一虚拟机的内存数据。
在第五方面的一种可能的实现方式中,该热迁移模块具体用于:根据该热迁移命令,将该状态信息拷贝至该虚拟机管理器分配的该第一内存空间,该第一内存空间不包括在给该第一虚拟机分配的虚拟内存内。
在第五方面的一种可能的实现方式中,该热迁移模块具体用于:从该SR-IOV网卡的基地址寄存器、微处理器和微码中拷贝该状态信息至该第一内存空间。
在第五方面的一种可能的实现方式中,该热迁移模块,还用于锁定该第一虚拟网卡的第一任务队列,以使得该第一任务队列无法接收新的任务,该第一任务队列用于放置为该第一虚拟机下发的任务;该通信设备还包括:该第一虚拟机的第一虚拟功能驱动,用于清空该第一任务队列中所有已有的任务。
在第五方面的一种可能的实现方式中,该热迁移模块还用于:对该内存数据进行迭代拷贝;在剩余的该内存数据可一次拷贝完成的情况下,该第一虚拟功能驱动清空该第一任务队列中所有已有的任务之后,该虚拟机管理器还用于,挂起该第一虚拟机;该热迁移模块,还用于执行最后一次内存数据拷贝。
本申请实施例第六方面提供了一种通信设备,该通信设备为虚拟机热迁移的目的端通信设备,该通信设备包括SR-IOV网卡,该通信设备中运行有虚拟机管理器和热迁移模块,该通信设备包括:该虚拟机管理器,用于获取热迁移命令,该热迁移命令用于指示源端通信设备的第一虚拟机将将迁移至该目的端通信设备的第二虚拟机;该虚拟机管理器,还用于接收该源端通信设备发送的该第一虚拟机对应的第一虚拟网卡的状态信息;该热迁移模块,还用于根据该虚拟机管理器的指示,将该状态信息恢复至该SR-IOV网卡。
在第六方面的一种可能的实现方式中,该热迁移模块具体用于:将该状态信息分别恢复至该SR-IOV网卡的基地址寄存器、微码和微处理器中。
在第六方面的一种可能的实现方式中,该热迁移模块具体用于:将该状态信息中的第一信息拷贝至该微处理器,该第一信息为从该源通信设备的只读基地址寄存器中获取的信息,该微处理器用于将该第一信息恢复至该SR-IOV网卡的只读基地址寄存器。
在第六方面的一种可能的实现方式中,该虚拟机管理器还用于:通过该热迁移模块分配该第二虚拟机对应的第二虚拟网卡的标识信息。
在第六方面的一种可能的实现方式中,该虚拟机管理器具体用于:接收该源通信设备发送的第二信息,该第二信息为该第二虚拟机对应的第二虚拟网卡的第二任务队列的锁定状态信息,该第二虚拟网卡是基于该SR-IOV网卡虚拟出的,该第二任务队列用于放置为该第二虚拟机下发的任务;该热迁移模块,还用于解锁该第二任务队列。
本申请实施例第七方面提供了一种通信设备,为虚拟机热迁移的源端通信设备,包括:处理器、存储器和SR-IOV网卡;该处理器用于运行第一虚拟机、虚拟机管理器和热迁移模块,该第一虚拟机运行第一虚拟功能驱动,该处理器通过该虚拟机管理器、该热迁移模块和该第一虚拟功能驱动执行如前述第一方面提供的各实施方式的方法。
本申请实施例第七方面提供的一种通信设备中,该处理器、存储器和SR-IOV网卡电连接,可选地,该通信设备还包括总线,该处理器、存储器和SR-IOV网卡通过该总线相连。
本申请实施例第八方面提供了一种通信设备,为虚拟机热迁移的目的端通信设备,包括:处理器、存储器和SR-IOV网卡;该处理器用于运行虚拟机管理器和热迁移模块,并通过该虚拟机管理器和热迁移模块执行如前述第二方面提供的各实施方式的方法。
本申请实施例第八方面提供的一种通信设备中,该处理器、存储器和SR-IOV网卡电连接,可选地,该通信设备还包括总线,该处理器、存储器和SR-IOV网卡通过该总线相连。
本申请实施例第九方面提供了一种通信设备,为虚拟机热迁移的源端通信设备,包括:处理器、存储器和SR-IOV网卡;该处理器用于运行第一虚拟机、虚拟机管理器和物理功能驱动,该第一虚拟机运行第一虚拟功能驱动,该处理器通过该虚拟机管理器、该物理功能驱动和该第一虚拟功能驱动执行前述第三方面提供的各实施方式的方法。
本申请实施例第九方面提供的一种通信设备中,该处理器、存储器和SR-IOV网卡电连接,可选地,该通信设备还包括总线,该处理器、存储器和SR-IOV网卡通过该总线相连。
本申请实施例第十方面提供了一种通信设备,为虚拟机热迁移的目的端通信设备,包括:处理器、存储器和SR-IOV网卡;该处理器用于运行虚拟机管理器,和物理功能驱动,并通过该虚拟机管理器和该物理功能驱动执行前述第四方面提供的各实施方式的方法。
本申请实施例第十方面提供的一种通信设备中,该处理器、存储器和SR-IOV网卡电连接,可选地,该通信设备还包括总线,该处理器、存储器和SR-IOV网卡通过该总线相连。
本申请实施例第十一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得该计算机执行前述第一方面至第四方面提供的各实施方式的步骤。
本申请实施例第十二方面提供了一种计算机可读存储介质,包括指令,当该指令在计算机上运行时,使得计算机执行前述第一方面至第四方面提供的各实施方式的步骤。
本申请实施例第十三方面提供了一种虚拟机热迁移系统,包括前述第五方面提供的源端通信设备,和前述第六方面提供的目的端通信设备。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供的虚拟机热迁移方法,通过热迁移模块可获取SR-IOV网卡中的第一虚拟网卡的状态信息,并将该状态信息迁移至目的服务器中。本申请实施例提供的虚拟机热迁移方法可以使得该状态信息迁移到第二虚拟机侧,进而保证第一虚拟机的成功迁移。
附图说明
图1为虚拟机热迁移的一种迁移架构示意图;
图2为本申请实施例的虚拟机热迁移的系统架构示意图;
图3为本申请实施例中虚拟机热迁移方法的一个实施例示意图;
图4为本申请实施例中虚拟机热迁移方法的另一个实施例示意图;
图5为本申请实施例中虚拟机热迁移方法的一个实施例交互示意图;
图6为本申请实施例中锁定并排空任务队列的一个实施例示意图;
图7为本申请实施例中源端通信设备的一个实施例示意图;
图8为本申请实施例中目的端通信设备的一个实施例示意图;
图9为本申请实施例中源端通信设备的另一个实施例示意图;
图10为本申请实施例中目的端通信设备的另一个实施例示意图。
具体实施方式
本申请实施例提供了一种虚拟机热迁移方法,可以实现网卡的状态信息的迁移,从而使得使用SR-IOV网卡的物理机同样可以执行虚拟机的热迁移过程。
请参阅图1,为虚拟机热迁移的一种迁移架构示意图。
该迁移架构中包括虚拟机迁移前的源服务器100和虚拟机迁移后的目的服务器110。在一种可能的应用场景中,可以将运行在源服务器100中的虚拟机1的运行状态迁移到目的服务器110中任一虚拟机,例如,将虚拟机1迁移至虚拟机2。
源服务器和目的服务器均为部署了虚拟机管理器的宿主机,可以为虚拟机提供物理资源。通常在一个宿主机上可以创建多个虚拟机,创建虚拟机的个数取决于宿主机本身的硬件配置和需要创建的虚拟机规格大小。此处对于源服务器100上运行的虚拟机数量N和目的服务器上运行的虚拟机数量M不做限定。在实际应用场景中,宿主机可以是提供各种云服务的服务器。
请参阅图2,为本申请实施例的虚拟机热迁移的系统示意图。
该系统中包括虚拟机迁移前的源服务器和虚拟机热迁移后的目的服务器。
源服务器包括主机和SR-IOV网卡,具体地,主机(HOST)中运行至少一个虚拟机,图2中仅示出一个热迁移前的第一虚拟机VM1。
该主机还运行有源服务器的虚拟机管理器,该虚拟机管理器可以管理一个或多个虚拟机VM,每个虚拟机VM上可以运行操作系统以及运行在操作系统上的各种应用。
该虚拟机管理器为可以是运行在主机设备上的管理模块,例如hypervisor或虚拟机监控器(virtual machine monitor,VMM),也可以由定制的逻辑芯片实现。该虚拟机管理器负责虚拟机的管理和控制,包括虚拟机的创建、迁移、上电和下电等操作。该虚拟机管理器具体可以是qemu(Quick EMUlator)、VMWare、ESXi或基于内核的虚拟机(kernel-basedvirtual machine,KVM)等,具体此处不做限定。
热迁移模块,是本实施例中新增模块,为虚拟机管理器提供热迁移接口,可以根据虚拟机管理器的指示辅助实现热迁移,本申请实施例中热迁移模块可以用于获取虚拟机对应的虚拟网卡的状态信息。可选的,在物理功能驱动中新增该热迁移模块,由于虚拟机管理器不感知SR-IOV网卡的存储介质,无法获取虚拟网卡的状态信息,物理功能驱动则可以与SR-IOV网卡进行交互。虚拟机管理器通过VFIO与该热迁移模块连接,可以通过热迁移模块获取虚拟网卡的状态信息,进而实现第一虚拟机的迁移。
SR-IOV网卡包括至少一个物理功能(physical function,PF)以及至少一个虚拟功能VF,本实施例中SR-IOV网卡的虚拟功能即虚拟网卡,图1中仅示出了一个物理功能与一个第一虚拟网卡。一个虚拟机对应至少一个虚拟网卡,虚拟网卡的状态信息可以保存在SR-IOV网卡的基地址寄存器(base address register,BAR)、管理单元和数据处理单元中。本实施例中管理单元包括微处理器,数据处理单元包括微码。
该主机设备上还运行有管理SR-IOV网卡的PF驱动,该PF驱动可以直接访问PF的所有资源,并负责配置和管理所有VF,每个虚拟机VM运行有VF驱动来管理各自对应的VF。
目的服务器包括主机(HOST)和SR-IOV网卡,该HOST上运行有目的服务器的虚拟机管理器和热迁移模块,主机设备与SR-IOV网卡连接。
目的服务器的热迁移模块,为本实施例中新增模块,为虚拟机管理器提供热迁移接口,可以根据虚拟机管理器的指示辅助实现热迁移,本申请实施例中热迁移模块可以用于将获取的虚拟机对应的虚拟网卡的状态信息恢复至SR-IOV网卡。可选的,在物理功能驱动中新增该热迁移模块,虚拟机管理器通过VFIO与该热迁移模块连接。
可以理解的是,在实际应用中,一个服务器既可能作为虚拟机迁移的源端,也可以作为虚拟机迁移的目的端,因此本实施例中提供的源服务器和目的服务器的软件模块的功能可以集成在一个服务器中实现。
需要说明的是,尽管图2中未示出,但虚拟机管理器和各虚拟机之间存在有通信链路。尽管图2中未示出,该主机设备还包括与运行虚拟机VM相关的硬件,例如中央处理器(central processing unit,CPU)及至少一个计算机可读存储介质的存储器,包括硬盘或内存等。除此之外,该主机设备还可以包括通信单元、输入单元、显示单元等。
由于每个虚拟机可以与其对应的一个或多个虚拟网卡直接进行网络I/O的数据交互,无需通过虚拟机管理器,既降低了虚拟机管理器中的I/O性能开销,又保证了每个VM的I/O吞吐效率。具体的,虚拟机VM从虚拟网卡收发数据报文时,可实现收发完全独立,在进行直接内存访问(direct memory access,DMA)写入的过程中虚拟机管理器并不能感知。虚拟机对应的虚拟网卡的状态信息存储在SR-IOV网卡的存储介质中,虚拟机管理器也不能感知。
虚拟机热迁移中的关键技术点包括内存状态迁移和网卡状态迁移。
通常虚拟机内存的迁移可为三个阶段:
迭代预拷贝阶段:虚拟机迁移过程启动后,其依然运行在源服务器上,虚拟机业务不中断,首先把虚拟机的全部内存复制到目的服务器上,然后向目的服务器不停的迭代复制虚拟机中变化的内存数据。当迭代到需要复制的内存小到一定的门限后,进入停机拷贝阶段。
停机拷贝阶段:虚拟机停机,业务中断,拷贝虚拟机的残余内存数据。
恢复阶段:目的虚拟机完成运行前的恢复处理,启动目的虚拟机,整个迁移过程完成。
虚拟机内存的迁移方式有多种,本申请实施例中并不限定。
网卡状态迁移是指将进行迁移的虚拟机对应的虚拟网卡的状态信息由源服务器迁移至目的服务器。
虚拟机迁移过程中需进行迁移的虚拟网卡的状态信息主要包括以下几类:
(1)、设备信息,包括:状态信息和中断表等,存储在BAR寄存器的BAR0/1和BAR2/3空间中。
(2)、芯片与主机交互制信息和报文上下文,包括:响应事件队列、Mailbox、控制队列、报文描述队列和队列状态等。部分存储在BAR寄存器BAR0/1空间;部分存储在微码中网卡芯片内部表项中,可以通过微码获取和保存。
(3)、网卡业务上下文信息,主要用于管理VF、PF的功能,包括:函数表,MAC-VLAN表和RSS模板表等,可以通过微处理器获取和保存。
由于虚拟网卡的状态信息存储在SR-IOV网卡的BAR寄存器、微码和微处理器中,当源服务器的第一虚拟机要迁移到目的服务器的第二虚拟机时,源服务器的虚拟机管理器无法获取SR-IOV网卡的存储介质中该第一虚拟机对应的虚拟网卡的状态信息。要实现第一虚拟机的成功迁移,该第一虚拟网卡的状态信息也需要迁移到第二虚拟机侧,以使得第二虚拟机对应的第二虚拟网卡恢复工作。为解决此问题,本申请实施例中通过新增的热迁移模块,可以获取网卡中的第一虚拟网卡的状态信息,虚拟机管理器可以将该状态信息拷贝至目的服务器,最终保证第一虚拟机的成功迁移。
基于图2提供的虚拟机热迁移的系统架构,请参阅图3,为本申请实施例中虚拟机热迁移方法的一个实施例示意图。
301、虚拟机管理器向所述热迁移模块下发热迁移命令;
当源服务器中的第一虚拟机从源服务器迁移至目的服务器时,源服务器获取热迁移请求,源服务器根据该热迁移请求与目的主机建立连接,并求向该目的服务器发送热迁移请求,指示源服务器中第一虚拟机迁移至该目的服务器,目的服务器可以进行热迁移前的准备工作,例如,目的服务器为该第一虚拟机预保留虚拟机资源。
虚拟机管理器获取热迁移请求的方式有多种,可选的,用户通过源服务器发送热迁移请求,或者服务器根据预设的规则确定第一虚拟机进行热迁移,具体此处不做限定。
虚拟机管理器向所述热迁移模块下发热迁移命令,需要说明的是,虚拟机管理器在第一虚拟机迁移过程中可以向热迁移模块发送多个热迁移命令,此处对于热迁移命令的数量不做限定。可选的,虚拟机管理器通过用户态驱动框架(virtual function I/O,VFIO),在热迁移的不同阶段,向热迁移模块发送不同的热迁移命令。
302、热迁移模块根据所述热迁移命令获取所述第一虚拟机需迁移的信息;
第一虚拟机需迁移的信息包括该第一虚拟网卡的状态信息以及该第一虚拟机的内存数据,并上报所述虚拟机管理器。
其中,第一虚拟网卡的状态信息存储在SR-IOV网卡中,具体地,存储在SR-IOV网卡的BAR寄存器、管理单元和数据处理单元中。
虚拟机管理器根据该热迁移请求,通过该热迁移模块获取存储在SR-IOV网卡的BAR寄存器、管理单元和数据处理单元中的第一虚拟网卡的状态信息。
可选的,由虚拟机管理器分配的第一内存空间,热迁移模块根据状态信息存储位置分别从网卡的BAR寄存器、微处理器和微码中获取第一虚拟网卡的状态信息,并将该状态信息保存到该第一内存空间。需要说明的是,该第一内存空间不属于第一虚拟机对应的内存空间,由虚拟机管理器直接分配控制。
可选的,虚拟机管理器通过VFIO向热迁移模块发送控制命令。
303、虚拟机管理器向所述目的服务器发送所述状态信息以及所述第一虚拟机的内存数据;
虚拟机管理器将步骤302中获取的第一虚拟机的内存数据发送给该目的服务器进行恢复,此外,虚拟机管理器还将步骤302中获取的该状态信息发送给该目的服务器,以使得目的服务器可以根据该状态信息对迁移后的第二虚拟机进行网卡状态恢复,进而实现热迁移。
本申请实施例中通过源服务器通过新增的热迁移模块,可以获取网卡中的第一虚拟网卡的状态信息,并将该状态信息迁移至第二虚拟机。使得这些状态信息能够迁移到第二虚拟机侧,最终保证第一虚拟机的成功迁移。
基于图2提供的虚拟机热迁移的系统架构,请参阅图4,为本申请实施例中虚拟机热迁移方法的另一个实施例示意图。
401、虚拟机管理器接收源服务器发送的第一虚拟机对应的虚拟网卡的状态信息;
当源服务器中的第一虚拟机从源服务器迁移至目的服务器的第二虚拟机时,需要将第一虚拟机对应的第一网卡的状态信息也迁移至目的服务器的SR-IOV网卡中。
虚拟机管理器接收源服务器发送的该状态信息。
402、虚拟机管理器通过该热迁移模块,将该状态信息恢复至该SR-IOV网卡;
目的服务器的虚拟机管理器接收到该状态信息后,需要将该状态信息分别恢复至SR-IOV网卡的BAR寄存器、微码和微处理器中。
从源服务器的微处理器和微码获取的该状态信息可以直接写入目的服务器的微处理器和微码中;
由于BAR寄存器中包括BAR只读寄存器和BAR可写寄存器,从源端SR-IOV网卡BAR寄存器获取的该状态信息,恢复时需分两种情况进行处理,下面分别进行介绍:
1、从BAR可写寄存器中拷贝的该状态信息可以直接写入目的服务器的BAR可写寄存器;
2、从BAR只读寄存器中拷贝的该状态信息需要通过微处理器进行恢复,写入目的服务器SR-IOV网卡BAR只读寄存器中。
目的服务器的虚拟机管理器对该状态信息进行恢复后,可以使能网卡,进而启用第二虚拟机,完成该第一虚拟机的热迁移。
可选的,虚拟机管理器通过VFIO向热迁移模块发送控制命令。
本申请实施例中目的服务器接收源服务器发送的第一虚拟网卡的状态信息,可以通过新增的热迁移模块,实现该状态信息在SR-IOV网卡中的恢复,使得第一虚拟机的成功迁移。
基于图2提供的虚拟机热迁移的系统架构,请参阅图5,为本申请实施例中虚拟机热迁移方法的一个实施例交互示意图。
虚拟机热迁移技术常用于保持服务器的负载均衡或虚拟机的容灾、备份等场景中。当源服务器中的第一虚拟机从源服务器迁移至目的服务器时,可以根据本申请实施例提供的虚拟机热迁移方案进行迁移。
501、源服务器与目的服务器建立连接;
当源服务器中的第一虚拟机从源服务器迁移至目的服务器时,源服务器获取热迁移请求,源服务器根据该热迁移请求与目的主机建立连接,并求向该目的服务器发送热迁移请求,指示源服务器中第一虚拟机迁移至该目的服务器,目的服务器可以进行热迁移前的准备工作,例如,目的服务器为该第一虚拟机预保留虚拟机资源。
可选的,源服务器接收用户的迁移请求,源服务器根据目的服务器的主机IP地址与目的主机建立连接。
502、目的服务器执行全局资源分配;
目的服务器执行全局资源分配,即初始化VF资源,保证VF资源的可用性。目的服务器中,虚拟机管理器通过热迁移模块在操作系统中查询并申请可用的全局资源,包括第二虚拟机对应的第二虚拟网卡的标识信息。
全局资源是虚拟机对应的虚拟网卡在操作系统中保存的虚拟网卡标识信息。例如索引号(func_id)、RSS模板表标识或q_cfg等。
示例性的,源服务器中,第一虚拟机对应的第一虚拟网卡的索引号是1,迁移到目的服务器的第二虚拟机,目的服务器中,该索引号1可能被其他虚拟机占用,目的服务器为第二虚拟机对应的第二虚拟网卡分配的索引号可能是2。
示例性的,VF资源并不是独立分配的,例如RSS模板表,每个VF使用的RSS是微处理器全局分配的,在源端的rss_id是1,但1在目的端可能已经分配给其他的VF了。
可选的,目的端虚拟机管理器通过pre_active接口进行全局资源的分配。
可选的,目的服务器中,虚拟机管理器分配虚拟网卡标识信息的步骤被称为post_active流程。
可选的,热迁移模块通过微处理器重新分配VF对应的全局资源,然后执行状态恢复流程。热迁移模块通过微处理器和微码设置芯片状态信息和VM对应资源的配置,流程返回后执行虚拟机active操作。本申请实施例提供的虚拟机热迁移方法,实现了迁移源端VF和迁移目的端目标VF的配置一致性,保证了虚拟机在迁移后的正常工作。
需要说明的是,步骤502在步骤501之后,步骤508之前执行,与步骤503至507的执行顺序不做限定。
503、源服务器迭代拷贝内存数据;
虚拟机管理器可以根据该热迁移请求,通过该热迁移模块执行内存数据迭代拷贝。第一虚拟机迁移内存数据的方式有多种,此处不做限定。通常,内存数据的拷贝需要执行多次,迭代拷贝至需要复制的内存小于预设门限后,将进入停机拷贝阶段,通常剩余的内存可一次拷贝完成。
504、源服务器锁定并排空第一任务队列;
第一任务队列中用于放置为第一虚拟机下发的任务,该任务由用户通过应用层下发,该第一任务队列在实际应用过程中被称为执行用户命令的通道(command queue,cmdq)。
可选的,其中包括与第一虚拟机对应的虚拟网卡的状态信息相关的任务;
可选的,用户下发的任务为硬件操作,一次硬件操作可能是非原子性的,即涉及多次操作的组合。示例性的,VM在热迁移时虚拟功能驱动可能正在操作硬件,然而完成一次硬件操作是多次寄存器或硬件交互的组合,该硬件操作为非原子性的,例如:VF驱动向PF驱动发送Mailbox消息时,先写Header寄存器,再写数据寄存器,最后写request寄存器触发VF硬件开始读取头和数据发到目的PF,PF把处理结果返回给VF的异步事件队列(asynchronousevent queue,AEQ),VFD通过中断开始处理到AEQ中的结果。VM迁移时被暂停在上述任何一个过程中,都会导致迁移到目的服务器时恢复出不同的状态,可能出现Mailbox消息丢失,或者发送了一个非法的Mailbox给目的端的PF等异常情况。
可选的,源服务器锁定并排空第一任务队列可称为pre_deactivate流程。
在第一虚拟机的迁移过程中,若用户通过该第一虚拟机下发用户命令改变对应的虚拟网卡的状态信息,将可能发生在命令执行完成之前,第一虚拟机对应的虚拟网卡状态信息已经迁移到目标虚拟机的情况,有可能产生命令超时等异常,导致业务中断。
为解决这一问题,本申请实施例中,热迁移模块将执行用户命令的通道锁定,以使得该通道无法接收用户下发的新任务。执行用户命令的通道被锁定后,用户将无法修改第一虚拟机对应的虚拟网卡的状态信息,但用户业务仍可持续进行。
该第一虚拟机运行的第一虚拟功能驱动排空执行用户命令的通道,是指将锁定队列时已经存在的用户命令执行完成,将队列排空,排空完成代表已下发的用户命令执行完成。热迁移模块可以获取该执行用户命令的通道排空的信息。
需要说明的是,执行用户命令的通道的状态属于待迁移的第一虚拟网卡的状态信息,源服务器将执行用户命令的通道锁定后,该锁定状态将迁移至目的服务器,目的服务器恢复该状态信息后,可以解锁该执行用户命令的通道。
为了进一步介绍源服务器锁定并排空第一任务队列的实现过程,请参阅图6,本申请实施例中锁定并排空任务队列的一个实施例示意图。
一、热迁移模块侧:
611、热迁移模块设置任务队列为锁定状态。
热迁移模块可以在获取第一虚拟网卡的状态信息之前,设置任务队列为锁定状态,可选的,在热迁移模块执行最后一次内存拷贝前,设置任务队列为锁定状态。
需要说明的是,该任务队列的锁定状态可以迁移至目的服务器侧,并在目的服务器侧解除锁定状态,用于继续执行用户命令。
612、热迁移模块判断任务队列是否清空,若是,则执行步骤613,若否,则重复执行步骤612。
613、若热迁移模块判断任务队列清空,则执行其他操作。
若任务队列清空,则热迁移模块可执行其他操作,例如,上报虚拟机管理器,具体此处不做限定。
二、虚拟功能驱动侧:
621、虚拟功能驱动获取用户下发的任务。
622、虚拟功能驱动判断任务队列是否处于锁定状态。
623、若虚拟功能驱动任务队列不处于锁定状态,则虚拟功能驱动将该任务加入任务队列。
624、若虚拟功能驱动任务队列处于锁定状态,则将该任务加入任务队列。
若热迁移模块设置任务队列为锁定状态,此后,该任务队列不能再接收新的任务,若用户下发了新的任务,则虚拟功能驱动将该任务置于等待通道中。当虚拟机迁移完成后,在目的服务器侧,任务队列的锁定状态解除后,等待通道中的任务可以被加入任务队列继续执行。
625、虚拟功能驱动执行任务队列中的任务。
626、虚拟功能驱动将任务队列清空。
在具体的实现过程中,可以通过设置busy_state参数、own参数等实现,其中,热迁移模块锁定任务队列时,设置busy_state为1,任务队列中不再加新任务,解除锁定时busy_state为0,可以继续接收任务。虚拟功能驱动处理任务时own为1,任务清空时own为0,func_ref为待执行命令数。
源端VM pause前,通过pre_deactivate流程确保VFD消息通道suspend,pre_deactivate返回则表示所有下发的消息均已处理完成,此时VM可pause。目的端VM resume前,通过PFD clear busy_state。然后当目的VM resume后,suspend的通道在检测到通道不处于busy状态后恢复,继续下发源端VFD积压的消息。迁移源端流程中:Pre_deactivate流程中设置busy_state为1,然后检查Own,直到Own为0退出;在VFD Uninterrupt flow流程中,busy_state状态为1,则执行消息处理,直到func_ref为0后clear own bit,然后一直等待busy_state状态变为0。
虚拟功能驱动执行任务队列中的任务,直至任务队列中的任务被清空。热迁移模块可以获取该任务队列的任务是否清空。
需要说明的是,步骤504可以在步骤501至步骤505之间任一时刻执行,由于锁定执行用户命令的通道后,将不再响应新的用户命令。可选的,在步骤503之后,当迭代拷贝内存结束,剩余内存可一次拷贝完成时(log_sync时刻)执行步骤504,可以减少不响应用户命令阶段的时长。
505、源服务器运行的第一虚拟机停机;
源服务器确认执行用户命令的通道排空之后,虚拟机管理器调用虚拟机停机流程,挂起第一虚拟机。第一虚拟网卡停用,业务中断,第一虚拟机停机。
506、源服务器向目的服务器执行最后一次内存拷贝;
第一虚拟机停机之后,虚拟机管理器将执行最后一次内存拷贝,将步骤503中剩余的未拷贝内存迁移至目的服务器。
507、源服务器获取第一虚拟网卡的状态信息;
虚拟机管理器获取第一虚拟网卡的状态信息,并将该状态信息拷贝到目的服务器的虚拟机管理器中。
虚拟机管理器通过热迁移模块获取该第一虚拟机对应的第一虚拟网卡的状态信息。具体地,热迁移模块与管理单元、数据处理单元协同工作,由虚拟机管理器分配的第一内存空间,热迁移模块根据状态信息存储位置分别从网卡的BAR寄存器、微处理器和微码中获取第一虚拟网卡的状态信息,并将该状态信息保存到该第一内存空间。需要说明的是,该第一内存空间不属于第一虚拟机对应的内存空间,由虚拟机管理器直接分配控制。
508、源服务器将虚拟网卡的状态信息发送至目的服务器进行恢复;
源服务器的虚拟机管理器将存储在该第一内存空间的该状态信息拷贝到目的服务器的虚拟机管理器。
目的服务器的虚拟机管理器接收到该状态信息后,需要将该状态信息分别恢复至SR-IOV网卡的BAR寄存器、微码和微处理器中。
从源服务器的微处理器和微码获取的该状态信息可以直接写入目的服务器的微处理器和微码中;
由于BAR寄存器中包括BAR只读寄存器和BAR可写寄存器,从源端SR-IOV网卡BAR寄存器获取的该状态信息,恢复时需分两种情况进行处理,下面分别进行介绍:
1、从BAR可写寄存器中拷贝的该状态信息可以直接写入目的服务器的BAR可写寄存器;
2、从BAR只读寄存器中拷贝的该状态信息需要通过微处理器进行恢复,写入目的服务器SR-IOV网卡BAR只读寄存器中。示例性的,例如报文发送通知(Doorbell)和配置控制通知(Mailbox Req)寄存器不能通过源端读取目的端写入的方式来恢复值,因此驻留在BAR只读寄存器的芯片状态不能直接借助QEMU拷贝MMIO空间的方式来迁移。
可选的,该虚拟机管理器接收所述源服务器发送的第二信息,该第二信息为第二虚拟机对应的第二虚拟网卡的任务队列的锁定状态信息,该第二虚拟网卡也是基于SR-IOV网卡虚拟出的,该第二任务队列用于放置为所述第二虚拟机下发的任务;所述热迁移模块解锁所述第二任务队列。
具体地,与步骤504对应地,目的服务器在启用第二虚拟机之前可将任务队列解锁,例如,通过设置busy_state为0,将任务队列的锁定状态解锁。
509、目的服务器启用第二虚拟机;
第一虚拟网卡的状态信息迁移到目的服务器后,目的端虚拟机管理器将锁定的执行用户命令的通道打开,由此可以正常执行用户命令。
目的服务器的虚拟机管理器可以使能网卡,启用第二虚拟机。可选的,虚拟机管理器通过activate接口使能网卡。
510、目的服务器发送广播报文,恢复通信;
为缩短中断时延,目的服务器的虚拟机管理器发送广播报文,使得通信快速恢复。
可选的,虚拟机管理器通过post_resume接口发送广播报文。
需要说明的是,步骤510为可选步骤,可以执行,也可以不执行,此处不做限定。
本申请实施例中通过源服务器通过新增的热迁移模块,可以获取网卡中的第一虚拟网卡的状态信息,并将该状态信息拷贝至虚拟机管理器分配的内存中,进而发送至第二虚拟机。目的服务器接收源服务器发送的第一虚拟网卡的状态信息,可以通过新增的热迁移模块,实现该状态信息在SR-IOV网卡中的恢复,该虚拟机迁移系统可以实现第一虚拟网卡的状态信息迁移,使得第一虚拟机的成功迁移。
上面介绍了本申请实施例提供的虚拟机热迁移方法,下面对实现该方法的通信设备进行介绍,请参阅图7,为本申请实施例中源端通信设备的一个实施例示意图。
本申请实施例提供了一种通信设备,可选的,该通信设备为虚拟机热迁移的源服务器,该源服务器中运行有第一虚拟机、该第一虚拟机使用的第一虚拟网卡、虚拟机管理器701和热迁移模块702,该第一虚拟网卡是基于SR-IOV网卡虚拟出的,包括:
该虚拟机管理器701,用于向该热迁移模块702下发热迁移命令;
该热迁移模块702,用于根据该热迁移命令获取该第一虚拟机需迁移的信息,该第一虚拟机需迁移的信息包括该第一虚拟网卡的状态信息以及该第一虚拟机的内存数据,并上报该虚拟机管理器701;
该虚拟机管理器701,还用于向该目的服务器发送该状态信息以及该第一虚拟机的内存数据。
该热迁移模块702具体用于:根据该热迁移命令,将该状态信息拷贝至该虚拟机管理器701分配的该第一内存空间,该第一内存空间不包括在给该第一虚拟机分配的虚拟内存内。
该热迁移模块702具体用于:从该SR-IOV网卡的基地址寄存器、微处理器和微码中拷贝该状态信息至该第一内存空间。
该热迁移模块702,还用于锁定该第一虚拟网卡的第一任务队列,以使得该第一任务队列无法接收新的任务,该第一任务队列用于放置为该第一虚拟机下发的任务;该服务器还包括:该第一虚拟机的第一虚拟功能驱动,用于清空该第一任务队列中所有已有的任务。
该热迁移模块702还用于:对该内存数据进行迭代拷贝;在剩余的该内存数据可一次拷贝完成的情况下,该第一虚拟功能驱动清空该第一任务队列中所有已有的任务之后,该虚拟机管理器701还用于,挂起该第一虚拟机;该热迁移模块702,还用于执行最后一次内存数据拷贝。
请参阅图8,为本申请实施例中目的端通信设备的一个实施例示意图。
本申请实施例提供一种通信设备,可选的,该通信设备为虚拟机热迁移的目的服务器,该目的服务器包括SR-IOV网卡,该目的服务器中运行有虚拟机管理器801和热迁移模块802,该服务器包括:该虚拟机管理器801,用于获取热迁移命令,该热迁移命令用于指示源服务器的第一虚拟机将将迁移至该目的服务器的第二虚拟机;该虚拟机管理器801,还用于接收该源服务器发送的该第一虚拟机对应的第一虚拟网卡的状态信息;该热迁移模块802,还用于根据该虚拟机管理器801的指示,将该状态信息恢复至该SR-IOV网卡。
该热迁移模块802具体用于:将该状态信息分别恢复至该SR-IOV网卡的基地址寄存器、微码和微处理器中。
该热迁移模块802具体用于:将该状态信息中的第一信息拷贝至该微处理器,该第一信息为从该源服务器的只读基地址寄存器中获取的信息,该微处理器用于将该第一信息恢复至该SR-IOV网卡的只读基地址寄存器。
该虚拟机管理器801还用于:通过该热迁移模块802分配该第二虚拟机对应的第二虚拟网卡的标识信息。
该虚拟机管理器801具体用于:接收该源服务器发送的第二信息,该第二信息为该第二虚拟机对应的第二虚拟网卡的第二任务队列的锁定状态信息,该第二虚拟网卡是基于该SR-IOV网卡虚拟出的,该第二任务队列用于放置为该第二虚拟机下发的任务;该热迁移模块802,还用于解锁该第二任务队列。
请参阅图9,为本申请实施例中一种通信设备的另一个实施例示意图。本实施例提供的通信设备为虚拟机热迁移的源服务器,本申请实施例中对其具体设备形态不做限定。
该源端通信设备900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器901和存储器902,该存储器902中存储有程序或数据。
其中,存储器902可以是易失性存储或非易失性存储。可选地,处理器901是一个或多个中央处理器(CPU,Central Processing Unit,该CPU可以是单核CPU,也可以是多核CPU。处理器901可以与存储器902通信,在源端通信设备900上执行存储器902中的一系列指令。
该源端通信设备900还包括物理网卡903,该物理网卡903为PCIE设备,即SR-IOV网卡。
可选地,尽管图9中未示出,源端通信设备900还可以包括一个或一个以上电源;一个或一个以上有线或无线网络接口,例如以太网接口;一个或一个以上输入输出接口,输入输出接口可以用于连接显示器、鼠标、键盘、触摸屏设备或传感设备等,输入输出接口为可选部件,可以存在也可以不存在,此处不做限定。
本实施例中源端通信设备900中的处理器901所执行的流程可以参考前述方法实施例中描述的方法流程,此处不加赘述。
请参阅图10,为本申请实施例中一种通信设备的另一个实施例示意图。本实施例提供的通信设备为虚拟机热迁移的目的服务器,本申请实施例中对其具体设备形态不做限定。
该目的端通信设备1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器1001和存储器1002,该存储器1002中存储有程序或数据。
其中,存储器1002可以是易失性存储或非易失性存储。可选地,处理器1001是一个或多个中央处理器(CPU,Central Processing Unit,该CPU可以是单核CPU,也可以是多核CPU。处理器1001可以与存储器1002通信,在目的端通信设备1000上执行存储器1002中的一系列指令。
该目的端通信设备1000还包括物理网卡1003,该物理网卡1003为PCIE设备,即SR-IOV网卡。
可选地,尽管图10中未示出,目的端通信设备1000还可以包括一个或一个以上电源;一个或一个以上有线或无线网络接口,例如以太网接口;一个或一个以上输入输出接口,输入输出接口可以用于连接显示器、鼠标、键盘、触摸屏设备或传感设备等,输入输出接口为可选部件,可以存在也可以不存在,此处不做限定。
本实施例中目的端通信设备1000中的处理器1001所执行的流程可以参考前述方法实施例中描述的方法流程,此处不加赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (15)

1.一种虚拟机热迁移方法,其特征在于,所述方法用于迁移第一虚拟机,所述第一虚拟机运行于源服务器,所述源服务器还运行虚拟机管理器、热迁移模块和所述第一虚拟机使用的第一虚拟网卡,所述第一虚拟网卡是基于单根输入/输出虚拟化SR-IOV网卡虚拟出的,所述热迁移模块包含于物理功能驱动中,所述方法包括:
所述虚拟机管理器向所述热迁移模块下发热迁移命令;
所述热迁移模块锁定所述第一虚拟网卡的第一任务队列,以使得所述第一任务队列无法接收新的任务,所述第一任务队列至少用于放置与所述第一虚拟网卡相关的任务;
所述热迁移模块根据所述热迁移命令和所述第一任务队列中的与所述第一虚拟网卡相关的任务,从所述SR-IOV网卡的基地址寄存器、微处理器或微码中拷贝所述第一虚拟网卡的状态信息至第一内存空间,所述第一内存空间不包括在给所述第一虚拟机分配的虚拟内存内;
所述虚拟机管理器向所述目的服务器发送所述第一虚拟网卡的状态信息以及所述第一虚拟机的内存数据。
2.根据权利要求1所述的方法,其特征在于,所述热迁移模块锁定所述第一虚拟网卡的第一任务队列之后,所述方法还包括:
所述第一虚拟机的第一虚拟功能驱动清空所述第一任务队列中所有已有的任务。
3.根据权利要求2所述的方法,其特征在于,所述虚拟机管理器向所述热迁移模块下发热迁移命令之后,所述方法还包括:
所述热迁移模块对所述内存数据进行迭代拷贝;
在剩余的所述内存数据可一次拷贝完成的情况下,所述第一虚拟功能驱动清空所述第一任务队列中所有已有的任务之后,所述虚拟机管理器挂起所述第一虚拟机;
所述热迁移模块执行最后一次内存数据拷贝。
4.一种虚拟机热迁移方法,其特征在于,所述方法用于迁移第一虚拟机到目的服务器,所述目的服务器运行虚拟机管理器和热迁移模块,所述热迁移模块包含于所述目的服务器的物理功能驱动中,所述方法包括:
所述虚拟机管理器获取热迁移命令,所述热迁移命令用于指示源服务器的所述第一虚拟机将迁移至所述目的服务器的第二虚拟机;
所述虚拟机管理器接收所述源服务器发送的所述第一虚拟机对应的第一虚拟网卡的状态信息,所述第一虚拟网卡的状态信息是所述源服务器的热迁移模块在锁定所述第一虚拟网卡的第一任务队列后,根据所述源服务器下发的热迁移命令和所述第一任务队列中的与所述第一虚拟网卡相关的任务,从所述源服务器的单根输入/输出虚拟化SR-IOV网卡的基地址寄存器、微处理器或微码中拷贝至第一内存空间的,所述第一内存空间不包括在给所述第一虚拟机分配的虚拟内存内;其中,所述被锁定的所述第一任务队列无法接收新的任务,所述第一任务队列至少用于放置与所述第一虚拟网卡相关的任务;
所述目的服务器的热迁移模块根据所述目的服务器的虚拟机管理器的指示,将所述第一虚拟网卡的状态信息恢复至所述目的服务器的SR-IOV网卡。
5.根据权利要求4所述的方法,其特征在于,所述目的服务器的热迁移模块根据所述目的服务器的虚拟机管理器的指示,将所述第一虚拟网卡的状态信息恢复至所述目的服务器的SR-IOV网卡包括:
所述目的服务器的热迁移模块将所述第一虚拟网卡的状态信息分别恢复至所述目的服务器的SR-IOV网卡的基地址寄存器、微码或微处理器中。
6.根据权利要求5所述的方法,其特征在于,所述目的服务器的热迁移模块将所述第一虚拟网卡的状态信息分别恢复至所述目的服务器的SR-IOV网卡的基地址寄存器、微码或微处理器中包括:
所述目的服务器的热迁移模块将所述第一虚拟网卡的状态信息中的第一信息拷贝至所述微处理器,所述第一信息为从所述源服务器的只读基地址寄存器中获取的信息,所述微处理器用于将所述第一信息恢复至所述目的服务器的SR-IOV网卡的只读基地址寄存器。
7.根据权利要求4至6中任一项所述的方法,其特征在于,所述虚拟机管理器接收所述源服务器发送的所述第一虚拟机对应的第一虚拟网卡的状态信息之前,所述方法还包括:
所述目的服务器的虚拟机管理器通过所述目的服务器的热迁移模块分配所述第二虚拟机对应的第二虚拟网卡的标识信息。
8.根据权利要求4至6中任一项所述的方法,其特征在于,所述虚拟机管理器接收所述源服务器发送的所述第一虚拟机对应的第一虚拟网卡的状态信息包括:
所述目的服务器的虚拟机管理器接收所述源服务器发送的第二信息,所述第二信息为所述第二虚拟机对应的第二虚拟网卡的第二任务队列的锁定状态信息,所述第二虚拟网卡是基于所述目的服务器的SR-IOV网卡虚拟出的,所述第二任务队列用于放置为所述第二虚拟机下发的任务;
所述方法还包括:所述热迁移模块解锁所述第二任务队列。
9.一种通信设备,其特征在于,所述通信设备为运行有第一虚拟机的源服务器,所述源服务器还运行虚拟机管理器、热迁移模块和所述第一虚拟机使用的第一虚拟网卡,所述第一虚拟网卡是基于单根输入/输出虚拟化SR-IOV网卡虚拟出的,所述热迁移模块包含于物理功能驱动中,所述通信设备包括:
所述虚拟机管理器,用于向所述热迁移模块下发热迁移命令;
所述热迁移模块,用于锁定所述第一虚拟网卡的第一任务队列,以使得所述第一任务队列无法接收新的任务,所述第一任务队列至少用于放置与所述第一虚拟网卡相关的任务;
所述热迁移模块,还用于根据所述热迁移命令和所述第一任务队列中的与所述第一虚拟网卡相关的任务,从所述SR-IOV网卡的基地址寄存器、微处理器或微码中拷贝所述第一虚拟网卡的状态信息至第一内存空间,所述第一内存空间不包括在给所述第一虚拟机分配的虚拟内存内;
所述虚拟机管理器,还用于向目的服务器发送所述第一虚拟网卡的状态信息以及所述第一虚拟机的内存数据。
10.根据权利要求9所述的通信设备,其特征在于,所述通信设备还包括:
所述第一虚拟机的第一虚拟功能驱动,用于清空所述第一任务队列中所有已有的任务。
11.根据权利要求10所述的通信设备,其特征在于,所述热迁移模块还用于:
对所述内存数据进行迭代拷贝;
在剩余的所述内存数据可一次拷贝完成的情况下,所述第一虚拟功能驱动清空所述第一任务队列中所有已有的任务之后,所述虚拟机管理器还用于,挂起所述第一虚拟机;
所述热迁移模块,还用于执行最后一次内存数据拷贝。
12.一种虚拟机迁移系统,其特征在于,包括:第一虚拟机、虚拟机管理器、热迁移模块和所述第一虚拟机使用的第一虚拟网卡,所述第一虚拟网卡是基于单根输入/输出虚拟化SR-IOV网卡虚拟出的,所述热迁移模块包含于物理功能驱动中;其中,
所述虚拟机管理器,用于向所述热迁移模块下发热迁移命令;
所述热迁移模块,用于锁定所述第一虚拟网卡的第一任务队列,以使得所述第一任务队列无法接收新的任务,所述第一任务队列至少用于放置与所述第一虚拟网卡相关的任务;
所述热迁移模块,还用于根据所述热迁移命令和所述第一任务队列中的与所述第一虚拟网卡相关的任务,从所述SR-IOV网卡的基地址寄存器、微处理器或微码中拷贝所述第一虚拟网卡的状态信息至第一内存空间,所述第一内存空间不包括在给所述第一虚拟机分配的虚拟内存内;
所述虚拟机管理器,用于基于所述第一虚拟网卡的状态信息以及所述第一虚拟机的内存数据迁移所述第一虚拟机。
13.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机上运行时,使得计算机执行如权利要求1至8中任一项所述的方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序代码,当所述计算机程序代码在计算机设备上运行时,使得所述计算机设备执行如权利要求1-8中任一项所述的方法。
15.一种虚拟机热迁移系统,包括源服务器和目的服务器,所述源服务器用于执行上述权利要求1-3中任一项所述的方法,所述目的服务器用于执行上述权利要求4至8中任一项所述的方法。
CN202410278156.XA 2019-07-31 虚拟机热迁移方法和通信设备 Pending CN118312284A (zh)

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201910704642.2A Division CN112306650B (zh) 2019-07-31 2019-07-31 虚拟机热迁移方法和通信设备

Publications (1)

Publication Number Publication Date
CN118312284A true CN118312284A (zh) 2024-07-09

Family

ID=

Similar Documents

Publication Publication Date Title
CN112306650B (zh) 虚拟机热迁移方法和通信设备
JP5427574B2 (ja) 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム
EP2577450B1 (en) Virtual machine migration techniques
US8954963B2 (en) Method and apparatus for resetting a physical I/O adapter without stopping a guest OS running on a virtual machine
US7484029B2 (en) Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters
JP5305866B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびコンピュータ・プログラムならびにデータ処理システム
US8307363B2 (en) Virtual machine system, restarting method of virtual machine and system
JP4921384B2 (ja) メモリを1台のバーチャル・マシンからもう一方へダイナミックに再割り当てする方法、装置及びシステム
JP6458146B2 (ja) 計算機及びメモリ領域管理方法
KR20100081322A (ko) 안전한 애플리케이션 파티셔닝 활성화를 위한 방법
EP3701373B1 (en) Virtualization operations for directly assigned devices
US10318329B2 (en) Driver switch for live migration with an assigned device
US20130046911A1 (en) Storage control apparatus
US20190121745A1 (en) Remapping virtual devices for virtual machines
WO2013104245A1 (zh) 一种虚拟机死锁后的恢复方法、装置及系统
CN118312284A (zh) 虚拟机热迁移方法和通信设备
CN102622245A (zh) 一种sun4v架构下的虚拟机自动启动控制方法
US10417034B2 (en) Gradual creation process of server virtual machines
CN114115703A (zh) 裸金属服务器在线迁移方法以及系统
US9785519B1 (en) Driver switch for device error recovery for assigned devices
US10152341B2 (en) Hyper-threading based host-guest communication
US20220391254A1 (en) Information processing device, operation control method, and computer-readable recording medium storing operation control program
US20220357976A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium storing information processing program
WO2022041839A1 (zh) 裸金属服务器在线迁移方法以及系统
CN114327741A (zh) 服务器系统、容器设置方法及装置

Legal Events

Date Code Title Description
PB01 Publication