CN103942087A - 虚拟机热迁移方法及相关装置和集群系统 - Google Patents
虚拟机热迁移方法及相关装置和集群系统 Download PDFInfo
- Publication number
- CN103942087A CN103942087A CN201410127186.7A CN201410127186A CN103942087A CN 103942087 A CN103942087 A CN 103942087A CN 201410127186 A CN201410127186 A CN 201410127186A CN 103942087 A CN103942087 A CN 103942087A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- host
- machine frame
- frame page
- physical
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了虚拟机热迁移方法及相关装置和集群系统。上述方法包括:接收表征源虚拟机的内存空间结构的内存存储空间信息;依据内存存储空间信息申请目的虚拟机的内存空间,目的虚拟机的内存空间与源虚拟机的内存空间结构相同;确定目的虚拟机的内存空间中的每一虚拟机帧页页号对应的宿主机虚拟地址与同一虚拟机帧页页号对应的宿主机物理地址之间的映射关系;向目的物理主机上的远程直接数据存取RDMA网卡注册宿主机虚拟地址与宿主机物理地址之间的映射关系;接收源物理主机发送的、当前待传输的虚拟机帧页页号;向目的物理主机上的RDMA网卡提交当前待传输的虚拟机帧页页号对应的宿主机虚拟地址。
Description
技术领域
本发明涉及通信技术领域,具体涉及虚拟机热迁移方法及相关装置和集群系统。
背景技术
在热迁移过程中,可基于RDMA(Remote Direct Memory Access,远程直接数据存取)技术将源虚拟机(待迁移的虚拟机)的内存数据从源物理主机发送到目的物理主机。
实际上,虚拟机对应的内存的虚拟机帧页号(guest frame number,gfn)与宿主机虚拟地址(hva)相映射,此外,hva又与hpa(host physical address,宿主机物理地址)相映射。
基于RDMA技术将源虚拟机的内存数据从源物理主机发送到目的物理主机所采用的方式是循环迭代发送:
首次迭代时,源物理主机和目的物理主机分别向RDMA网卡注册hva与hpa的映射关系,注册完成后,使用RDMA技术将所有虚拟机帧页中的内存数据发送到目的物理主机;从第二次迭代发送开始,将上一次迭代过程中源虚拟机中所有被修改的gfn的内存数据发送到目的物理主机。迭代发送一直进行到满足迭代停止条件(如:被修改虚拟机帧页的数量小于预先设定的值等)才停止。
然而,在实施本发明创造的过程中,发明人发现,从第二次迭代发送过程至最后一次迭代发送过程中,每次迭代发送之前,源物理主机都需为被修改的gfn重新分配hva(hpa是不变的),由于重新分配了hva,需向自身的RDMA网卡重新注册新分配的hva与hpa之间的映射关系,此外,源物理主机还要通知目的物理主机源虚拟机中所有被修改的gfn;目的物理主机也将为上述被修改的gfn重新分配hva(hpa是不变的)。并向自身的RDMA网卡注册新分配的hva与hpa之间的映射关系。举例来讲,在第一次迭代发送过程中gfn1、gfn2、gfn3发生了修改,则在第二次迭代发送之前,源、目的物理主机将分别为gfn1、gfn2、gfn3分配新hva,并注册新分配的hva与hpa之间的映射关系。之后,假定在第二次迭代发送过程中gfn1、gfn5、gfn7发生了修改,则在第三次迭代发送之前,源、目的物理主机将分别为gfn1、gfn5、gfn7分配新hva,并注册新分配的hva与hpa之间的映射关系。则对于gfn1而言,其在反复迭代发送过程中会存在重复注册的现象,导致虚拟机热迁移的效率低下。
发明内容
本发明实施例的目的在于提供虚拟机热迁移方法及相关装置和集群系统,以提高虚拟机热迁移的效率。
本发明实施例提供如下技术方案:
根据本发明实施例的第一方面,提供一种虚拟机热迁移方法,其包括:
接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
接收源物理主机发送的、当前待传输的虚拟机帧页页号;
向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
结合第一方面,在第一种可能的实现方式中,所述内存存储空间信息包括虚拟机帧页页号信息以及虚拟机帧页属性信息;所述虚拟机帧页页号信息用于表征所述源虚拟机的内存空间大小,所述虚拟机帧页属性信息用于表征所述源虚拟机的内存空间中虚拟机帧页的连续有效性;所述依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同,包括:依据所述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请所述目的虚拟机的内存空间;其中,所述目的虚拟机的内存空间的大小与所述源虚拟机的内存空间的大小相同;所述目的虚拟机的内存空间中虚拟机帧页的连续有效性与所述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
结合第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述向所述目的物理主机上的RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系,包括:将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中;所述向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中包括:以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
结合第一方面第一种可能的实现方式,或者第一方面第二种可能的实现方式,或者第一方面第三种可能的实现方式,在第四种可能的实现方式中,所述虚拟机帧页页号信息包括虚拟机帧页页号gfn数组;所述虚拟机帧页属性信息包括gfn属性数组;所述gfn属性数组中的元素与所述gfn数组中的虚拟机帧页页号一一对应,所述gfn属性数组中的元素的不同取值用于表示相应的虚拟机帧页是否有效;所述源虚拟机的内存空间中虚拟机帧页的连续有效性是通过如下方式来确定的:当所述gfn数组中的虚拟机帧页页号相连续而gfn属性数组中与相连续的虚拟机帧页页号对应的元素的取值均表示虚拟机帧页有效时,确定所述源虚拟机的内存空间中与所述相连续的虚拟机帧页页号对应虚拟机帧页具有连续有效性。
根据本发明实施例的第二方面,提供一种虚拟机热迁移方法,包括:
获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
结合第二方面,在第一种可能的实现方式中,所述向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系包括:将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,包括:以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
根据本发明实施例的第三方面,提供一种宿主机,包括:
内存存储空间信息接收单元,用于接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
申请单元,用于依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
映射关系确定单元,用于确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
映射关系注册单元,用于向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
虚拟机帧页页号接收单元,用于接收源物理主机发送的、当前待传输的虚拟机帧页页号;
提交单元,用于向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
结合第三方面,在第一种可能的实现方式中,所述内存存储空间信息包括虚拟机帧页页号信息以及虚拟机帧页属性信息;所述虚拟机帧页页号信息用于表征所述源虚拟机的内存空间大小,所述虚拟机帧页属性信息用于表征所述源虚拟机的内存空间中虚拟机帧页的连续有效性;所述申请单元具体用于依据所述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请所述目的虚拟机的内存空间,其中,所述目的虚拟机的内存空间的大小与所述源虚拟机的内存空间的大小相同;所述目的虚拟机的内存空间中虚拟机帧页的连续有效性与所述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
结合第三方面或第三方面第一种可能的实现方式,在第二种可能的实现方式中,在向远程直接数据存取RDMA网卡注册所述虚拟地址与所述物理地址之间的映射关系的方面,所述映射关系注册单元具体用于:将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
结合第三方面第二种可能的实现方式,在第三种可能的实现方式中,属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中;在向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中的方面,所述提交单元具体用于:以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
根据本发明实施例的第四方面,提供一种宿主机,包括:
获取单元,用于获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定单元,用于确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
注册单元,用于向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
宿主机虚拟地址提交单元,用于向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
结合第四方面,在第一种可能的实现方式中,在向所述源物理主机上的远程直接数据存取RDMA网卡注册所述主机虚拟地址与所述主机物理地址之间的映射关系的方面,所述注册单元用于:将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
结合第四方面第一种可能的实现方式,在第二种可能的实现方式中,在向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据在第一次迭代发送之前注册的所述映射关系,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包的方面,所述宿主机虚拟地址提交单元具体用于:以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
根据本发明实施例的第五方面,提供一种物理主机,包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM;所述硬件层包括远程直接内存读取RDMA网卡;所述至少一个虚拟机包括目的虚拟机和特权虚拟机,其中,
所述Host用于:
接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
接收源物理主机发送的、当前待传输的虚拟机帧页页号;
向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
结合第五方面,在第一种可能的实现方式中,所述内存存储空间信息包括虚拟机帧页页号信息以及虚拟机帧页属性信息;所述虚拟机帧页页号信息用于表征所述源虚拟机的内存空间大小,所述虚拟机帧页属性信息用于表征所述源虚拟机的内存空间中虚拟机帧页的连续有效性;在所述依据所述内存存储空间信息申请目的虚拟机的内存空间的方面,所述Host用于:依据所述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请所述目的虚拟机的内存空间;其中,所述目的虚拟机的内存空间的大小与所述源虚拟机的内存空间的大小相同;所述目的虚拟机的内存空间中虚拟机帧页的连续有效性与所述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
结合第五方面或第五方面第一种可能的实现方式,在第二种可能的实现方式中,在向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述虚拟地址与所述物理地址之间的映射关系的方面,所述Host用于:将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
结合第五方面第二种可能的实现方式,在第三种可能的实现方式中,属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中;在所述向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中的方面,所述Host用于:以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
根据本发明实施例的第六方面,提供一种物理主机,硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM;所述硬件层包括远程直接内存读取RDMA网卡;所述至少一个虚拟机包括源虚拟机和特权虚拟机,其中,
所述Host用于:
获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
结合第六方面,在第一种可能的实现方式中,在向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系的方面,所述Host用于:将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
结合第六方面第一种可能的实现方式,在第二种可能的实现方式中,在向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据在第一次迭代发送之前注册的所述映射关系,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包的方面,所述Host用于:以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
根据本发明实施例的第七方面,提供一种集群系统,包括:多台物理主机,所述多台物理主机包括如第五方面至第五方面第三种可能的实现方式任一项所述的目的物理主机,以及如第六方面至第六方面第二种可能的实现方式任一项所述的源物理主机,其中每台物理主机包括硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,以及所述硬件层包括RDMA网卡。
可见,在本发明实施例中,在反复迭代发送之前,为目的虚拟机一次性分配了与源虚拟机的内存空间结构一样的内存空间,并一次性注册了虚拟机帧页对应的主机虚拟地址与主机物理地址之间的映射关系,在反复迭代发送过程中,源、目的物理主机不再为发生修改的虚拟机帧页重新分配主机虚拟地址,而是始终采用第一次迭代发送前注册的映射关系进行RDMA数据传输。而由于在迭代发送过程中,源、目的物理主机不再为发生修改的虚拟机帧页重新分配主机虚拟地址,则也就不需要在每次迭代发送之前注册主机虚拟地址与主机物理地址之间的映射关系,从而避免针对同一虚拟机帧页进行重复注册的现象的发生,提高了虚拟机热迁移的效率,进而降低了处理器等资源消耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的集群系统示例图;
图2为本发明实施例提供的集群系统应用场景示例图;
图3为本发明实施例提供的虚拟机热迁移方法流程图;
图4为本发明实施例提供的源端映射表以及目的端映射表示意图;
图5为本发明实施例提供的虚拟机热迁移方法另一流程图;
图6为本发明实施例提供的源端与目的端的交互流程流程图;
图7为本发明实施例提供的宿主机示例图;
图8为本发明实施例提供的宿主机另一示例图;
图9为本发明实施例提供的物理主机示例图;
图10为本发明实施例提供的物理主机另一示例图;
图11为本发明实施例提供的物理主机又一示例图;
图12为本发明实施例提供的物理主机又一示例图;
图13为本发明实施例提供的集群系统示例图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个术语:
虚拟机VM:通过虚拟机软件可以在一台物理主机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层:虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某物理主机的硬件层可包括处理器(例如CPU)和内存,还可以包括网卡(例如RDMA网卡)、存储器等等高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。
宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);此外,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器(如VCPU)、虚拟内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。
特权虚拟机:一种特殊的虚拟机,亦可称为驱动域,例如这种特殊的虚拟机在Xen Hypervisor平台上被称作Dom0,在该虚拟机中安装了例如网卡、SCSI磁盘等真实物理设备的驱动程序,能检测和直接访问这些真实物理设备。其他虚拟机利用Hypervisor提供的相应机制通过特权虚拟机访问真实物理设备。
本发明实施例的虚拟机内存数据的迁移方法可以应用于集群系统(请参见图1),该集群系统包含多台物理主机,其中,每台物理主机包括硬件层、运行在该硬件层之上的宿主机(Host)、以及运行在该Host之上的至少一个虚拟机VM。
上述硬件层包括RDMA网卡,处理器和内存。
虚拟机热迁移的基本原理是:在不影响用户业务或用户不感知的情况下,将运行的虚拟机从源物理主机迁移到目的物理主机。
请参见图2,为本发明实施例设定的一种集群系统的应用场景,包括两台物理主机100和200,物理主机100和200可通过专用光缆300、支持RDMA协议的交换机等进行RDMA数据的传输。
两台物理主机100和200的硬件层分别包含RDMA网卡13、23,处理器12、22,内存11、21,其中,内存11、内存21可以为共享内存,RDMA网卡13、23可以为无线宽带(InfiniBand)卡或以太网(RDMAover Converged Ethernet,简称RoCE)卡等,物理主机100和200的硬件层上分别运行有Host17、27,其中,Host17由VMM14和VMM14上运行的特权虚拟机15结合组成,Host27由VMM24和VMM24上运行的特权虚拟机25结合组成,VMM14、24上分别运行有至少一个虚拟机16、26,虚拟机16、26为特权虚拟机(15、25)之外的其他虚拟机。特权虚拟机15、25上分别加载了RDMA网卡13、23对应的网卡驱动。
专用光缆300用于连接两台物理主机上的RDMA网卡,专用光缆300可以为四通道SFP接口(Quad Small Form-factor Pluggable,简称QSPF),也可以为其它型号的光缆,本发明实施例对此不进行限制。
上述共享存储可以为存储网络(Storage Area Network,简称SAN),也可以为小型计算机系统接口(Internet Small Computer SystemInterface,简称iSCSI)或网络连接式存储(Network Attached Storage,简称NAS),本发明实施例对此不进行限制。
应理解,本发明实施例可以应用于xen虚拟机平台中,也可以应用于任意一个结合RDMA技术迁移虚拟机时需要进行RDMA注册的虚拟化平台中;本发明实施例对此不进行限制。
虚拟机热迁移的基本原理是:在不影响用户业务或用户不感知的情况下,将运行的虚拟机从源物理主机迁移到目的物理主机。
基于图1和图2,虚拟机热迁移的具体场景为将物理主机100(源物理主机)上的虚拟机16(可称为源虚拟机或待迁移虚拟机)迁移到物理主机200(目的物理主机)上的虚拟机26运行。
源物理主机(物理主机100)上的特权虚拟机15可以直接访问硬件。虚拟机16(待迁移虚拟机)不能直接访问硬件,需要经过特权虚拟机15代理访问硬件。
目的物理主机(物理主机200)上的特权虚拟机25亦可直接访问硬件。目的虚拟机(虚拟机26)也不能直接访问硬件,需要经过特权虚拟机25代理访问硬件。
下面将结合图1和图2来详细说明本发明技术方案。
以一个虚拟机帧页号(gfn1)为例,Host1和Host2都需要向各自的RDMA网卡注册。注册的内容,可以是hva与hpa的映射关系。
举例来讲,假定首次迭代前,在源物理主机一侧,gfn1与hva1相映射,hva1又与宿主机物理地址(hpa)x00004000相映射。
而在目的物理主机侧,gfn1与hva100相映射,hva100又与宿主机物理地址x00001000相映射。
Host1将向RDMA网卡13注册hva1与x00004000的映射关系;而Host2则向RDMA网卡23注册hva100与x00001000。
在首次迭代前,Host1会通知(通过TCP技术)Host2要发送的内存数据对应的虚拟机帧页号,也即gfn1。
在首次迭代时,假定Host1向RDMA网卡13提交了与gfn1对应的宿主机虚拟地址(也即hva1),则RDMA网卡13从相应的x00004000处将内存数据取出来,向RDMA网卡23发送RDMA数据包,该RDMA数据包中包含x00004000中的内存数据。
RDMA网卡23在接收到RDMA数据包后,根据已注册的映射关系和Host2提交的hva100,直接将该RDMA数据携带的内存数据存储至x00001000(也即hva100对应的宿主机物理地址)。这样,就实现了gfn1对应的内存数据的迁移。
在现有技术中,在第m次迭代发送过程(m大于1)中,假定,gfn1被修改了,则Host1需要通知Host2被修改的虚拟机帧页号(也即gfn1)。可通过TCP(Transmission Control Protocol,传输控制协议)技术将被修改的虚拟机帧页号传输给Host2。
Host2则为gfn1重新分配宿主机虚拟地址,假定重新分配的宿主机虚拟地址为hva103。
重新分配宿主机虚拟地址,可以将零散的宿主机物理地址映射为连续的宿主机虚拟地址,方便RDMA传输。因为在RDMA技术中,规定连续的宿主机虚拟地址才可放在同一RDMA数据包中传输。
但由于重新分配了宿主机虚拟地址,Host2需要向RDMA网卡23注册hva103与x00001000之间的映射关系。之后,在第m+1次迭代发送过程中,RDMA网卡23在接收到RDMA数据包后,才可将内存数据直接存储至x00001000。
可见,采用有注册方式,对于gfn1而言,其在反复迭代发送过程中会存在重复注册的现象,导致虚拟机热迁移的效率低下。
为避免重复注册,请参见图3,由目的物理主机(更具体的是Host2)执行的虚拟机热迁移方法至少可包括如下步骤:
S1、接收表征源物理主机中的源虚拟机内存空间结构的内存存储空间信息。
上述内存存储空间信息是源物理主机发送的。
S2、依据上述内存存储空间信息申请与上述源虚拟机的内存空间结构相同的目的虚拟机的内存空间。
也即,令目的虚拟机的内存空间结构与上述源虚拟机的内存空间结构相同。
这为后续第m次迭代之前不再重新分配宿主机虚拟地址提供了前提。
而在现有方式中,是不为目的虚拟机分配与源虚拟机的内存空间结构一样的内存空间的。
申请内存空间后,目的虚拟机的内存空间中的每一虚拟机帧页页号对应一个宿主机物理地址。
假定内存空间中有1000个虚拟机帧页,即相应的有1000个宿主机物理地址与之对应。
S3、确定上述目的虚拟机的内存空间中的虚拟机帧页页号(gfn)对应的宿主机虚拟地址(hpa)与该gfn对应的宿主机物理地址(hva)之间的映射关系。
具体的,在申请内存空间后,可为每一gfn分配hva。
假定内存空间中有1000个gfn,即相应的分配1000个hva与之对应。这1000个hva与1000个hpa即存在映射关系。
分配完成后,hva与hpa之间的映射关系就确定下来了。
S4、向安装在目的物理主机上的RDMA网卡注册上述宿主机物理地址(hpa)与宿主机虚拟地址(hva)之间的映射关系。
需要注意的是,注册hpa与hva之间的映射关系是在第一次迭代之前完成的。
映射关系也可视为映射表。也即,在步骤S4中,目的物理主机中的宿主机将向RDMA网卡23注册目的虚拟机的内存空间中的hva与hpa之间的映射表。并且,请参见图4所示的源端映射表以及目的端映射表,gfn是一一对应相同的。
S5、接收源物理主机发送的、当前待传输的虚拟机帧页页号;
在任一次迭代发送之前,源物理主机(中的宿主机)都会通过RDMA技术或TCP技术向目的物理主机(中的宿主机)发送当前待传输的虚拟机帧页页号。
之后,源物理主机(中的宿主机)会通过RDMA技术向目的物理主机上的RDMA网卡发送RDMA数据包(RDMA数据包中不包含虚拟机帧页页号)。
S6、向目的物理主机上的RDMA网卡提交当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便该RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的上述映射关系和提交的上述宿主机虚拟地址,将上述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
在本发明实施例中,在反复迭代发送之前,为目的虚拟机一次性分配了与源虚拟机的内存空间结构一样的内存空间,并一次性注册了虚拟机帧页对应的主机虚拟地址与主机物理地址之间的映射关系,在反复迭代发送过程中,源、目的物理主机不再为发生修改的虚拟机帧页重新分配主机虚拟地址,而是始终采用第一次迭代发送前注册的映射关系进行RDMA数据包传输。而由于在迭代发送过程中,源、目的物理主机不再为发生修改的虚拟机帧页重新分配主机虚拟地址,则也就不需要在每次迭代发送之前注册主机虚拟地址与主机物理地址之间的映射关系,从而避免针对同一虚拟机帧页进行重复注册的现象的发生,提高了虚拟机热迁移的效率,进而降低了处理器等资源消耗。
举例来讲,现有热迁移方式中,Host2维护着gfn与hva(下表一)之间的映射关系,RDMA网卡23维护hva与hpa之间的映射关系(下表二)。
如下表一
表1
表2
但现有热迁移方式中,Host2所维护的gfn与hva之间的映射关系是会发生变动的。变动后,二者关系可能如下表三所示:
表3
Host2维护的gfn与hva之间的映射关系发生变动后,Host2会重新进行RDMA注册,则RDMA网卡23维护hva与hpa之间的映射关系随之变化为如下表四所示:
表4
而在本发明实施例中,Host2同样维护着gfn与hva之间的映射关系,RDMA网卡23同样维护hva与hpa之间的映射关系。假定在第一次迭代之前,Host2维护gfn与hva之间的映射关系如上表一所示,RDMA网卡23维护hva与hpa之间的映射关系如上表二所示。
与现有热迁移方式不同的是,本发明实施例从第一次迭代至最后一次迭代,gfn与hva之间的映射关系始终如上表一所示,而hva与hpa之间的映射关系始终如上表二所示。这样,针对任一虚拟机帧号,在第二次至最后一次迭代,都不需要重新向RDMA网卡注册hva与hpa之间的映射关系。从而避免针对同一虚拟机帧页进行重复注册的现象的发生,提高了虚拟机热迁移的效率,进而降低了处理器等资源消耗。
与之相对应,请参见图5,由源物理主机(更具体的,是Host1)执行的虚拟机热迁移方法至少可包括如下步骤:
S1’:获取表征源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送。
其中,源虚拟机的内存空间中的每一虚拟机页页号对应一个宿主机物理地址。
上述内存存存储空间信息可通过TCP方式传输,或者,通过RDMA方式传输。
S2’:确定上述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址(hva)与该虚拟机帧页页号对应的宿主机物理地址(hpa)之间的映射关系。
更具体的,由于源虚拟机不能直接访问硬件,需要经过特权虚拟机代理访问硬件。所以,要将源虚拟机的内存空间中所有gfn与宿主机虚拟地址进行映射。或者说,要为源虚拟机的内存空间中所有gfn分配宿主机虚拟地址。这相当于为源虚拟机的内存空间中每一虚拟机帧页做了一个链接,这样,Host1可以读取所链接的虚拟机帧页。
将gfn与hva映射后,由于源虚拟机的内存空间中的每一虚拟机页页号对应一个宿主机物理地址,则可确定hva与hpa之间的映射关系。
S3’:向源物理主机上的RDMA网卡(也即RDMA卡13)注册hva与hpa之间的映射关系。
S4’:向RDMA网卡13提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于RDMA网卡13根据已注册的映射关系和提交的hva,从相应宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含上述内存数据的RDMA数据包,以及向上述目的物理主机发送源物理主机当前待传输的内存数据对应的虚拟机帧页页号。
其中,向目的物理主机发送的当前待传输的内存数据对应的虚拟机帧页页号用于目的物理主机确定相应的宿主机虚拟地址。
举例来讲,比如Host1向RDMA网卡13提交了gfn1对应的hva,则RDMA网卡13从该hva相应的hpa中取出内存数据并向RDMA网卡23传输包含该内存数据的RDMA数据包。
在发送RDMA数据包之前,Host1还会向目的物理主机发送gfn1,以便物理主机确定相应的宿主机虚拟地址。
在本发明其他实施例中,上述所有实施例中的内存信息可包括表征源虚拟机的内存空间大小的虚拟机帧页号信息,以及,表征虚拟机帧页号的连续有效性的虚拟机帧页属性信息。
需要说明的是,并非所有虚拟机帧页号都是连续有效的。有些虚拟机帧页可能是无效的。例如,gfn1-gfn10中,gfn5、gfn8是无效的。则gfn1-gfn10中存在空洞,也即:gfn1-gfn4是连续有效的,gfn6-gfn7是连续有效的,gfn9-gfn10是连续有效的。
相应的,上述步骤S2可包括:
依据上述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请目的虚拟机的内存空间;
其中,目的虚拟机的内存空间的大小与源虚拟机的内存空间的大小相同;目的虚拟机的内存空间中虚拟机帧页的连续有效性与源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
也即,内存空间结构具体可指,内存空间大小相同,以及,gfn的连续有效性相同。
举例来讲,假定源虚拟机的内存空间包含gfn1-gfn10,其中,gfn5、gfn8是无效的。则目的虚拟机的内存空间也包含gfn1-gfn10,并且,gfn5、gfn8也是无效的。
更具体的,上述虚拟机帧页页号信息可包括gfn数组,而虚拟机帧页属性信息可包括gfn属性数组。
gfn数组中包含源虚拟机内存空间的所有虚拟机帧页页号,而一个虚拟机帧页所占用的存储空间是一定的,因此,知道了所有虚拟机帧页的页号,也就可获知源虚拟机内存空间的大小。
gfn属性数组中的元素与gfn数组中的虚拟机帧页页号一一对应,gfn属性数组中的元素的不同取值用于表示相应的虚拟机帧页是否有效。
比如gfn数组为{1,2,3,4,5,6,7,8,9,10},gfn属性数组为{1110011011}。在本实施例中,以1表示有效,0表示无效。也即,gfn1、gfn2、gfn3、gfn6、gfn7、gfn9、gfn10有效,而gfn4、gfn5、gfn8无效。
而源虚拟机的内存空间中虚拟机帧页的连续有效性(或目的虚拟机的内存空间中虚拟机帧页的连续有效性)是通过如下方式来确定的:
当gfn数组中的虚拟机帧页页号相连续而gfn属性数组中与相连续的虚拟机帧页页号对应的元素的取值均表示虚拟机帧页有效时,确定源虚拟机的内存空间中与上述相连续的虚拟机帧页页号对应虚拟机帧页具有连续有效性。
比如gfn数组为{1,2,3,4,5,6,7,8,9,10},gfn属性数组为{1110011011}。gfn1-gfn3相连续并且其在gfn属性数组中对应的元素的取值均为1(也即均表示虚拟机帧页有效),则可确定gfn1-gfn3连续有效,同理,可确定gfn6-gfn7连续有效,gfn9-gfn10连续有效。
相应的,在申请目的虚拟机的内存空间时,宿主机将依据gfn数组申请大小与源虚拟机相同的内存空间,并且,依据gfn属性数组设置申请到的内存空间的连续有效性。
仍沿用前例,Host2在接收到上述gfn数组和gfn属性数组后,将申请包含10个虚拟机帧页的内存空间,申请到的内存空间的虚拟机帧页号亦分别为{1,2,3,4,5,6,7,8,9,10},并且,Host2根据gfn属性数组{1110011011},将页号为1、2、3、6、7、9、10的虚拟机帧页设置成有效,而将页号为4、5、8的虚拟机帧页设置成无效。
相应的,在本发明其他实施例中,上述所有实施例中的Host1或Host2在注册hva与hpa之间的映射关系时,可以只注册有效的虚拟机帧页对应的hpa与hva之间的映射关系。例如,假定,共有10个虚拟机帧页分别为gfn1-10,其中,gfn8、9无效,则注册gfn1-7以及gfn10各自对应的hpa与hva之间的映射关系。
此外,在首次迭代发送之前,Host1或Host2向各自RDMA卡提交当前待传输的虚拟机帧页页号对应的宿主机虚拟地址时,可提交有效的虚拟机帧页对应的hva。
更具体的,在本发明其他实施例中,上述所有实施例中的步骤S4可包括:
步骤41:将目的虚拟机的内存空间中连续虚拟机帧页划归为同一虚拟机帧页集;
仍沿用前例,假定gfn数组为{1,2,3,4,5,6,7,8,9,10},gfn属性数组为{1110011011},则可划分为三个虚拟机帧页集:(1,2,3),(6,7),(9,10)。
步骤42:以虚拟机帧页集为单位,注册每一虚拟机帧页集中各虚拟机帧页页号对应的hva与hpa之间的映射关系。
假定在目的物理主机一侧,gfn1-gfn10分别与hva11-hva20相映射,hva11-hva20又分别与hpa1-hpa10相映射。
再假定,gfn数组为{1,2,3,4,5,6,7,8,9,10},gfn属性数组为{1110011011},gfn可划分为三个虚拟机帧页集:(1,2,3),(6,7),(9,10),则分别注册每一虚拟机帧页集中所有虚拟机帧页号对应的hva与hpa之间的映射关系。
对于虚拟机帧页集(1,2,3),则注册hva11与hpa1、hva12与hpa2、hva13与hpa3之间的映射关系。
对于虚拟机帧页集(6,7),则注册hva16与hpa6、hva17与hpa7之间的映射关系。
对于虚拟机帧页集(9,10),则注册hva19与hpa9、hva20与hpa10之间的映射关系。
与之相类似,在本发明其他实施例中,上述所有实施例中的步骤S3’中“注册hva与hpa之间的映射关系”可包括:
步骤31’:将源虚拟机的内存空间中连续的虚拟机帧页划归为同一虚拟机帧页集;
沿用前例,假定源虚拟机的所有虚拟机帧页的页号分别为1、2、3、4、5、6、7、8、9、10,其对应的连续性为1110011011,则可划分为三个虚拟机帧页集:(1,2,3),(6,7),(9,10)。
步骤32’:以虚拟机帧页集为单位,注册每一虚拟机帧页集中各虚拟机帧页对应的hva与hpa之间的映射关系。
假定在源主机侧,gfn1-gfn10,分别与hva41-hva50相映射,hva41-hva50又分别与hpa52-hpa61相映射。
再假定,gfn数组为{1,2,3,4,5,6,7,8,9,10},gfn属性数组为{1110011011},则gfn可划分为三个虚拟机帧页集:(1,2,3),(6,7),(9,10),则分别注册每一虚拟机帧页集中各虚拟机帧页号对应的hva与hpa之间的映射关系。
对于虚拟机帧页集(1,2,3),则注册hva41与hpa52、hva42与hpa53、hva43与hpa54之间的映射关系。
对于虚拟机帧页集(6,7),则注册hva46与hpa57、hva47与hpa58之间的映射关系。
对于虚拟机帧页集(9,10),则注册hva49与hpa60、hva50与hpa61之间的映射关系。
需要说明的是,发明人发现一种注册方式为:逐个注册hva与hpa的映射关系。也即,假定有1000个gfn,则需要注册1000次hva与hpa的映射关系。
而根据本发明实施例所提供的注册方式,可将这1000个gfn划分为虚拟机帧页集。假定其可划分为10个虚拟机帧页集,则可只注册10次,因此可减少注册次数。
在本发明其他实施例中,上述所有实施例中步骤S6可具体包括:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
与之相对应,源物理主机中的宿主机Host1在向RDMA网卡13提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址时,也以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
也即,属于同一虚拟机帧页集并且连续有效的当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中。
需要说明的是,第一次迭代发送过程中,会将所有连续有效的gfn对应的内存数据发过去。则源虚拟机内存中所有连续有效的虚拟机帧页页号都是当前待传输的虚拟机帧页页号,因此,在以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组提交hva,实际上就是按虚拟机帧页集提交hva。
而源物理主机中的RDMA网卡在发送RDMA数据包中,也是将同一虚拟机帧页集中各虚拟机帧页页号对应的内存数据放在同一RDMA数据包中传输。
例如,gfn数组为{1,2,3,4,5,6,7,8,9,10},gfn属性数组为{1110011011},gfn可划分为三个虚拟机帧页集:(1,2,3),(6,7),(9,10)。则在第一次迭代前,Host1和Host2将分别注册这三个集中hva与hpa的关系。在第一次迭代过程中,RDMA网卡13对应这三个集将发三个RDMA数据包。仍沿用前例,对于虚拟机帧页集(1,2,3),Host1向RDMA网卡13网卡提交(1,2,3)对应的hva,也即提交hva41、hva42、hva43。
RDMA网卡13中已注册了hva41与hpa52、hva42与hpa53、hva43与hpa54之间的映射关系。则RDMA网卡13网卡向RDMA网卡23传输的其中一个RDMA数据包中将包含hpa52、hpa53和hpa54的内存数据。
而其他次迭代发送则不然。
举例来讲,假定有三个虚拟机帧页集,集1包括gfn1-10,集2包括gfn14-19,集3包括gfn21-39。在某次迭代发送过程中,假设gfn2-6发生了修改,gfn9-10发生了修改,gfn16-19发生了修改,gfn38-39发生了修改。Host1会通知Host2这些页号修改了。
则Host2就会以gfn2-6为一组,以gfn9-10为一组,以gfn16-19为一组,以gfn38-39为一组向RDMA网卡23提交虚拟地址。
同理,Host1也会以gfn2-6为一组,以gfn9-10为一组,以gfn16-19为一组,以gfn38-39为一组向RDMA网卡13提交虚拟地址。
Host1在发RDMA数据包时,也会以组发数据包,第一个数据包包含gfn2-6的内存数据,第二个数据包包含gfn9-10的内存数据;第三个数据包包含gfn16-19的内存数据,第四个数据包包含gfn38-39。
在传输时,会保证RDMA数据包按顺序到达,也即第一个RDMA数据包先到,第二、三个RDMA数据包随后,第四个RDMA数据包最后到达。RDMA网卡23按照从第一至第四数据包的顺序,依次将各数据包中的内存数据存至相应的宿主机物理地址即可。
需要说明的是,被修改的虚拟机帧页需要属于同一虚拟机帧页集,并且连续有效,才可放在同一RDMA数据包中。如果是虚拟机帧页集(1,2,3)中的gfn1、gfn3被修改了。由于gfn1和gfn3是不连续,因此,需要用两个RDMA数据包传输其内存数据。
在本发明其他实施例中,在其他迭代发送过程,Host1可向RDMA网卡13分别提交各个被修改的虚拟机帧页对应的hva。也即,有N个虚拟机帧页被修改,就分别提交这N个虚拟机帧页的hva,RDMA网卡13再向RDMA网卡23分别发送N个RDMA数据包。
下面,将以源端(包含RDMA网卡13)与目的端(包含RDMA网卡23)交互的形式,对本发明上述实施例所提供的技术方案进行更详细的介绍。源端与目的端的交互流程如下(图6):
(1):目的端接受源端的热迁移(vmotion)请求,建立TCP连接。源端向目的端发送配置数据。
其中,配置数据可包括源虚拟机的镜像地址,网卡信息、硬件设备信息等。
(2):源端一次性映射(map)源虚拟机的所有内存,获得gfn数组和gfn属性数组。
(3):源端将gfn数组及其对应的gfn属性数组通过TCP连接发送到目的端,并被其接收。
(4):源端完成源虚拟机的全部内存到宿主机虚拟地址的映射,获得源虚拟机内存空间中的gfn与hva的映射关系(也即构建gfn与hva的映射表),以及hva与hpa之间的映射关系。
(5):目的端根据gfn数组及其对应的gfn属性数组,一次性申请目的端虚拟机的所有内存,并一次性map所有内存。
在本步骤中,一次性map所有内存的目的是将目的端虚拟机内存中的gfn与hva相映射,获得目的端虚拟机gfn与hva的映射关系,以及目的端虚拟机hva与hpa的映射关系。
(6):目的端构建目的虚拟机中gfn与hva的映射表。
(7):源端以gfn是否有效且连续为条件划分虚拟机帧页集,并将其进行RDMA注册(注册hva与hpa的映射关系)。
如何注册请参见本文前述记载,在此不作赘述。
(8):目的端以gfn是否有效且连续为条件划分虚拟机帧页集,并将其进行RDMA注册(注册hva与hpa的映射关系)。
如何注册请参见本文前述记载,在此不作赘述。
(9):在第一次迭代过程中,源端以虚拟机帧页集为单位利用RDMA技术顺序发送内存数据。
具体的,可查询gfn与hva的映射表,向RDMA网卡13提交与gfn相应的hva,再由RDMA网卡13从相应hpa中提取相应内存数据并发送。
具体内容请参见本文前述记载,在此不作赘述。
在发送内存数据之前,源端会通知目的端当前要传输的gfn。相应细节请参见本文前述介绍。在此不作赘述。
(10):在第N(N>1)次迭代过程中,获取N-1次迭代过程中被修改的虚拟机帧页号。
(11):以属于同一虚拟机帧页集并且连续的被修改虚拟机帧页为单位(也即为一组)发送内存数据。
在第N次迭代前,源端会通知目的端被修改的gfn。Host2会查询gfn与hva的映射表,向RDMA网卡23提交与被修改的gfn相应的hva。RDMA网卡23接收到RDMA数据包时,将其中的内存数据存储至相应hpa中。具体内容请参见本文前述记载,在此不作赘述。
(12):迭代完成后,源端销毁源虚拟机。
(13):目的端恢复虚拟机运行,热迁移完成。
在本发明其他实施例中,也可去掉TCP网络连接,将用TCP传输的数据改为使用RDMA技术传输。
与上述方法相对应,本发明实施例还要求保护宿主机。该宿主机可运行在源物理主机的硬件层。
上述宿主机可以包括特权虚拟机、源虚拟机和VMM。
参见图7,该宿主机700还可包括:
内存存储空间信息接收单元701,用于接收表征源虚拟机内存空间结构的内存存储空间信息。
申请单元702,用于依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同。
映射关系确定单元703,用于确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
映射关系注册单元704,用于向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
虚拟机帧页页号接收单元705,用于接收源物理主机发送的、当前待传输的虚拟机帧页页号。
提交单元706,用于向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
具体内容请参见本文前述方法部分的描述,在此不作赘述。
在本发明其他实施例中,在上述所有实施例中的内存存储空间信息可包括虚拟机帧页页号信息以及虚拟机帧页属性信息。
其中,上述虚拟机帧页页号信息用于表征上述源虚拟机的内存空间大小,上述虚拟机帧页属性信息用于表征上述源虚拟机的内存空间中虚拟机帧页的连续有效性。
而申请单元702具体用于,依据上述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请上述目的虚拟机的内存空间。
其中,上述目的虚拟机的内存空间的大小与上述源虚拟机的内存空间的大小相同;上述目的虚拟机的内存空间中虚拟机帧页的连续有效性与上述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
具体内容请参见本文前述方法部分的描述,在此不作赘述。
在本发明其他实施例中,在向所述目的物理主机上的RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系的方面,上述所有实施例中的映射关系注册单元704具体用于:
将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
具体内容请参见本文前述方法部分的描述,在此不作赘述。
在本发明其他实施例中,属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中。
相应的,上述所有实施例中的提交单元705可具体用于,以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
具体内容请参见本文前述方法部分的描述,在此不作赘述。
本发明实施例还要求保护另一种宿主机。该宿主机可运行在源物理主机的硬件层。
上述宿主机可以包括特权虚拟机、源虚拟机和VMM。
参见图8,该宿主机800还可包括:
获取单元801,用于获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定单元802,用于确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
注册单元803,用于向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
宿主机虚拟地址提交单元804,用于向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
具体内容请参见本文前述方法部分的描述,在此不作赘述。
在本发明其他实施例中,在向远程直接数据存取RDMA网卡注册上述宿主机虚拟地址与上述宿主机物理地址之间的映射关系的方面,上述所有实施例中的注册单元803用于:
将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
具体内容请参见本文前述方法部分的描述,在此不作赘述。
在本发明其他实施例中,在向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据在第一次迭代发送之前注册的所述映射关系,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包的方面,上述所有实施例中的宿主机虚拟地址提交单元804具体用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
具体内容请参见本文前述方法部分的描述,在此不作赘述。
本发明实施例提供一种物理主机90,参见图9,该物理主机90包括硬件,其中该硬件可以包括RDMA网卡901。
可选的,上述硬件还可以包括至少一个处理器902、存储器903,用于进行该物理主机90内部各设备之间的连接的至少一个通信总线904,以实现各设备之间的连接和相互通信。
其中,通信总线904可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。该总线904可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器903可以包括随机存取存储器,并向处理器902提供指令和数据。
处理器902可以是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
RDMA网卡901可以为支持RDMA功能的各种网卡,例如,可以为无线宽带(InfiniBand)卡或以太网(RDMA over Converged Ethernet,简称RoCE)卡等。
其中,通过读取存储器903存储的指令,处理器902用于,
接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
接收源物理主机发送的、当前待传输的虚拟机帧页页号;
向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
进一步的,在本发明其他实施例中,上述所有实施例中的内存存储空间信息可包括虚拟机帧页页号信息以及虚拟机帧页属性信息。
上述虚拟机帧页页号信息用于表征上述源虚拟机的内存空间大小,上述虚拟机帧页属性信息用于表征上述源虚拟机的内存空间中虚拟机帧页的连续有效性。
相应的,在依据上述内存存储空间信息申请目的虚拟机的内存空间的方面,上述处理器902具体用于:
依据上述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请上述目的虚拟机的内存空间;
其中,上述目的虚拟机的内存空间的大小与上述源虚拟机的内存空间的大小相同;上述目的虚拟机的内存空间中虚拟机帧页的连续有效性与上述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
在本发明其他实施例中,在向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述虚拟地址与所述物理地址之间的映射关系的方面,上述所有实施例中的处理器902可具体用于:
将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
在本发明其他实施例中,属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中。
在所述向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中的方面,上述所有实施例中的处理器902可用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
本发明实施例提供另一种物理主机100(目的物理主机),请参见图10,该物理主机100包含硬件层、运行在上述硬件层之上的Host1001、以及运行在所述Host1001之上的至少一个虚拟机VM1002。
上述硬件层包括RDMA网卡1003,可选的,还可以包括处理器1004和内存1005;其中,Host可以包括该物理主机100上的VMM和运行于该VMM上的特权虚拟机,虚拟机1002为该物理主机100上除特权虚拟机之外的其他虚拟机,虚拟机1002包括目的虚拟机。
其中,Host1001用于,
接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
接收源物理主机发送的、当前待传输的虚拟机帧页页号;
向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
进一步的,在本发明其他实施例中,上述所有实施例中的内存存储空间信息可包括虚拟机帧页页号信息以及虚拟机帧页属性信息。
上述虚拟机帧页页号信息用于表征上述源虚拟机的内存空间大小,上述虚拟机帧页属性信息用于表征上述源虚拟机的内存空间中虚拟机帧页的连续有效性。
相应的,在依据上述内存存储空间信息申请目的虚拟机的内存空间的方面,上述Host1001具体用于:
依据上述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请上述目的虚拟机的内存空间;
其中,上述目的虚拟机的内存空间的大小与上述源虚拟机的内存空间的大小相同;上述目的虚拟机的内存空间中虚拟机帧页的连续有效性与上述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
在本发明其他实施例中,在向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述虚拟地址与所述物理地址之间的映射关系的方面,上述所有实施例中的Host1001可具体用于:
将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
进一步的,属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中;
在本发明其他实施例中,上述所有实施例中的Host1001还可用于:
在所述向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中的方面,所述Host用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
本发明实施例提供另一种物理主机110(源物理主机),参见图11,该物理主机110包括硬件,其中该硬件可以包括RDMA网卡1101。
可选的,上述硬件还可以包括至少一个处理器1102、存储器1103,用于进行该物理主机110内部各设备之间的连接的至少一个通信总线1104,以实现各设备之间的连接和相互通信。
其中,通信总线1104可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。该总线1104可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1103可以包括随机存取存储器,并向处理器1102提供指令和数据。
处理器1102可以是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
RDMA网卡1101可以为支持RDMA功能的各种网卡,例如,可以为无线宽带(InfiniBand)卡或以太网(RDMA over Converged Ethernet,简称RoCE)卡等。
其中,通过读取存储器1103存储的指令,处理器1102用于,
获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
在本发明其他实施例中,在向远程直接数据存取RDMA网卡注册上述宿主机虚拟地址与上述宿主机物理地址之间的映射关系的方面,上述所有实施例中的处理器1102可具体用于:
将上述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
在本发明其他实施例中,在向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据在第一次迭代发送之前注册的所述映射关系,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包的方面,上述所有实施例中的处理器1102用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
本发明实施例提供另一种物理主机120(源物理主机),请参见图12,该物理主机120包含硬件层、运行在上述硬件层之上的Host1201、以及运行在所述Host1201之上的至少一个虚拟机VM1202。
上述硬件层包括RDMA网卡1203,可选的,还可以包括处理器1204和内存1205;其中,Host可以包括该物理主机120上的VMM和运行于该VMM上的特权虚拟机,虚拟机1202为该物理主机120上除特权虚拟机之外的其他虚拟机,虚拟机1202包括源虚拟机。
其中,Host1201用于,
获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
在本发明其他实施例中,在向远程直接数据存取RDMA网卡注册上述宿主机虚拟地址与上述宿主机物理地址之间的映射关系的方面,上述所有实施例中的Host1201可具体用于:
将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
在本发明其他实施例中,在向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据在第一次迭代发送之前注册的所述映射关系,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包的方面,上述所有实施例中的Host1201用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
相关细节请参见本文前述介绍,在此不作赘述。
本发明实施例提供一种集群系统,参见图13,该集群系统包括:多台物理主机,所述多台物理主机包括源物理主机和目的物理主机,其中每台物理主机包括硬件层、运行在所述硬件层之上的Host、以及运行在所述Host之上的至少一个虚拟机VM,以及所述硬件层包括RDMA网卡,可选的,还可以包括处理器和内存。其中,Host可以包括Host所在的物理主机上的VMM和运行于该VMM上的特权虚拟机。
本发明实施例的集群系统中包括的物理主机参考前述实施例介绍的物理主机,在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (23)
1.一种虚拟机热迁移方法,其特征在于,包括:
接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
接收源物理主机发送的、当前待传输的虚拟机帧页页号;
向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
2.如权利要求1所述的方法,其特征在于,
所述内存存储空间信息包括虚拟机帧页页号信息以及虚拟机帧页属性信息;所述虚拟机帧页页号信息用于表征所述源虚拟机的内存空间大小,所述虚拟机帧页属性信息用于表征所述源虚拟机的内存空间中虚拟机帧页的连续有效性;
所述依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同,包括:
依据所述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请所述目的虚拟机的内存空间;
其中,所述目的虚拟机的内存空间的大小与所述源虚拟机的内存空间的大小相同;所述目的虚拟机的内存空间中虚拟机帧页的连续有效性与所述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
3.如权利要求1或2所述的方法,其特征在于,所述向所述目的物理主机上的RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系,包括:
将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
4.如权利要求3所述的方法,其特征在于,
属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中;
所述向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中包括:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
5.如权利要求2-4任一项所述的方法,其特征在于,
所述虚拟机帧页页号信息包括虚拟机帧页页号gfn数组;
所述虚拟机帧页属性信息包括gfn属性数组;
所述gfn属性数组中的元素与所述gfn数组中的虚拟机帧页页号一一对应,所述gfn属性数组中的元素的不同取值用于表示相应的虚拟机帧页是否有效;
所述源虚拟机的内存空间中虚拟机帧页的连续有效性是通过如下方式来确定的:
当所述gfn数组中的虚拟机帧页页号相连续而gfn属性数组中与相连续的虚拟机帧页页号对应的元素的取值均表示虚拟机帧页有效时,确定所述源虚拟机的内存空间中与所述相连续的虚拟机帧页页号对应虚拟机帧页具有连续有效性。
6.一种虚拟机热迁移方法,其特征在于,包括:
获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
7.如权利要求6所述的方法,其特征在于,所述向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系包括:
将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
8.如权利要求7所述的方法,其特征在于,所述向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,包括:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
9.一种宿主机,其特征在于,包括:
内存存储空间信息接收单元,用于接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
申请单元,用于依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
映射关系确定单元,用于确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
映射关系注册单元,用于向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
虚拟机帧页页号接收单元,用于接收源物理主机发送的、当前待传输的虚拟机帧页页号;
提交单元,用于向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
10.如权利要求9所述的宿主机,其特征在于,
所述内存存储空间信息包括虚拟机帧页页号信息以及虚拟机帧页属性信息;所述虚拟机帧页页号信息用于表征所述源虚拟机的内存空间大小,所述虚拟机帧页属性信息用于表征所述源虚拟机的内存空间中虚拟机帧页的连续有效性;
在依据所述内存存储空间信息申请目的虚拟机的内存空间的方面,所述申请单元具体用于:
依据所述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请所述目的虚拟机的内存空间;其中,所述目的虚拟机的内存空间的大小与所述源虚拟机的内存空间的大小相同;所述目的虚拟机的内存空间中虚拟机帧页的连续有效性与所述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
11.如权利要求9或10所述的宿主机,其特征在于,在向所述目的物理主机上的RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系的方面,所述映射关系注册单元具体用于:
将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
12.如权利要求11所述的宿主机,其特征在于,属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中;
在向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中的方面,所述提交单元具体用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
13.一种宿主机,其特征在于,包括:
获取单元,用于获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定单元,用于确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
注册单元,用于向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
宿主机虚拟地址提交单元,用于向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
14.如权利要求13所述的宿主机,其特征在于,在向所述源物理主机上的远程直接数据存取RDMA网卡注册所述主机虚拟地址与所述主机物理地址之间的映射关系的方面,所述注册单元用于:
将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
15.如权利要求14所述的宿主机,其特征在于,在向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据在第一次迭代发送之前注册的所述映射关系,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包的方面,所述宿主机虚拟地址提交单元具体用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
16.一种物理主机,其特征在于,包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM;所述硬件层包括远程直接内存读取RDMA网卡;所述至少一个虚拟机包括目的虚拟机和特权虚拟机,其中,
所述Host用于:
接收表征源物理主机中的源虚拟机的内存空间结构的内存存储空间信息;
依据所述内存存储空间信息申请目的虚拟机的内存空间,所述目的虚拟机的内存空间与所述源虚拟机的内存空间结构相同;
确定所述目的虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
接收源物理主机发送的、当前待传输的虚拟机帧页页号;
向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
17.如权利要求16所述的物理主机,其特征在于,
所述内存存储空间信息包括虚拟机帧页页号信息以及虚拟机帧页属性信息;所述虚拟机帧页页号信息用于表征所述源虚拟机的内存空间大小,所述虚拟机帧页属性信息用于表征所述源虚拟机的内存空间中虚拟机帧页的连续有效性;
在所述依据所述内存存储空间信息申请目的虚拟机的内存空间的方面,所述Host用于:
依据所述源虚拟机的虚拟机帧页页号信息以及虚拟机帧页属性信息申请所述目的虚拟机的内存空间;
其中,所述目的虚拟机的内存空间的大小与所述源虚拟机的内存空间的大小相同;所述目的虚拟机的内存空间中虚拟机帧页的连续有效性与所述源虚拟机的内存空间中虚拟机帧页的连续有效性相同。
18.如权利要求16或17所述的物理主机,其特征在于,
在向所述目的物理主机上的远程直接数据存取RDMA网卡注册所述虚拟地址与所述物理地址之间的映射关系的方面,所述Host用于:
将所述目的虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系。
19.如权利要求18所述的物理主机,其特征在于,
属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据包含在同一RDMA数据包中;
在所述向所述目的物理主机上的RDMA网卡提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到来自源物理主机发来的、包含源虚拟机的内存数据的RDMA数据包后,依据注册的所述映射关系和提交的所述宿主机虚拟地址,将所述内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中的方面,所述Host用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便所述RDMA网卡在接收到相应RDMA数据包后,依据注册的所述映射关系和按组提交的、所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,将所述RDMA数据包中的内存数据存储至与所述宿主机虚拟地址对应的所述宿主机物理地址中。
20.一种物理主机,其特征在于,包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM;所述硬件层包括远程直接内存读取RDMA网卡;所述至少一个虚拟机包括源虚拟机和特权虚拟机,其中,
所述Host用于:
获取表征源物理主机上的源虚拟机内存空间结构的内存存储空间信息并向目的物理主机发送所述内存存储空间信息;
确定所述源虚拟机的内存空间中的虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的宿主机物理地址之间的映射关系;
向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系;
向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的所述宿主机虚拟地址,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包,以及向所述目的物理主机发送源虚拟机当前待传输的内存数据对应的虚拟机帧页页号,其中所述向所述目的物理主机发送的所述当前待传输的内存数据对应的虚拟机帧页页号用于所述目的物理主机确定相应的宿主机虚拟地址。
21.如权利要求20所述的物理主机,其特征在于,在向所述源物理主机上的远程直接数据存取RDMA网卡注册所述宿主机虚拟地址与所述宿主机物理地址之间的映射关系的方面,所述Host用于:
将所述源虚拟机的内存空间中连续有效的虚拟机帧页划归为同一虚拟机帧页集;
以虚拟机帧页集为单位,向所述RDMA网卡注册每一虚拟机帧页集中虚拟机帧页页号对应的宿主机虚拟地址与所述虚拟机帧页页号对应的所述宿主机物理地址之间的映射关系。
22.如权利要求21所述的物理主机,其特征在于,在向所述源物理主机上的RDMA网卡提交源虚拟机当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据在第一次迭代发送之前注册的所述映射关系,从与所述宿主机虚拟地址对应的宿主机物理地址中取出源虚拟机当前待传输的内存数据,并向目的物理主机传输包含所述内存数据的RDMA数据包的方面,所述Host用于:
以属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址为一组,向所述RDMA网卡按组提交所述当前待传输的虚拟机帧页页号对应的宿主机虚拟地址,以便于所述RDMA网卡根据注册的所述映射关系和提交的宿主机虚拟地址,从与所述提交的宿主机虚拟地址对应的宿主机物理地址中取出属于同一虚拟机帧页集并且连续有效的所述当前待传输的虚拟机帧页页号对应的内存数据,并放在同一RDMA数据包中向目的物理主机传输。
23.一种集群系统,其特征在于,包括:多台物理主机,所述多台物理主机包括如权利要求16-19任一项所述的目的物理主机,以及如权利要求20-22任一项所述的源物理主机,其中每台物理主机包括硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,以及所述硬件层包括RDMA网卡。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410127186.7A CN103942087B (zh) | 2014-03-31 | 2014-03-31 | 虚拟机热迁移方法及相关装置和集群系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410127186.7A CN103942087B (zh) | 2014-03-31 | 2014-03-31 | 虚拟机热迁移方法及相关装置和集群系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103942087A true CN103942087A (zh) | 2014-07-23 |
CN103942087B CN103942087B (zh) | 2017-11-17 |
Family
ID=51189763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410127186.7A Active CN103942087B (zh) | 2014-03-31 | 2014-03-31 | 虚拟机热迁移方法及相关装置和集群系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103942087B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104410681A (zh) * | 2014-11-21 | 2015-03-11 | 上海交通大学 | 基于远程直接内存访问的虚拟机动态迁移优化方法 |
CN105472681A (zh) * | 2014-09-03 | 2016-04-06 | 上海贝尔股份有限公司 | 虚拟基站动态迁移方法和设备 |
WO2016119469A1 (zh) * | 2015-01-27 | 2016-08-04 | 华为技术有限公司 | 业务上下文管理方法、物理主机、pcie设备及迁移管理设备 |
WO2016119618A1 (zh) * | 2015-01-27 | 2016-08-04 | 华为技术有限公司 | 一种远端内存分配方法、装置和系统 |
WO2016119468A1 (zh) * | 2015-01-27 | 2016-08-04 | 华为技术有限公司 | 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备 |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
CN106354543A (zh) * | 2016-08-11 | 2017-01-25 | 上海交通大学 | 一种基于虚拟机和宿主机内存地址转换的numa内存迁页方法 |
CN107168769A (zh) * | 2017-03-30 | 2017-09-15 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
US10055381B2 (en) | 2015-03-13 | 2018-08-21 | International Business Machines Corporation | Controller and method for migrating RDMA memory mappings of a virtual machine |
CN109426547A (zh) * | 2017-09-04 | 2019-03-05 | 华为技术有限公司 | 一种虚拟机的热迁移方法、装置和系统 |
CN109918172A (zh) * | 2019-02-26 | 2019-06-21 | 烽火通信科技股份有限公司 | 一种虚拟机热迁移方法及系统 |
WO2020177567A1 (zh) * | 2019-03-05 | 2020-09-10 | 华为技术有限公司 | 一种迁移数据的方法、装置及系统 |
WO2021129332A1 (zh) * | 2019-12-25 | 2021-07-01 | 中兴通讯股份有限公司 | 虚拟机部署及热迁移方法、vmm升级方法、服务器 |
CN113485756A (zh) * | 2021-06-30 | 2021-10-08 | 深圳市科力锐科技有限公司 | 硬件设备配置方法、装置、设备及存储介质 |
CN114844833A (zh) * | 2022-03-30 | 2022-08-02 | 阿里云计算有限公司 | 报文处理方法和系统,存储介质及计算机终端 |
WO2022218160A1 (zh) * | 2021-04-14 | 2022-10-20 | 华为技术有限公司 | 一种数据访问系统、方法、设备以及网卡 |
WO2023011254A1 (zh) * | 2021-08-02 | 2023-02-09 | 阿里云计算有限公司 | 基于远程直接数据存储的热迁移方法、装置及设备 |
CN116700899A (zh) * | 2023-06-14 | 2023-09-05 | 北京志凌海纳科技有限公司 | 一种虚拟机热迁移过程中Option ROM的兼容性解决方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681913A (zh) * | 2011-12-21 | 2012-09-19 | 中兴通讯股份有限公司 | 一种虚拟机到虚拟机热迁移的方法及装置 |
CN102821158A (zh) * | 2012-08-20 | 2012-12-12 | 广州杰赛科技股份有限公司 | 一种实现虚拟机迁移的方法和云系统 |
US20130086582A1 (en) * | 2011-10-04 | 2013-04-04 | International Business Machines Corporation | Network Adapter Hardware State Migration Discovery in a Stateful Environment |
CN103530167A (zh) * | 2013-09-30 | 2014-01-22 | 华为技术有限公司 | 一种虚拟机内存数据的迁移方法及相关装置和集群系统 |
CN103617070A (zh) * | 2013-11-27 | 2014-03-05 | 华为技术有限公司 | 虚拟机迁移方法及装置 |
-
2014
- 2014-03-31 CN CN201410127186.7A patent/CN103942087B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130086582A1 (en) * | 2011-10-04 | 2013-04-04 | International Business Machines Corporation | Network Adapter Hardware State Migration Discovery in a Stateful Environment |
CN102681913A (zh) * | 2011-12-21 | 2012-09-19 | 中兴通讯股份有限公司 | 一种虚拟机到虚拟机热迁移的方法及装置 |
CN102821158A (zh) * | 2012-08-20 | 2012-12-12 | 广州杰赛科技股份有限公司 | 一种实现虚拟机迁移的方法和云系统 |
CN103530167A (zh) * | 2013-09-30 | 2014-01-22 | 华为技术有限公司 | 一种虚拟机内存数据的迁移方法及相关装置和集群系统 |
CN103617070A (zh) * | 2013-11-27 | 2014-03-05 | 华为技术有限公司 | 虚拟机迁移方法及装置 |
Non-Patent Citations (1)
Title |
---|
WEI HUANG等: "《High Performance Virtual Machine Migration with RDMA over Modern Interconnects》", 《2007 IEEE INTERNATIONAL CONFERENCE ON CLUSTER COMPUTING》 * |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105472681A (zh) * | 2014-09-03 | 2016-04-06 | 上海贝尔股份有限公司 | 虚拟基站动态迁移方法和设备 |
CN104410681B (zh) * | 2014-11-21 | 2017-08-01 | 上海交通大学 | 基于远程直接内存访问的虚拟机动态迁移优化方法 |
CN104410681A (zh) * | 2014-11-21 | 2015-03-11 | 上海交通大学 | 基于远程直接内存访问的虚拟机动态迁移优化方法 |
WO2016119469A1 (zh) * | 2015-01-27 | 2016-08-04 | 华为技术有限公司 | 业务上下文管理方法、物理主机、pcie设备及迁移管理设备 |
WO2016119618A1 (zh) * | 2015-01-27 | 2016-08-04 | 华为技术有限公司 | 一种远端内存分配方法、装置和系统 |
WO2016119468A1 (zh) * | 2015-01-27 | 2016-08-04 | 华为技术有限公司 | 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备 |
US10496427B2 (en) | 2015-01-27 | 2019-12-03 | Huawei Technologies Co., Ltd. | Method for managing memory of virtual machine, physical host, PCIE device and configuration method thereof, and migration management device |
US10055381B2 (en) | 2015-03-13 | 2018-08-21 | International Business Machines Corporation | Controller and method for migrating RDMA memory mappings of a virtual machine |
CN105975413B (zh) * | 2015-03-13 | 2019-03-01 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
CN106354543B (zh) * | 2016-08-11 | 2019-11-26 | 上海交通大学 | 一种基于虚拟机和宿主机内存地址转换的numa内存迁页方法 |
CN106354543A (zh) * | 2016-08-11 | 2017-01-25 | 上海交通大学 | 一种基于虚拟机和宿主机内存地址转换的numa内存迁页方法 |
CN107168769A (zh) * | 2017-03-30 | 2017-09-15 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN107168769B (zh) * | 2017-03-30 | 2020-12-18 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
WO2019042005A1 (zh) * | 2017-09-04 | 2019-03-07 | 华为技术有限公司 | 一种虚拟机的热迁移方法、装置和系统 |
CN109426547A (zh) * | 2017-09-04 | 2019-03-05 | 华为技术有限公司 | 一种虚拟机的热迁移方法、装置和系统 |
US11604670B2 (en) | 2017-09-04 | 2023-03-14 | Huawei Technologies Co., Ltd. | Virtual machine live migration method, apparatus, and system |
CN109918172A (zh) * | 2019-02-26 | 2019-06-21 | 烽火通信科技股份有限公司 | 一种虚拟机热迁移方法及系统 |
WO2020177567A1 (zh) * | 2019-03-05 | 2020-09-10 | 华为技术有限公司 | 一种迁移数据的方法、装置及系统 |
WO2021129332A1 (zh) * | 2019-12-25 | 2021-07-01 | 中兴通讯股份有限公司 | 虚拟机部署及热迁移方法、vmm升级方法、服务器 |
WO2022218160A1 (zh) * | 2021-04-14 | 2022-10-20 | 华为技术有限公司 | 一种数据访问系统、方法、设备以及网卡 |
CN113485756A (zh) * | 2021-06-30 | 2021-10-08 | 深圳市科力锐科技有限公司 | 硬件设备配置方法、装置、设备及存储介质 |
WO2023011254A1 (zh) * | 2021-08-02 | 2023-02-09 | 阿里云计算有限公司 | 基于远程直接数据存储的热迁移方法、装置及设备 |
CN114844833A (zh) * | 2022-03-30 | 2022-08-02 | 阿里云计算有限公司 | 报文处理方法和系统,存储介质及计算机终端 |
CN116700899A (zh) * | 2023-06-14 | 2023-09-05 | 北京志凌海纳科技有限公司 | 一种虚拟机热迁移过程中Option ROM的兼容性解决方法和系统 |
CN116700899B (zh) * | 2023-06-14 | 2023-11-14 | 北京志凌海纳科技有限公司 | 一种虚拟机热迁移过程中Option ROM的兼容性解决方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103942087B (zh) | 2017-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942087A (zh) | 虚拟机热迁移方法及相关装置和集群系统 | |
US11934341B2 (en) | Virtual RDMA switching for containerized | |
EP3706394B1 (en) | Writes to multiple memory destinations | |
US10936535B2 (en) | Providing remote, reliant and high performance PCI express device in cloud computing environments | |
EP3556081B1 (en) | Reconfigurable server | |
EP2879053B1 (en) | Virtual machine memory data migration method, related apparatus, and cluster system | |
US10824466B2 (en) | Container migration | |
CN106301859B (zh) | 一种管理网卡的方法、装置及系统 | |
US9354933B2 (en) | Remote direct memory access adapter state migration in a virtual environment | |
US9854036B2 (en) | Method for migrating memory data of virtual machine, and related apparatus and cluster system | |
US20140059160A1 (en) | Systems and methods for sharing devices in a virtualization environment | |
US11178063B2 (en) | Remote hardware acceleration | |
CN104636185B (zh) | 业务上下文管理方法、物理主机、pcie设备及迁移管理设备 | |
US11940933B2 (en) | Cross address-space bridging | |
US10657095B2 (en) | Virtualizing connection management for virtual remote direct memory access (RDMA) devices | |
US20180293065A1 (en) | Upgrade of port firmware and driver software for a target device | |
CN105556473A (zh) | 一种i/o任务处理的方法、设备和系统 | |
CN106598696A (zh) | 一种虚拟机之间数据交互的方法及装置 | |
US20170090965A1 (en) | Dirty Memory Tracking with Assigned Devices by Exitless Paravirtualization | |
KR101499668B1 (ko) | 가상 실행 환경에서 네트워크 프레임을 전달하기 위한 장치 및 방법 | |
US10541876B2 (en) | Inter-connecting logical control planes for state data exchange | |
US20230171189A1 (en) | Virtual network interfaces for managed layer-2 connectivity at computing service extension locations | |
KR102101602B1 (ko) | 트래픽 관리 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |