CN113051024A - 虚拟机热迁移方法、装置、电子设备及存储介质 - Google Patents
虚拟机热迁移方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113051024A CN113051024A CN201911368442.0A CN201911368442A CN113051024A CN 113051024 A CN113051024 A CN 113051024A CN 201911368442 A CN201911368442 A CN 201911368442A CN 113051024 A CN113051024 A CN 113051024A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- memory page
- memory
- machine
- data
- 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
- 238000013508 migration Methods 0.000 title claims abstract description 227
- 230000005012 migration Effects 0.000 title claims abstract description 227
- 238000000034 method Methods 0.000 title claims abstract description 121
- 230000015654 memory Effects 0.000 claims abstract description 661
- 230000006835 compression Effects 0.000 claims description 30
- 238000007906 compression Methods 0.000 claims description 30
- 230000001133 acceleration Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 11
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
- 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/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开实施例公开了一种虚拟机热迁移方法、装置、电子设备及存储介质,所述方法在宿主机侧的硬件加速卡上执行,包括:获取当前待迁移的虚拟机内存页面地址;确定所述虚拟机内存页面地址是否命中本地缓存;其中,所述本地缓存用于存储已迁移至目的机的部分内存页面;在未命中本地缓存时,则通过FPGA从虚拟机的宿主机获取所述虚拟机内存页面地址对应的当前内存页面,并将所述当前内存页面发送至目的机。该技术方案通过消耗一定的内存记录最热内存页,对新增脏页进行差异编码的方式,减少实际需要传输的内存数据量,降低了使用FPGA等设备进行硬件辅助的难度和所需要的资源开销,提升了虚拟机热迁移单位时间内的脏页处理效率。
Description
技术领域
本公开涉及计算机技术领域,具体涉及一种虚拟机热迁移方法、装置、电子设备及存储介质。
背景技术
虚拟机热迁移是云计算运营中的一个关键技术,通过热迁移将虚拟机从一个物理机迁移到另外一个物理机,以实现计算资源的动态调度,物理故障主动运维。
虚拟机的热迁移是在保持虚拟机在源端也即虚拟机的宿主机正常运行的情况下,通过迭代的方式将虚拟机内存从源端拷贝到目的端,并在目的端重新恢复虚拟机正常运行的技术方案。由于此时源端的虚拟机一直在运行,运行就会意味着总会有内存被虚拟机不断的改写,因此其内存的拷贝需要通过多轮拷贝的方式,才能递归的将源端虚拟机内存拷贝到目的端。
发明内容
本公开实施例提供一种虚拟机迁移方法、装置、电子设备及计算机可读存储介质。
第一方面,本公开实施例中提供了一种虚拟机热迁移方法,所述虚拟机热迁移方法在宿主机侧的硬件加速卡上执行,包括:
获取当前待迁移的虚拟机内存页面地址;
确定所述虚拟机内存页面地址是否命中本地缓存;其中,所述本地缓存用于存储已迁移至目的机的部分内存页面;
在未命中本地缓存时,则通过FPGA从虚拟机的宿主机获取所述虚拟机内存页面地址对应的当前内存页面,并将所述当前内存页面发送至目的机。
进一步地,还包括:
根据预设的缓存更新策略确定是否利用所述当前内存页面替换所述本地缓存中已有的内存页面。
进一步地,确定所述虚拟机内存页面地址是否命中本地缓存中之后,所述方法还包括:
在命中本地缓存时,将所述虚拟内存页面地址发送给FPGA;
从所述FPGA接收压缩编码数据;其中,所述压缩编码数据包括所述虚拟机内存页面地址被所述本地缓存命中后,在所述宿主机的虚拟机内存中对应的当前内存页面相较于所述本地缓存中对应的原始内存页面的修改内容;
将所述压缩编码数据发送至所述目的机。
第二方面,本公开实施例中提供了一种虚拟机热迁移方法,所述虚拟机热迁移方法在宿主机侧的FPGA上执行,包括:
根据当前待迁移的虚拟机内存页面地址从硬件加速卡的本地缓存中获取对应的原始内存页面,以及从宿主机的虚拟机内存中获取对应的当前内存页面;
比较所述原始内存页面以及所述当前内存页面;
根据比较结果将所述当前内存页面相较于所述原始内存页面的修改内容通过所述硬件加速卡发送至目的机。
进一步地,根据比较结果将所述当前内存页面相较于所述原始内存页面的修改内容通过所述硬件加速卡发送至目的机,包括:
对所述原始内存页面和所述当前内存页面中的对应比特位进行异或操作;
根据所述异或操作的结果确定所述修改内容;
将所述修改内容进行压缩编码,并发送至所述硬件加速卡,以便由所述硬件加速卡发送至所述目的机。
进一步地,根据所述异或操作的结果确定所述修改内容,包括:
统计所述原始内存页面和所述当前内存页面中异或结果连续为0的第一字节数以及异或结果连续为非0的第二字节数;
依次记录所述第一字节数、第二字节数以及异或结果连续为非0对应的当前内存页面中的内容,得到所述修改内容。
进一步地,将所述修改内容进行压缩编码之后,还包括:
在压缩编码后的所述修改内容的长度超过所述当前内存页面的长度时,丢弃所述修改内容,并将所述当前内存页面发送至目的机。
进一步地,将所述修改内容进行压缩编码之后,还包括:
在压缩编码后的所述修改内容中封装头部信息;其中,所述头部信息包括所述当前内存页面在虚拟机内存中的位置信息、是否为压缩编码数据的标识和/或压缩编码数据的长度。
第三方面,本公开实施例中提供了一种虚拟机热迁移方法,所述虚拟机热迁移方法在目的机侧的FPGA上执行,包括:
从硬件加速卡获取从宿主机接收到的虚拟机内存迁移数据以及迁移至的虚拟机内存页面地址;
在所述虚拟机内存迁移数据为压缩编码数据时,从所述虚拟机内存迁移数据中获取修改内容以及存储位置;其中,所述修改内容为所述目的机的虚拟内存中所述虚拟机内存页面地址对应的已有内存页面在宿主机上被修改过的内容;
将所述修改内容拷贝到所述已有内存页面的所述存储位置处。
进一步地,还包括:
在所述虚拟机内存迁移数据为原始内存页面时,将所述虚拟机内存迁移数据中的原始内存页面拷贝至所述虚拟机内存页面地址。
进一步地,从所述虚拟机内存迁移数据中获取修改内容以及存储位置,包括:
从所述虚拟机内存迁移数据中获取顺序排列的多组数据;其中每组数据中包括顺序排列的第一字节数、第二字节数以及第二字节数个数据;
将所述修改内容拷贝到所述已有内存页面的所述存储位置处,包括:
从多组数据的第一组开始,针对每组数据,将所述第二字节数个数据拷贝至所述存储位置;其中,所述存储位置为前次拷贝地址加上所述第一字节数;
将所述前次拷贝地址确定为所述存储位置加上所述第二字节数。
第四方面,本公开实施例中提供了一种虚拟机热迁移方法,所述虚拟机热迁移方法在目的机侧的硬件加速卡上执行,包括:
从宿主机接收虚拟机内存迁移数据;
从所述虚拟机内存迁移数据的头部信息确定所述虚拟内存迁移数据迁移至的虚拟机内存页面地址;
将所述虚拟机内存迁移数据以及所述虚拟机内存页面地址发送至目的机侧的FPGA。
第五方面,本公开实施例中提供了一种虚拟机热迁移装置,所述虚拟机热迁移装置位于宿主机侧的硬件加速卡上,包括:
第一获取模块,被配置为获取当前待迁移的虚拟机内存页面地址;
第一确定模块,被配置为确定所述虚拟机内存页面地址是否命中本地缓存;其中,所述本地缓存用于存储已迁移至目的机的部分内存页面;
第一发送模块,被配置为在未命中本地缓存时,则通过FPGA从虚拟机的宿主机获取所述虚拟机内存页面地址对应的当前内存页面,并将所述当前内存页面发送至目的机。
进一步地,还包括:
第二确定模块,被配置为根据预设的缓存更新策略确定是否利用所述当前内存页面替换所述本地缓存中已有的内存页面。
进一步地,所述装置还包括:
第二发送模块,被配置为在命中本地缓存时,将所述虚拟内存页面地址发送给FPGA;
第一接收模块,被配置为从所述FPGA接收压缩编码数据;其中,所述压缩编码数据包括所述虚拟机内存页面地址被所述本地缓存命中后,在所述宿主机的虚拟机内存中对应的当前内存页面相较于所述本地缓存中对应的原始内存页面的修改内容;
第三发送模块,被配置为将所述压缩编码数据发送至所述目的机。
第六方面,本公开实施例中提供了一种虚拟机热迁移装置,所述虚拟机热迁移装置位于宿主机侧的FPGA上,包括:
第二获取模块,被配置为根据当前待迁移的虚拟机内存页面地址从硬件加速卡的本地缓存中获取对应的原始内存页面,以及从宿主机的虚拟机内存中获取对应的当前内存页面;
比较模块,被配置为比较所述原始内存页面以及所述当前内存页面;
第四发送模块,被配置为根据比较结果将所述当前内存页面相较于所述原始内存页面的修改内容通过所述硬件加速卡发送至目的机。
进一步地,所述第四发送模块,包括:
异或操作子模块,被配置为对所述原始内存页面和所述当前内存页面中的对应比特位进行异或操作;
第一确定子模块,被配置为根据所述异或操作的结果确定所述修改内容;
编码子模块,被配置为将所述修改内容进行压缩编码,并发送至所述硬件加速卡,以便由所述硬件加速卡发送至所述目的机。
进一步地,所述第一确定子模块,包括:
统计子模块,被配置为统计所述原始内存页面和所述当前内存页面中异或结果连续为0的第一字节数以及异或结果连续为非0的第二字节数;
记录子模块,被配置为依次记录所述第一字节数、第二字节数以及异或结果连续为非0对应的当前内存页面中的内容,得到所述修改内容。
进一步地,还包括:
第五发送模块,被配置为在压缩编码后的所述修改内容的长度超过所述当前内存页面的长度时,丢弃所述修改内容,并将所述当前内存页面发送至目的机。
进一步地,还包括:
头部封装模块,被配置为在压缩编码后的所述修改内容中封装头部信息;其中,所述头部信息包括所述当前内存页面在虚拟机内存中的位置信息、是否为压缩编码数据的标识和/或压缩编码数据的长度。
第七方面,本公开实施例中提供了一种虚拟机热迁移装置,所述虚拟机热迁移装置位于目的机侧的FPGA上,包括:
第二接收模块,被配置为从硬件加速卡获取从宿主机接收到的虚拟机内存迁移数据以及迁移至的虚拟机内存页面地址;
第三获取模块,被配置为在所述虚拟机内存迁移数据为压缩编码数据时,从所述虚拟机内存迁移数据中获取修改内容以及存储位置;其中,所述修改内容为所述目的机的虚拟内存中所述虚拟机内存页面地址对应的已有内存页面在宿主机上被修改过的内容;
第一拷贝模块,被配置为将所述修改内容拷贝到所述已有内存页面的所述存储位置处。
进一步地,还包括:
第二拷贝模块,被配置为在所述虚拟机内存迁移数据为原始内存页面时,将所述虚拟机内存迁移数据中的原始内存页面拷贝至所述虚拟机内存页面地址。
进一步地,所述第三获取模块,包括:
获取子模块,被配置为从所述虚拟机内存迁移数据中获取顺序排列的多组数据;其中每组数据中包括顺序排列的第一字节数、第二字节数以及第二字节数个数据;
所述第一拷贝模块,包括:
拷贝子模块,被配置为从多组数据的第一组开始,针对每组数据,将所述第二字节数个数据拷贝至所述存储位置;其中,所述存储位置为前次拷贝地址加上所述第一字节数;
第二确定子模块,被配置为将所述前次拷贝地址确定为所述存储位置加上所述第二字节数。
第八方面,本公开实施例中提供了一种虚拟机热迁移装置,所述虚拟机热迁移装置位于目的机侧的硬件加速卡上,包括:
第三接收模块,被配置为从宿主机接收虚拟机内存迁移数据;
第三确定模块,被配置为从所述虚拟机内存迁移数据的头部信息确定所述虚拟内存迁移数据迁移至的虚拟机内存页面地址;
第六发送模块,被配置为将所述虚拟机内存迁移数据以及所述虚拟机内存页面地址发送至目的机侧的FPGA。
所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,虚拟机热迁移装置装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持虚拟机热迁移装置装置执行上述第一方面或第四方面中所述方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述虚拟机热迁移装置装置还可以包括通信接口,用于虚拟机热迁移装置装置与其他设备或通信网络通信。
第九方面,本公开实施例中提供了一种虚拟机热迁移系统,包括:
宿主机,其上运行有待迁移的虚拟机;
硬件加速卡,其上执行第一方面所述的虚拟机热迁移方法;
FPGA,其上执行第二方面所述的虚拟机迁移方法。
第十方面,本公开实施例中提供了一种虚拟机热迁移系统,包括:
目的机,其上运行有被迁移过来的虚拟机;
硬件加速卡,其上执行第四方面所述的虚拟机热迁移方法;
FPGA,其上执行第三方面所述的虚拟机迁移方法。
第十一方面,本公开实施例提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现第一方面或第四方面所述的方法。
第十二方面,本公开实施例提供了一种计算机可读存储介质,用于存储企业账户的安全认证装置所用的计算机指令,其包含用于执行上述第一方面或第四方面所述方法所涉及的计算机指令。
本公开实施例提供的技术方案可以包括以下有益效果:
本公开实施例在虚拟机热迁移过程中,宿主机侧利用硬件加速卡中的缓存存储上一轮迁移过程中拷贝至目的机的部分内存页面,而在本轮迁移过程中,当前待迁移的虚拟机内存页面地址如果未被硬件加速卡上的本地缓存命中,则通过FPGA从宿主机的虚拟机内存中获取该虚拟机内存页面地址对应的当前内存页面,并将该当前内存页面直接发送至目的机;而如果被本地缓存命中,则由FPGA比较该虚拟机内存地址在宿主机的虚拟机内存中对应的当前内存页面和硬件加速卡的本地缓存中缓存的原始内存页面,并将有过修改的内容发送至目的机。通过这种方式,一方面如果当前待迁移的虚拟机内存页面地址被硬件加速卡的本地缓存命中,则可以只向目的机发送相较于上一轮迁移有变化的内容,而不是将整个内存页面发送至目的机,因此可以节省发送数据的数据量;而另一方面,内存页面的缓存以及接收和发送都是由硬件加速卡完成,因此可以减轻宿主机的负担,同时缓存的原始内存页面与宿主机中当前内存页面之间的比较是由FPGA来完成,而不需要宿主机上的CPU来完成。可见,本公开实施例通过消耗一定的内存记录最热内存页,并对新增脏页进行差异编码的方式,减少实际需要传输的内存数据量;并且使用差异编码的方法,对应的硬件逻辑简单,从而大大降低了使用FPGA等设备进行硬件辅助的难度和所需要的资源开销,在降低宿主机CPU资源开销的同时,极大的提升了虚拟机热迁移单位时间内的脏页处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
图1(a)-(b)示出根据本公开一实施方式的虚拟机热迁移在宿主机侧和目的机侧的系统架构示意图;
图2示出根据本公开一实施方式的虚拟机热迁移方法的流程图;
图3示出根据图2所示实施方式的命中本地缓存后执行逻辑的流程图;
图4示出根据本公开另一实施方式的虚拟机热迁移方法的流程图;
图5示出根据图4所示实施方式的步骤S403的流程图;
图6示出根据图5所示实施方式的步骤S502的流程图;
图7示出根据本公开又一实施方式的虚拟机热迁移方法的流程图;
图8示出根据本公开又一实施方式的虚拟机热迁移方法的流程图;
图9是适于用来实现根据本公开实施方式的虚拟机热迁移方法的电子设备的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
在虚拟机热迁移过程中,当虚拟机的内部业务压力较大,或者虚拟机对内存的更新非常频繁时,需要迭代拷贝的次数和传输的数据量也将增加。这给底层的物理网络带来了很大的压力,同时还增加了虚拟机的总体迁移时间和宕机时间。为了解决这一问题,通常采用压缩的方式来降低需要传输的数据量。通常压缩方式有两种,一种是标准的压缩算法压缩,一种是基于新旧内存的差异来进行增量传输。
无论是那种压缩方式,对宿主机的资源使用压力都非常大。以基于新旧内存的差异来进行增量传输为例,已有的差异编码实现方式介绍如下:
从原理上,该差异编码的实现方式的前提是程序运行的局部性原理,也就是说程序对内存的更新,通常是聚集在某个局部,并不是均匀的分散在整个内存空间的。而在进行脏页追踪的时候,一般都是采用4K的页面来处理的。根据局部性原理,一个页面可能只有几十个字节被修改,但是需要传输整个内存页面也就是4096个字节来达到更新目的端内存的目的。
并且为了计算出被更新的这几十个字节,首先需要通过宿主机的CPU计算来逐个比对上一轮拷贝的原始内存页面和宿主机的虚拟内存中的当前内存页面的差异,这个比对需要一一对比内存页面中的每个字节,然后再对结果进行编码,因此计算量非常大,对应的CPU开销也非常高。在实际的应用中,被迁移的虚拟机还在宿主机上继续运行,同时宿主机还可能运行有其它的虚拟机。如此大的计算量对宿主机的计算资源是一个冲击,可能会导致被迁移的虚拟机或者其他虚拟机的运行受损。
因此,本公开实施例提出采用硬件辅助的方式来缓解宿主机的计算压力。由于压缩算法的实现复杂度非常高,直接将压缩算法进行硬件辅助完成,需要的硬件开销(如:FPGA资源)也非常庞大。由于程序的执行符合局部性原理,因此本公开实施例通过消耗一定的内存记录最热内存页,并针对最热内存页面进行差异编码的方式,减少实际需要传输的内存数据量。此外,使用差异编码的方法,对应的硬件逻辑非常简单,从而大大降低了使用FPGA等设备进行硬件辅助的难度和所需要的资源开销,在降低宿主机CPU资源开销的同时,极大的提升了虚拟机热迁移单位时间的脏页处理效率。
图1(a)-(b)示出根据本公开一实施方式的虚拟机热迁移在宿主机侧和目的机侧的系统架构示意图。如图1(a)所示,宿主机101、硬件加速卡102和FPGA103协同完成将宿主机的虚拟内存中的虚拟机内存页面发送至目的机的过程;如图1(b)所示,目的机111、硬件加速卡112、FPGA113协同完成从宿主机接收被迁移的虚拟机内存页面,并拷贝至目的机的虚拟机内存的对应位置处的过程。
如图1(a)所示,在宿主机101上的热迁移线程负责虚拟机内存修改的dirty bit收集,其中dirty bit表明虚拟机当前修改了哪些虚拟机内存;根据收集到的dirty bit确定新增脏页的虚拟机内存页面地址,新增脏页可以理解为上一轮迁移完成至本轮迁移开始,被虚拟机修改过内容的内存页面,也就是说,本轮迁移过程中,仅针对被虚拟机修改过内容的新增脏页进行迁移。在确定了新增脏页的虚拟机内存页面地址后,将这些待迁移的虚拟机内存页面地址列表通过FPGA103的DMA通道,发送到硬件加速卡102上的热迁移线程。
硬件加速卡102通过FPGA103的DMA通道接收到虚拟机内存页面地址列表后,针对虚拟机内存页面地址列表中的每一个,查看硬件加速卡102的本地缓存(RAM Cache)1021中是否存储了当前待迁移的虚拟机内存页面地址对应的内存页面,也即判断当前待迁移的虚拟机内存页面是否被RAM Cache 1021中。RAM Cache 1021中存储的是之前迁移至目的机的一部分内存页面,并且该部分内存页面为热内存页面,也即经常被虚拟机所访问和/或修改的内存页面。在一些实施例中,硬件加速卡可以是宿主机上的一PCI设备,具有计算能力,并且能够执行代码。
如果当前待迁移的虚拟内存页面地址在RAM Cache 1021中没有命中,则通过FPGA103的DMA将宿主机101的虚拟机内存中对应的当前内存页面发送至目的机,也即通过两次DMA,即从宿主机101到FPGA 103和FPGA 103到硬件加速卡102,并通过硬件加速卡102上的热迁移线程发送至目的机。
如果当前待迁移的虚拟内存页面地址在RAM Cache 1021中被命中,则硬件加速卡102不做任何操作,而是由FPGA 103对当前待迁移的虚拟内存页面地址在RAM Cache 1021中对应的原始内存页面和宿主机101的虚拟内存中的当前内存页面进行差异编码后,将差异编码结果发送至目的机。
FPGA 103针对在硬件加速卡102的RAM Cache 1021中被命中的当前待迁移的虚拟内存页面地址,通过DMA的方式,分别从宿主机的虚拟机内存和硬件加速卡102的RAM Cache1021中读取关联的当前内存页面和原始内存页面,并比对当前内存页面和原始内存页面,确定两者之间的差异,也即确定当前内存页面相较于原始内存页面有变化的修改内容,并通过预设的编码方式对修改内容进行压缩编码之后,发送到目的机。
FPGA103在对修改内容压缩编码后,如果编码结果的内容长度超过一个内存页面的长度,则由于压缩编码并没有节省待传输的数据量,因此可以丢弃编码结果,而直接传输源内存页面的内容;此外,FPGA103还在待发送的编码内容上封装头部信息,该头部信息包括:该数据是否为编码数据的标识、如果是编码数据则编码数据的长度、该编码数据对应的当前内存页面在虚拟机内存中的位置信息(例如该数据对应的当前内存页面与前次传输的内存页面是否为同属于同一个内存块(memory block),如果不属于同一个block,则头部信息还需要包括该当前内存页面在虚拟内存中对应的内存块的名称、该当前内存页面在内存块中的偏移量等)。
如图1(b)所示,在目的机111的硬件加速卡112接收来自宿主机101的硬件加速卡102发送过来的虚拟机内存迁移数据,该虚拟机内存迁移数据可以是完整的内存页面,也可以是差异编码后内存页面中的修改内容。硬件加速卡112可以根据虚拟机内存迁移数据的头部信息确定当前迁移的虚拟机内存迁移数据的虚拟内存页面地址,该虚拟内存页面地址为该迁移数据在目的机侧的虚拟机内存中的地址。硬件加速卡112将虚拟机内存迁移数据以及虚拟内存页面地址发送至目的机侧的FPGA113。
FPGA113通过对虚拟机内存迁移数据进行解压缩等处理,从中获得当前被迁移的虚拟内存页面地址在目的机的虚拟机内存中对应的已有内存页面在宿主机上被修改过的内容,并将该修改内容拷贝至目的机111上的虚拟机内存中已有内存页面的上述存储位置中,实现与宿主机101之间的同步。
图2示出根据本公开一实施方式的虚拟机热迁移方法的流程图。如图2所示,该虚拟机热迁移方法在宿主机侧的硬件加速卡102上执行,包括以下步骤:
在步骤S201中,获取当前待迁移的虚拟机内存页面地址;
在步骤S202中,确定虚拟机内存页面地址是否命中本地缓存中;其中,本地缓存用于存储已迁移至目的机的部分内存页面;
在步骤S203中,在未命中本地缓存时,则通过FPGA从虚拟机的宿主机获取虚拟机内存页面地址对应的当前内存页面,并将当前内存页面发送至目的机。
本实施例中,在虚拟机的热迁移过程中,在第一次迁移时,可以一次性将宿主机的虚拟机内存中的内容全部拷贝至目的机;由于宿主机侧该虚拟机依然正常运行,在第一次迁移后,宿主机上的虚拟机内存还会被正常运行的虚拟机所修改,因此经过第一次迁移之后,需要多轮迭代拷贝的方式才能完成虚拟机的热迁移。
本实施例中,宿主机上的虚拟机热迁移线程在经过第一次迁移之后,实时收集被虚拟机修改过内容的虚拟机内存中的内存页面,这些内存页面可以称之为新增脏页,根据收集结果可以形成dirty bit,dirty bit的长度与虚拟机内存中的内存页面数量相等,每一个比特位用于标识虚拟机内存中对应内存页面是否为新增脏页。在一实施例中,虚拟机内存中一个内存页面的长度可以为4096个字节。
宿主机第一次迁移之后的每一轮迭代迁移中,将收集到的dirty bit中新增脏页对应的比特位转换成宿主机上虚拟机内存中的虚拟机内存页面地址列表,并传送给宿主机侧的硬件加速卡。例如,假如虚拟机内存中包括4个内存页面,而dirty bit为“0110”,也即表示虚拟机内存中第2和第3个内存页面为新增脏页,即相较于上次迁移的内容,第2、3内存页面的内容被宿主机上的虚拟机修改过。根据dirty bit可以得到虚拟机内存页面地址列表为{XXX1,XXX2}(假如虚拟机内存中第1个内存页面的地址为XXX0,后面的3个内存页面的地址依次为XXX1、XXX2、XXX3)。可以理解的是,以上仅为举例说明,实际应用中虚拟机内存中的内存页面较多,且地址也较为复杂。
硬件加速卡从宿主机获得虚拟机内存页面地址列表之后,可以针对该列表中的所有虚拟内存页面地址进行本轮的虚拟机内存迁移。在一实施例中,可以从虚拟机内存页面地址列表中的第一个虚拟机内存页面地址开始进行处理。
针对当前待迁移的虚拟机内存页面地址,硬件加速卡首先判断是否在本地缓存中命中该虚拟机内存页面地址,也即判断本地缓存中是否存储有该虚拟机内存页面地址对应的原始内存页面,也即之前已经拷贝至目的机的该虚拟机内存页面地址对应的内存页面。如果本地缓存中未存储当前待迁移的该虚拟机内存页面地址对应的原始内存页面,则说明该虚拟机内存页面地址对应的原始内存页面并未存储下来,而无法采用差异编码的方式仅传送修改内容,因此可以通过FPGA从宿主机上的虚拟内存中获取该虚拟机内存页面地址对应的当前内存页面,并将完整的该当前内存页面发送至目的机。FPGA与宿主机之间建立有DMA通道,因此硬件加速卡可以通过FPGA经过两次DMA(也即从宿主机到FPGA,再从FPGA到硬件加速卡的方式)获取到该虚拟机内存页面地址对应的当前内存页面。
硬件加速卡上的本地缓存可以是RAM cache,该RAM cache中可以存储宿主机上的虚拟机内存中的热内存页面,也即经常被虚拟机所访问的一部分内存页面。硬件加速卡可以实时通过预设的更新策略对该RAM cache中存储的内存页面进行更新,即利用被频繁访问的内存页面替换该RAM cache中存储的访问频率较低的已有内存页面。由于本公开实施例中多轮迭代迁移过程中,第一次迁移过程之后,被再次迁移的虚拟机内存页面均是新增脏页,也即被虚拟机访问且修改过内容的内存页面,这类内存页面为热内存页面的可能性较高。因此,硬件加速卡可以通过接收到的虚拟机内存页面地址列表确定当前待迁移的虚拟机内存页面地址对应的内存页面是否为热内存页面,并且可以根据预设的更新策略对RAM cache中进行更新。
在一些实施例中,硬件加速卡判断当前待迁移的虚拟机内存页面地址被本地缓存所命中,也即本地缓存中存储有虚拟机内存页面地址对应的原始内存页面时,则可以利用差异编码方式仅传输虚拟机内存页面地址对应的当前内存页面中的修改内容,而不是将整个当前内存页面全部传送至目的机,这样可以减少数据传输量,减轻底层物理网络的传输压力。
差异编码的过程由宿主机侧的FPGA来完成。由于差异编码的主要过程是将硬件加速卡的本地缓存中存储的当前待迁移的虚拟机内存页面地址对应的原始内存页面和宿主机的虚拟内存中存储的该虚拟机内存页面地址对应的当前内存页面进行比较,因此可以利用FPGA简单的编程逻辑来实现,例如可以由FPGA针对原始内存页面和当前内存页面进行字节的对比操作,并根据对比操作确定当前内存页面相较于原始内存页面的修改内容,进而只向目的机传输该修改内容。当然,可以理解的是,为了加快比对过程,可以采用多个字节同时进行比对的方式。
在本实施例的一个可选实现方式中,方法还包括以下步骤:
根据预设的缓存更新策略确定是否利用当前内存页面替换本地缓存中已有的内存页面。
该可选的实现方式中,如上文所述,硬件加速卡的本地缓存中用于存储虚拟机内存的热内存页面,而本地缓存可以采用RAM cache。RAM cache的更新策略为已知技术,具体可以根据实际情况选择已有的一种或者多个缓存更新策略来实现,在此不做限制。
在根据预设的缓存更新策略确定当前内存页面为热内存页面,需要利用当前内存页面替换RAM cache中的已有内存页面时,可以将该热内存页面存储至RAM cache中被替换的已有内存页面的存储位置处。通过这种方式,每一轮迭代迁移过程中,硬件加速卡会将本次传送至目的机、且较为热门的内存页面存储在本地缓存中,以便下一轮迭代中能够增加命中率。进而使用差异编码的方式进行传送。
在本实施例的一个可选实现方式中,如图3所示,步骤S202即确定虚拟机内存页面地址是否命中本地缓存中的步骤之后,该方法进一步还包括以下步骤:
在步骤S301中,在命中本地缓存时,将虚拟内存页面地址发送给FPGA;
在步骤S302中,从FPGA接收压缩编码数据;其中,压缩编码数据包括虚拟机内存页面地址被本地缓存命中后,在宿主机的虚拟机内存中对应的当前内存页面相较于本地缓存中对应的原始内存页面的修改内容;
在步骤S303中,将压缩编码数据发送至目的机。
该可选的实现方式中,硬件加速卡判断当前待迁移的虚拟机内存页面地址被本地缓存所命中,也即本地缓存中存储有虚拟机内存页面地址对应的原始内存页面时,则可以利用差异编码方式仅传输虚拟机内存页面地址对应的当前内存页面中的修改内容,而不是将整个当前内存页面全部传送至目的机,这样可以减少数据传输量,能够减轻底层物理网络的传输压力。
差异编码的过程由宿主机侧的FPGA来完成。由于差异编码的主要过程是将硬件加速卡的本地缓存中存储的当前待迁移的虚拟机内存页面地址对应的原始内存页面和宿主机的虚拟内存中存储的该虚拟机内存页面地址对应的当前内存页面进行比较,因此可以利用FPGA简单的编程逻辑来实现,例如可以由FPGA针对原始内存页面和当前内存页面进行字节的对比操作,并根据对比操作确定当前内存页面相较于原始内存页面的修改内容,进而只向目的机传输该修改内容。
FPGA接收到硬件加速卡发送的在本地缓存中被命中的虚拟内存页面地址后,通过字节对比操作确定对当前内存页面相较于原始内存页面的修改内容之后,可以针对该修改内容进行压缩编码。压缩编码数据中包括修改内容以及修改内容在当前内存页面中的位置以及长度等,编码格式可以采用已有的LEB128方法。
FPGA将该压缩编码数据发送给硬件加速卡,由硬件加速卡发送至目的机。
图4示出根据本公开一实施方式的虚拟机热迁移方法的流程图。如图4所示,该虚拟机热迁移方法在宿主机侧的FPGA 103上执行,包括以下步骤:
在步骤S401中,根据当前待迁移的虚拟机内存页面地址从硬件加速卡的本地缓存中获取对应的原始内存页面,以及从宿主机的虚拟机内存中获取对应的当前内存页面;
在步骤S402中,比较原始内存页面以及当前内存页面;
在步骤S403中,根据比较结果将当前内存页面相较于原始内存页面的修改内容通过硬件加速卡发送至目的机。
本实施例中,宿主机侧的FPGA可以根据从硬件加速卡获取的、在硬件加速卡的本地缓存中命中的当前待迁移的虚拟机内存页面地址,从硬件加速卡的本地缓存中获取对应的原始内存页面,并从宿主机的虚拟机内存中获取对应的当前内存页面,FPGA通过比较当前内存页面和原始内存页面中对应的字节,确定相同的比特位以及不同的比特位等比较结果,进而根据比较结果将当前内存页面相较于原始内存页面的修改内容发送给硬件加速卡,进而由硬件加速卡将其发送至目的机。
本实施例中的其他细节可以参见上述对宿主机侧硬件加速卡上运行的虚拟机热迁移方法的描述,在此不再赘述。
在本实施例的一个可选实现方式中,如图5所示,步骤S403,即根据比较结果将当前内存页面相较于原始内存页面的修改内容通过硬件加速卡发送至目的机的步骤,进一步包括以下步骤:
在步骤S501中,对原始内存页面和当前内存页面中的对应比特位进行异或操作;
在步骤S502中,根据异或操作的结果确定修改内容;
在步骤S503中,将修改内容进行压缩编码,并发送至硬件加速卡,以便由硬件加速卡发送至目的机。
该可选的实现方式中,FPGA可以对原始内存页面和当前内存页面中的对应比特位进行异或操作,并根据异或操作确定修改内容。例如,在原始内存页面和当前内存页面中的第n个比特位的异或结果为0,则说明这两个比特位相同,而如果异或结果为1,则说明这两个比特位不同,也即该位置处的内容有修改。通过逐个比特位的异或操作,即可定位整个内存页面中有修改和未修改的比特位,进而从当前内存页面能够确定修改后的比特位值,最终能够确定修改内容。可以理解的是,该修改内容包括有修改的比特位在当前内存页面(原始内存页面)中的位置以及该些位置处当前内存页面中的当前值(也即修改后的值)。
为了目的机在接收到该修改内容后,能够确定出有修改的比特位在被迁移的内存页面中的位置以及该些位置处被修改后的值,可以将该修改内容按照预设的编码方式进行压缩编码,目的机按照对应的解码方式进行解码之后,即可得到修改后的值以及该修改后的值在被迁移的该内存页面中的位置。
FPGA将修改内容压缩编码之后,将其发送给硬件加速卡,硬件加速卡再将其发送至目的机。
在本实施例的一个可选实现方式中,如图6所示,步骤S502,即根据异或操作的结果确定修改内容的步骤,进一步包括以下步骤:
在步骤S601中,统计原始内存页面和当前内存页面中异或结果连续为0的第一字节数以及异或结果连续为非0的第二字节数;
在步骤S602中,依次记录第一字节数、第二字节数以及第二字节数对应的当前内存页面中的内容,得到修改内容。
该可选的实现方式中,FPGA在对原始内存页面和当前内存页面中对应的比特位进行异或操作过程中,可以根据异或结果统计得到连续为0的第一字节数以及异或结果连续为非0的第二字节数,并依次记录第一字节数、第二字节数以及第二字节数对应的当前内存页面中的比特位的值,最终得到整个内存页面的修改内容。
在一些实施例中,为了加速异或的过程,FPGA可以一次按照64bit或者128bit同时进行异或操作。
例如,从原始内存页面和当前内存页面的第1个比特位开始进行异或操作,以byte为单位,统计结果为0的连续的byte的个数记为zBytesNum;统计结果为非0的连续的byte的个数记为nonzBytesNum,并拷贝这些非0的连续的byte在当前内存页面中对应的内容,记为nonzBytes;重复上述步骤,直到整个内存页面(4096Bytes)处理结束;最终可以得到依次记录为zBytesNum1 nonzBytesNum1 nonzBytes1 zBytesNum2 nonzBytesNum2nonzBytes2……的修改内容。
在本实施例的一个可选实现方式中,步骤S503中将修改内容进行压缩编码之后,还包括:
在压缩编码后的修改内容的长度超过当前内存页面的长度时,丢弃修改内容,并将当前内存页面发送至目的机。
该可选的实现方式中,如果经过差异编码得到的压缩编码数据的长度超过当前内存页面的长度,则可以丢弃修改内容,并直接将当前内存页面发送至目的机,这是因为压缩编码后的数据量并未减少,直接发送当前内存页面反而可以省去目的机端的解码过程,减轻目的机的资源消耗。
在本实施例的一个可选实现方式中,步骤S503中将修改内容进行压缩编码之后,还包括:
在压缩编码后的修改内容中封装头部信息;其中,头部信息包括当前内存页面在虚拟机内存中的位置信息、是否为压缩编码数据的标识和/或压缩编码数据的长度。
该可选的实现方式中,经过压缩编码后的修改内容中可以封装头部信息,以便在头部信息中包含当前数据在虚拟机内存中的位置信息,是否为压缩编码页面的标识和/或压缩编码后的长度等。
例如,可以在头部信息中封装当前内存页面与前次传输过去的内存页面是否为同属于同一个内存块(memory block),如果不属于同一个内存块(memory block),还需要在头部信息中封装当前内存页面对应的内存块(memory block)的名称以及当前内存页面在该内存块(memory block)的偏移量等,目的机可以通过内存块名称以及偏移量确定当前内存页面在目的机的虚拟机内存中的位置;头部信息中还可以封装当前内存页面是否为经过差异编码后的压缩编码数据还是未经过差异编码的原始数据的标识,以便目的机针对压缩编码数据进行解码等操作;此外,如果是压缩编码数据,则头部信息中还可以封装压缩结果的长度等信息。
图7示出根据本公开一实施方式的虚拟机热迁移方法的流程图。如图7所示,该虚拟机热迁移方法在目的机侧的FPGA113上执行,包括以下步骤:
在步骤S701中,从硬件加速卡获取从宿主机接收到的虚拟机内存迁移数据以及迁移至的虚拟机内存页面地址;
在步骤S702中,在虚拟机内存迁移数据为压缩编码数据时,从虚拟机内存迁移数据中获取修改内容以及存储位置;其中,修改内容为目的机的虚拟内存中虚拟机内存页面地址对应的已有内存页面在宿主机上被修改过的内容;
在步骤S703中,将修改内容拷贝到已有内存页面的存储位置处。
本实施例中,目的机侧的硬件加速卡从宿主机侧的硬件加速卡接收到传送过来的虚拟机内存迁移数据之后,根据该虚拟机内存迁移数据中的头部信息获取该虚拟机内存迁移数据对应的内存页面在目的机的虚拟内存中的虚拟内存页面地址,之后将该虚拟机内存迁移数据以及该虚拟内存页面地址发送至目的机侧的FPGA,并由目的机侧的FPGA对其进行处理。
由于宿主机侧传输过来的虚拟机内存迁移数据可能是完整的内存页面,也可能是经过差异编码后的压缩编码数据,因此FPGA可以通过解析该虚拟机内存迁移数据的头部信息确定该虚拟机内存迁移数据是完整的内存页面数据还是压缩编码数据。
在确定该虚拟机内存迁移数据为压缩编码数据之后,FPGA可以从该虚拟机内存迁移数据中解码得到修改内容以及该修改内容在对应内存页面中的位置,该修改内容为本轮迁移中宿主机的虚拟内存中对应的当前内存页面相较于之前迁移到目的机的原始内存页面的修改内容,也即当前被迁移的虚拟内存页面地址在目的机的虚拟机内存中对应的已有内存页面在宿主机上被修改过的内容,为了实现宿主机与目的机的虚拟机内存同步,目的机需要将该修改内容同步到目的机上的虚拟机内存中。
FPGA在确定了修改内容以及在对应内存页面中的存储位置之后,可以将该修改内容拷贝至目的机上的虚拟机内存中已有内存页面的上述存储位置中,实现与宿主机之间的同步。
本实施例中的其他细节还可以参见上述对宿主机侧硬件加速卡上运行的虚拟机热迁移方法的描述,以及上述对宿主机侧FPGA上运行的虚拟机热迁移方法的描述,在此不再赘述。
在本实施例的一个可选实现方式中,方法进一步还包括以下步骤:
在虚拟机内存迁移数据为原始内存页面时,将虚拟机内存迁移数据中的原始内存页面拷贝至虚拟机内存页面地址。
该可选的实现方式中,宿主机传输过来的虚拟机内存迁移数据还可以是完整的内存页面数据,因此在该虚拟机内存迁移数据为完整的内存页面数据时,可以直接根据该虚拟机内存迁移数据对应的虚拟机内存页面地址将其拷贝至目的机的虚拟机内存中,以实现与宿主机之间的内存同步。
在本实施例的一个可选实现方式中,步骤S702,即从虚拟机内存迁移数据中获取修改内容以及存储位置的步骤,进一步包括以下步骤:
从虚拟机内存迁移数据中获取顺序排列的多组数据;其中每组数据中包括顺序排列的第一字节数、第二字节数以及第二字节数个数据;
步骤S703,即将修改内容拷贝到已有内存页面的存储位置处的步骤,进一步包括以下步骤:
从多组数据的第一组开始,针对每组数据,将第二字节数个数据拷贝至存储位置;其中,存储位置为前次拷贝地址加上第一字节数;
将前次拷贝地址确定为存储位置加上第二字节数。
该可选的实现方式中,参见上述对宿主机侧FPGA上运行的虚拟机热迁移方法的描述可知,宿主机侧的FPGA在对原始内存页面和当前内存页面对应的比特位执行异或操作过程中,根据异或结果统计得到连续为0的第一字节数以及异或结果连续为非0的第二字节数,并依次记录第一字节数、第二字节数以及第二字节数对应的当前内存页面中的比特位的值,最终得到整个内存页面的修改内容。
也即此处第一字节数对应的比特位为原始内存页面和当前内存页面中内容相同的字节数目,而第二字节数对应的比特位为原始内存页面和当前内存页面中内容不同的字节数目,因此在记录了第一字节数和第二字节数后,还记录了第二字节数对应的当前内存页面中的比特位值,也即当前内存页面相较于原始内存页面有修改的内容,通过这种方式将第一字节数对应的当前内存页面中的内容丢弃,而仅记录了这部分丢弃的内容的字节数,可以起到压缩数据的作用。
由于宿主机侧的FPGA压缩编码后的数据中按照顺序编码有多组数据,并且每组数据包括第一字节数、第二字节数以及第二字节数个数据;因此目的侧的FPGA根据该编码方式从中获取多组数据,并从第一组数开始,针对每组数据,将第二个字节数个数据拷贝至对应的位置处,该对应的位置可以根据该组数据的第一个字节数、第二个字节数以及前次拷贝地址确定。
前次拷贝地址的初始值可以是当前迁移的内存页面对应的虚拟机内存页面地址,该虚拟机内存页面地址是硬件加速卡在接收到该虚拟机内存迁移数据后,根据目的机上的虚拟机内存与宿主机上的虚拟机内存之间的映射关系确定的,也即当前迁移的内存页面在目的机上的虚拟机内存中的地址。
从第一组数据开始,将第一组数据中第二字节数个数据拷贝至前次拷贝地址的初始值加上第一组数据的第一字节数得到的位置处,并且将前次拷贝地址置为该前次拷贝地址的初始值加上第一组数据的第二字节数,之后再处理第二组数据;依次处理,最终可以将虚拟机内存迁移数据中的修改数据拷贝至目的机的虚拟机内存中的相应位置处,实现与宿主机虚拟内存的同步。
图8示出根据本公开一实施方式的虚拟机热迁移方法的流程图。如图8所示,该虚拟机热迁移方法在目的机侧的硬件加速卡112上执行,包括以下步骤:
在步骤S801中,从宿主机接收虚拟机内存迁移数据;
在步骤S802中,从虚拟机内存迁移数据的头部信息确定虚拟内存迁移数据迁移至的虚拟机内存页面地址;
在步骤S803中,将虚拟机内存迁移数据以及虚拟机内存页面地址发送至目的机侧的FPGA。
本实施例中,目的机侧的硬件加速卡可以从宿主机侧接收当前迁移的虚拟机内存迁移数据,该虚拟机内存迁移数据可以是完整的内存页面,也可以是经过差异编码后的压缩编码数据。
硬件加速卡可以通过虚拟机内存迁移数据的头部信息确定该虚拟机内存迁移数据在目的机上的虚拟内存中的虚拟机内存页面地址。由于目的机上的虚拟内存和宿主机上的虚拟内存之间地址的映射关系已知,而头部信息中包含有虚拟机内存迁移数据在宿主机上的虚拟内存中的地址,因此根据上述映射关系以及该虚拟机内存迁移数据的头部信息中包括的上述地址即可确定该虚拟机内存迁移数据在目的机的虚拟内存中的虚拟内存页面地址。
硬件加速卡确定上述虚拟机内存迁移数据的虚拟内存页面地址之后将其发送给目的机侧的FPGA,由FPGA对其进行处理。
本实施例中的其他细节还可以参见上述对宿主机侧硬件加速卡上运行的虚拟机热迁移方法的描述、上述对宿主机侧FPGA上运行的虚拟机热迁移方法的描述、以及上述对目的机侧FPGA上运行的虚拟机热迁移方法的描述,在此不再赘述。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
根据本公开一实施方式的虚拟机热迁移装置,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该虚拟机热迁移装置位于宿主机侧的硬件加速卡上,其包括:
第一获取模块,被配置为获取当前待迁移的虚拟机内存页面地址;
第一确定模块,被配置为确定虚拟机内存页面地址是否命中本地缓存;其中,本地缓存用于存储已迁移至目的机的部分内存页面;
第一发送模块,被配置为在未命中本地缓存时,则通过FPGA从虚拟机的宿主机获取虚拟机内存页面地址对应的当前内存页面,并将当前内存页面发送至目的机。
在本实施例的一个可选实现方式中,装置还包括:
第二确定模块,被配置为根据预设的缓存更新策略确定是否利用当前内存页面替换本地缓存中已有的内存页面。
在本实施例的一个可选实现方式中,装置还包括:
第二发送模块,被配置为在命中本地缓存时,将虚拟内存页面地址发送给FPGA;
第一接收模块,被配置为从FPGA接收压缩编码数据;其中,压缩编码数据包括虚拟机内存页面地址被本地缓存命中后,在宿主机的虚拟机内存中对应的当前内存页面相较于本地缓存中对应的原始内存页面的修改内容;
第三发送模块,被配置为将压缩编码数据发送至目的机。
上述实施例以及可选的实现方式中的虚拟机热迁移装置与图2所示实施例及相关实施例中的虚拟机热迁移方法对应一致,具体细节可以参见上述对图2所示实施例及相关实施例中的虚拟机热迁移方法的描述,在此不再赘述。
根据本公开一实施方式的虚拟机热迁移装置,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该虚拟机热迁移装置位于宿主机侧的FPGA上,其包括:
第二获取模块,被配置为根据当前待迁移的虚拟机内存页面地址从硬件加速卡的本地缓存中获取对应的原始内存页面,以及从宿主机的虚拟机内存中获取对应的当前内存页面;
比较模块,被配置为比较原始内存页面以及当前内存页面;
第四发送模块,被配置为根据比较结果将当前内存页面相较于原始内存页面的修改内容通过硬件加速卡发送至目的机。
在本实施例的一个可选实现方式中,第四发送模块,包括:
异或操作子模块,被配置为对原始内存页面和当前内存页面中的对应比特位进行异或操作;
第一确定子模块,被配置为根据异或操作的结果确定修改内容;
编码子模块,被配置为将修改内容进行压缩编码,并发送至硬件加速卡,以便由硬件加速卡发送至目的机。
在本实施例的一个可选实现方式中,第一确定子模块,包括:
统计子模块,被配置为统计原始内存页面和当前内存页面中异或结果连续为0的第一字节数以及异或结果连续为非0的第二字节数;
记录子模块,被配置为依次记录第一字节数、第二字节数以及异或结果连续为非0对应的当前内存页面中的内容,得到修改内容。
在本实施例的一个可选实现方式中,装置还包括:
第五发送模块,被配置为在压缩编码后的修改内容的长度超过当前内存页面的长度时,丢弃修改内容,并将当前内存页面发送至目的机。
在本实施例的一个可选实现方式中,装置还包括:
头部封装模块,被配置为在压缩编码后的修改内容中封装头部信息;其中,头部信息包括当前内存页面在虚拟机内存中的位置信息、是否为压缩编码数据的标识和/或压缩编码数据的长度。
上述实施例以及可选的实现方式中的虚拟机热迁移装置与图4所示实施例及相关实施例中的虚拟机热迁移方法对应一致,具体细节可以参见上述对图4所示实施例及相关实施例中的虚拟机热迁移方法的描述,在此不再赘述。
根据本公开一实施方式的虚拟机热迁移装置,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该虚拟机热迁移装置位于目的机侧的FPGA上,其包括:
第二接收模块,被配置为从硬件加速卡获取从宿主机接收到的虚拟机内存迁移数据以及迁移至的虚拟机内存页面地址;
第三获取模块,被配置为在虚拟机内存迁移数据为压缩编码数据时,从虚拟机内存迁移数据中获取修改内容以及存储位置;其中,修改内容为目的机的虚拟内存中虚拟机内存页面地址对应的已有内存页面在宿主机上被修改过的内容;
第一拷贝模块,被配置为将修改内容拷贝到已有内存页面的存储位置处。
在本实施例的一个可选实现方式中,装置还包括:
第二拷贝模块,被配置为在虚拟机内存迁移数据为原始内存页面时,将虚拟机内存迁移数据中的原始内存页面拷贝至虚拟机内存页面地址。
在本实施例的一个可选实现方式中,第三获取模块,包括:
获取子模块,被配置为从虚拟机内存迁移数据中获取顺序排列的多组数据;其中每组数据中包括顺序排列的第一字节数、第二字节数以及第二字节数个数据;
第一拷贝模块,包括:
拷贝子模块,被配置为从多组数据的第一组开始,针对每组数据,将第二字节数个数据拷贝至存储位置;其中,存储位置为前次拷贝地址加上第一字节数;
第二确定子模块,被配置为将前次拷贝地址确定为存储位置加上第二字节数。
上述实施例以及可选的实现方式中的虚拟机热迁移装置与图7所示实施例及相关实施例中的虚拟机热迁移方法对应一致,具体细节可以参见上述对图7所示实施例及相关实施例中的虚拟机热迁移方法的描述,在此不再赘述。
根据本公开一实施方式的虚拟机热迁移装置,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该虚拟机热迁移装置位于目的机侧的硬件加速卡上,其包括:
第三接收模块,被配置为从宿主机接收虚拟机内存迁移数据;
第三确定模块,被配置为从虚拟机内存迁移数据的头部信息确定虚拟内存迁移数据迁移至的虚拟机内存页面地址;
第六发送模块,被配置为将虚拟机内存迁移数据以及虚拟机内存页面地址发送至目的机侧的FPGA。
上述实施例中的虚拟机热迁移装置与图8所示实施例及相关实施例中的虚拟机热迁移方法对应一致,具体细节可以参见上述对图8所示实施例及相关实施例中的虚拟机热迁移方法的描述,在此不再赘述。
根据本公开一实施方式,还提出了一种虚拟机热迁移系统,其包括:
宿主机,其上运行有待迁移的虚拟机;
硬件加速卡,其上执行如图2所示实施例及相关实施例所示的位于宿主机侧的硬件加速卡上的虚拟机热迁移方法;
FPGA,其上执行如图4所示实施例及相关实施例所示的位于宿主机侧的FPGA上的虚拟机热迁移方法。
根据本公开一实施方式,还提出了一种虚拟机热迁移系统,其包括:
目的机,其上运行有被迁移过来的虚拟机;
硬件加速卡,其上执行如图8所示实施例所示的位于目的机侧的硬件加速卡上的虚拟机热迁移方法;
FPGA,其上执行如图7所示实施例及相关实施例所示的位于目的机侧的FPGA上的虚拟机热迁移方法。
图9是适于用来实现根据本公开实施方式的虚拟机热迁移方法的电子设备的结构示意图。
如图9所示,电子设备900包括处理器(如CPU、GPU、FPGA等)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行本公开上述方法的实施方式中的各种处理。在RAM903中,还存储有电子设备900操作所需的各种程序和数据。处理器901、ROM902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本公开的实施方式,上文参考本公开实施方式中在宿主机侧和/或目的机侧硬件加速卡上执行的虚拟机热迁移方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行本公开实施方式中上述虚拟机热迁移方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的虚拟机热迁移方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (20)
1.一种虚拟机热迁移方法,其特征在于,所述虚拟机热迁移方法在宿主机侧的硬件加速卡上执行,包括:
获取当前待迁移的虚拟机内存页面地址;
确定所述虚拟机内存页面地址是否命中本地缓存;其中,所述本地缓存用于存储已迁移至目的机的部分内存页面;
在未命中本地缓存时,则通过FPGA从虚拟机的宿主机获取所述虚拟机内存页面地址对应的当前内存页面,并将所述当前内存页面发送至目的机。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据预设的缓存更新策略确定是否利用所述当前内存页面替换所述本地缓存中已有的内存页面。
3.根据权利要求1所述的方法,其特征在于,确定所述虚拟机内存页面地址是否命中本地缓存中之后,所述方法还包括:
在命中本地缓存时,将所述虚拟内存页面地址发送给FPGA;
从所述FPGA接收压缩编码数据;其中,所述压缩编码数据包括所述虚拟机内存页面地址被所述本地缓存命中后,在所述宿主机的虚拟机内存中对应的当前内存页面相较于所述本地缓存中对应的原始内存页面的修改内容;
将所述压缩编码数据发送至所述目的机。
4.一种虚拟机热迁移方法,其特征在于,所述虚拟机热迁移方法在宿主机侧的FPGA上执行,包括:
根据当前待迁移的虚拟机内存页面地址从硬件加速卡的本地缓存中获取对应的原始内存页面,以及从宿主机的虚拟机内存中获取对应的当前内存页面;
比较所述原始内存页面以及所述当前内存页面;
根据比较结果将所述当前内存页面相较于所述原始内存页面的修改内容通过所述硬件加速卡发送至目的机。
5.根据权利要求4所述的方法,其特征在于,根据比较结果将所述当前内存页面相较于所述原始内存页面的修改内容通过所述硬件加速卡发送至目的机,包括:
对所述原始内存页面和所述当前内存页面中的对应比特位进行异或操作;
根据所述异或操作的结果确定所述修改内容;
将所述修改内容进行压缩编码,并发送至所述硬件加速卡,以便由所述硬件加速卡发送至所述目的机。
6.根据权利要求5所述的方法,其特征在于,根据所述异或操作的结果确定所述修改内容,包括:
统计所述原始内存页面和所述当前内存页面中异或结果连续为0的第一字节数以及异或结果连续为非0的第二字节数;
依次记录所述第一字节数、第二字节数以及异或结果连续为非0对应的当前内存页面中的内容,得到所述修改内容。
7.根据权利要求5或6所述的方法,其特征在于,将所述修改内容进行压缩编码之后,还包括:
在压缩编码后的所述修改内容的长度超过所述当前内存页面的长度时,丢弃所述修改内容,并将所述当前内存页面发送至目的机。
8.根据权利要求5或6所述的方法,其特征在于,将所述修改内容进行压缩编码之后,还包括:
在压缩编码后的所述修改内容中封装头部信息;其中,所述头部信息包括所述当前内存页面在虚拟机内存中的位置信息、是否为压缩编码数据的标识和/或压缩编码数据的长度。
9.一种虚拟机热迁移方法,其特征在于,所述虚拟机热迁移方法在目的机侧的FPGA上执行,包括:
从硬件加速卡获取从宿主机接收到的虚拟机内存迁移数据以及迁移至的虚拟机内存页面地址;
在所述虚拟机内存迁移数据为压缩编码数据时,从所述虚拟机内存迁移数据中获取修改内容以及存储位置;其中,所述修改内容为所述目的机的虚拟内存中所述虚拟机内存页面地址对应的已有内存页面在宿主机上被修改过的内容;
将所述修改内容拷贝到所述已有内存页面的所述存储位置处。
10.根据权利要求9所述的方法,其特征在于,还包括:
在所述虚拟机内存迁移数据为原始内存页面时,将所述虚拟机内存迁移数据中的原始内存页面拷贝至所述虚拟机内存页面地址。
11.根据权利要求9所述的方法,其特征在于,从所述虚拟机内存迁移数据中获取修改内容以及存储位置,包括:
从所述虚拟机内存迁移数据中获取顺序排列的多组数据;其中每组数据中包括顺序排列的第一字节数、第二字节数以及第二字节数个数据;
将所述修改内容拷贝到所述已有内存页面的所述存储位置处,包括:
从多组数据的第一组开始,针对每组数据,将所述第二字节数个数据拷贝至所述存储位置;其中,所述存储位置为前次拷贝地址加上所述第一字节数;
将所述前次拷贝地址确定为所述存储位置加上所述第二字节数。
12.一种虚拟机热迁移方法,其特征在于,所述虚拟机热迁移方法在目的机侧的硬件加速卡上执行,包括:
从宿主机接收虚拟机内存迁移数据;
从所述虚拟机内存迁移数据的头部信息确定所述虚拟内存迁移数据迁移至的虚拟机内存页面地址;
将所述虚拟机内存迁移数据以及所述虚拟机内存页面地址发送至目的机侧的FPGA。
13.一种虚拟机热迁移装置,其特征在于,所述虚拟机热迁移装置位于宿主机侧的硬件加速卡上,包括:
第一获取模块,被配置为获取当前待迁移的虚拟机内存页面地址;
第一确定模块,被配置为确定所述虚拟机内存页面地址是否命中本地缓存;其中,所述本地缓存用于存储已迁移至目的机的部分内存页面;
第一发送模块,被配置为在未命中本地缓存时,则通过FPGA从虚拟机的宿主机获取所述虚拟机内存页面地址对应的当前内存页面,并将所述当前内存页面发送至目的机。
14.一种虚拟机热迁移装置,其特征在于,所述虚拟机热迁移装置位于宿主机侧的FPGA上,包括:
第二获取模块,被配置为根据当前待迁移的虚拟机内存页面地址从硬件加速卡的本地缓存中获取对应的原始内存页面,以及从宿主机的虚拟机内存中获取对应的当前内存页面;
比较模块,被配置为比较所述原始内存页面以及所述当前内存页面;
第四发送模块,被配置为根据比较结果将所述当前内存页面相较于所述原始内存页面的修改内容通过所述硬件加速卡发送至目的机。
15.一种虚拟机热迁移装置,其特征在于,所述虚拟机热迁移装置位于目的机侧的FPGA上,包括:
第二接收模块,被配置为从硬件加速卡获取从宿主机接收到的虚拟机内存迁移数据以及迁移至的虚拟机内存页面地址;
第三获取模块,被配置为在所述虚拟机内存迁移数据为压缩编码数据时,从所述虚拟机内存迁移数据中获取修改内容以及存储位置;其中,所述修改内容为所述目的机的虚拟内存中所述虚拟机内存页面地址对应的已有内存页面在宿主机上被修改过的内容;
第一拷贝模块,被配置为将所述修改内容拷贝到所述已有内存页面的所述存储位置处。
16.一种虚拟机热迁移装置,其特征在于,所述虚拟机热迁移装置位于目的机侧的硬件加速卡上,包括:
第三接收模块,被配置为从宿主机接收虚拟机内存迁移数据;
第三确定模块,被配置为从所述虚拟机内存迁移数据的头部信息确定所述虚拟内存迁移数据迁移至的虚拟机内存页面地址;
第六发送模块,被配置为将所述虚拟机内存迁移数据以及所述虚拟机内存页面地址发送至目的机侧的FPGA。
17.一种虚拟机热迁移系统,其特征在于,包括:
宿主机,其上运行有待迁移的虚拟机;
硬件加速卡,其上执行如权利要求1-3任一项所述的虚拟机热迁移方法;
FPGA,其上执行权利要求4-8任一项所述的虚拟机热迁移方法。
18.一种虚拟机热迁移系统,其特征在于,包括:
目的机,其上运行有被迁移过来的虚拟机;
硬件加速卡,其上执行权利要求12所述的虚拟机热迁移方法;
FPGA,其上执行权利要求9-11任一项所述的虚拟机热迁移方法。
19.一种电子设备,其特征在于,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-3、12任一项所述的方法。
20.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-3、12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911368442.0A CN113051024B (zh) | 2019-12-26 | 2019-12-26 | 虚拟机热迁移方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911368442.0A CN113051024B (zh) | 2019-12-26 | 2019-12-26 | 虚拟机热迁移方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113051024A true CN113051024A (zh) | 2021-06-29 |
CN113051024B CN113051024B (zh) | 2022-08-09 |
Family
ID=76506790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911368442.0A Active CN113051024B (zh) | 2019-12-26 | 2019-12-26 | 虚拟机热迁移方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113051024B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024041576A1 (zh) * | 2022-08-26 | 2024-02-29 | 阿里云计算有限公司 | 一种虚拟机的热迁移方法、设备、系统及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100299666A1 (en) * | 2009-05-25 | 2010-11-25 | International Business Machines Corporation | Live Migration of Virtual Machines In a Computing environment |
CN103414769A (zh) * | 2013-07-31 | 2013-11-27 | 华为技术有限公司 | 虚拟机热迁移的方法及物理机 |
CN103581331A (zh) * | 2013-11-13 | 2014-02-12 | 中国科学院计算技术研究所 | 虚拟机在线迁移方法与系统 |
CN103685368A (zh) * | 2012-09-10 | 2014-03-26 | 中国电信股份有限公司 | 用于迁移数据的方法及系统 |
CN103955399A (zh) * | 2014-04-30 | 2014-07-30 | 华为技术有限公司 | 一种虚拟机迁移方法和装置及物理主机 |
US20160266940A1 (en) * | 2014-11-18 | 2016-09-15 | Red Hat Israel, Ltd. | Post-copy migration of a group of virtual machines that share memory |
CN107729119A (zh) * | 2017-09-26 | 2018-02-23 | 联想(北京)有限公司 | 虚拟机迁移方法及其系统 |
CN107797878A (zh) * | 2016-09-06 | 2018-03-13 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移处理方法及系统 |
CN109344090A (zh) * | 2018-10-30 | 2019-02-15 | 深圳润迅数据通信有限公司 | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 |
CN109918174A (zh) * | 2019-03-15 | 2019-06-21 | 合肥谐桐科技有限公司 | 基于加速卡实现虚拟机热迁移优化处理的系统及其方法 |
-
2019
- 2019-12-26 CN CN201911368442.0A patent/CN113051024B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100299666A1 (en) * | 2009-05-25 | 2010-11-25 | International Business Machines Corporation | Live Migration of Virtual Machines In a Computing environment |
CN103685368A (zh) * | 2012-09-10 | 2014-03-26 | 中国电信股份有限公司 | 用于迁移数据的方法及系统 |
CN103414769A (zh) * | 2013-07-31 | 2013-11-27 | 华为技术有限公司 | 虚拟机热迁移的方法及物理机 |
CN103581331A (zh) * | 2013-11-13 | 2014-02-12 | 中国科学院计算技术研究所 | 虚拟机在线迁移方法与系统 |
CN103955399A (zh) * | 2014-04-30 | 2014-07-30 | 华为技术有限公司 | 一种虚拟机迁移方法和装置及物理主机 |
US20160266940A1 (en) * | 2014-11-18 | 2016-09-15 | Red Hat Israel, Ltd. | Post-copy migration of a group of virtual machines that share memory |
CN107797878A (zh) * | 2016-09-06 | 2018-03-13 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移处理方法及系统 |
CN107729119A (zh) * | 2017-09-26 | 2018-02-23 | 联想(北京)有限公司 | 虚拟机迁移方法及其系统 |
CN109344090A (zh) * | 2018-10-30 | 2019-02-15 | 深圳润迅数据通信有限公司 | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 |
CN109918174A (zh) * | 2019-03-15 | 2019-06-21 | 合肥谐桐科技有限公司 | 基于加速卡实现虚拟机热迁移优化处理的系统及其方法 |
Non-Patent Citations (3)
Title |
---|
PETTER SVARD等: ""Evaluation of delta compression techniques for efficient live migration of large virtual machines"", 《VEE "11: PROCEEDINGS OF THE 7TH ACM SIGPLAN/SIGOPS INTERNATIONAL CONFERENCE ON VIRTUAL EXECUTION ENVIRONMENTS》 * |
V. R. ANU等: ""Optimized delta compression in live migration of virtual machines"", 《2017 INTERNATIONAL CONFERENCE ON ENERGY, COMMUNICATION, DATA ANALYTICS AND SOFT COMPUTING (ICECDS)》 * |
高相林: ""容器化虚拟机热迁移技术的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024041576A1 (zh) * | 2022-08-26 | 2024-02-29 | 阿里云计算有限公司 | 一种虚拟机的热迁移方法、设备、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113051024B (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222048B (zh) | 序列生成方法、装置、计算机设备及存储介质 | |
CN109918018B (zh) | 一种数据存储方法及存储设备 | |
CN107046812B (zh) | 一种数据保存方法和装置 | |
CN110928483B (zh) | 数据存储、数据获取方法及设备 | |
US10496595B2 (en) | Method for zero-copy object serialization and deserialization | |
CN110297680B (zh) | 一种传输虚拟桌面图像的方法及装置 | |
CN107027326B (zh) | 存储系统中数据备份的方法及装置 | |
JP5397179B2 (ja) | データ符号化プログラム、データ復号化プログラムおよび方法 | |
JP5753946B2 (ja) | フォントファイルをダウンロードする方法およびシステム | |
CN107608769A (zh) | 一种数据处理方法及装置 | |
US12111807B2 (en) | Optimizing storage and retrieval of compressed data | |
US20240329836A1 (en) | System and method for data compaction and encryption of anonymized data records | |
CN111443942A (zh) | 资源文件的打包方法、装置、存储介质和计算机设备 | |
WO2021068891A1 (en) | Method, system, electronic device, and storage medium for storing and collecting temperature data | |
CN106664101A (zh) | 自适应速率压缩散列处理装置 | |
CN113051024B (zh) | 虚拟机热迁移方法、装置、电子设备及存储介质 | |
CN112905575A (zh) | 数据采集的方法、系统、存储介质及电子设备 | |
KR101218087B1 (ko) | 하둡 맵리듀스에서 바이너리 형태의 데이터 분석을 위한 입력포맷 추출방법 및 이를 이용한 바이너리 데이터의 분석방법 | |
CN113096776B (zh) | Dicom影像文件的存储方法、装置、电子设备及介质 | |
US12074962B2 (en) | Systems, methods, and apparatus for dividing and encrypting data | |
US20230055535A1 (en) | Systems, methods, and apparatus for dividing and compressing data | |
CN113452783B (zh) | 区块链云架构的数字化paas开放平台系统及实现方法 | |
CN103714091B (zh) | 一种生成对象识别符及从其中提取属性信息的方法及装置 | |
US8593310B1 (en) | Data-driven variable length encoding of fixed-length data | |
CN111600846B (zh) | 一种网关设备的恢复方法和恢复系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230531 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |