内存快照生成方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:38722666 阅读:11 留言:0更新日期:2023-09-08 23:16
本发明专利技术涉及虚拟机技术领域,公开了内存快照生成方法、装置、计算机设备及存储介质,该方法包括:确定用于存储内存快照的固定存储区,固定存储区的大小不小于目标设备的内存所占存储空间大小;获取需要迁移至内存快照的当前内存脏页数据;以覆盖固定存储区中历史内存脏页数据的方式,将当前内存脏页数据迁移至固定存储区的相应位置;当前内存脏页数据和历史内存脏页数据源于目标设备的同一内存页。本发明专利技术所生成的内存快照大小是基于目标设备的内存所设置的,且大小固定,内存快照所占空间较小,不会出现内存快照远大于内存规格值的情况,且在后续也可快速基于该内存快照恢复虚拟机等目标设备的内存。目标设备的内存。目标设备的内存。

【技术实现步骤摘要】
内存快照生成方法、装置、计算机设备及存储介质


[0001]本专利技术涉及虚拟机
,具体涉及内存快照生成方法、装置、计算机设备及存储介质。

技术介绍

[0002]虚拟机(Virtual Machine,VM)在运行时会生成包括内存和CPU(中央处理器)等相关信息的内存脏页数据,内存快照技术是将虚拟机在运行时的内存脏页数据,全部保存在磁盘文件上,形成内存快照,该内存快照中可以包含虚拟机内存以及其他物理设备内存状态信息,其可用于恢复某时刻的运行状态,是一种容灾的有效措施。
[0003]在传统生成内存快照的过程中,随着虚拟机运行时产生内存脏页数据,新增加的内存脏页数据会追加到内存快照末尾。这种追加写的方式逻辑简单,但是在虚拟机业务压力大时,在生成内存快照期间,会不断产生内存脏页数据,新增加的数据会不断追加到内存快照末尾,导致内存快照所占空间较大,这样不仅可能会造成内存快照远大于虚拟机内存值的情况,还会影响后续从内存快照恢复虚拟机以及业务的过程。

技术实现思路

[0004]有鉴于此,本专利技术提供了一种内存快照生成方法、装置、计算机设备及存储介质,以解决内存快照所占空间较大的技术问题。
[0005]第一方面,本专利技术提供了一种内存快照生成方法,包括:确定用于存储内存快照的固定存储区,所述固定存储区的大小不小于目标设备的内存所占存储空间大小;获取需要迁移至所述内存快照的当前内存脏页数据;以覆盖所述固定存储区中历史内存脏页数据的方式,将所述当前内存脏页数据迁移至所述固定存储区的相应位置;所述当前内存脏页数据和所述历史内存脏页数据源于所述目标设备的同一内存页。
[0006]本实施例提供的内存快照生成方法,为内存快照分配固定大小的固定存储区,使得内存快照的大小是固定的,且内存快照的大小足以存储目标设备的内存,从而能够为目标设备的每个内存页分配相应的固定位置,在需要存储当前内存脏页数据时,通过覆盖之前存储的历史内存脏页数据,即可实现对当前内存脏页数据的存储。该方法所生成的内存快照大小是基于目标设备的内存所设置的,且大小固定,内存快照所占空间较小,不会出现内存快照远大于内存规格值的情况;并且,由于内存快照大小固定,且所占空间小,在后续也可快速基于该内存快照恢复虚拟机等目标设备的内存。
[0007]在一种可选的实施方式中,所述目标设备的数量为多个,且多个所述目标设备包括虚拟机和至少一个物理设备;所述固定存储区的大小不小于多个所述目标设备的内存所占存储空间大小之和。
[0008]在一种可选的实施方式中,所述确定用于存储内存快照的固定存储区,包括:查询
多个所述目标设备的内存大小;根据多个所述目标设备的内存大小,确定多个所述目标设备的内存所占存储空间大小之和;划分出大小不小于多个所述目标设备的内存所占存储空间大小之和的固定存储区。
[0009]目标设备的内存大小是固定的,且容易查询得到,基于目标设备的内存大小可以简单快速地确定目标设备的内存所占存储空间的大小,方便划分出所需的固定存储区。
[0010]在一种可选的实施方式中,所述查询多个所述目标设备的内存大小,包括:从所述内存快照的内存开始段中提取出多个所述目标设备的内存大小。从内存开始段中提取目标设备的内存大小,方便快捷。
[0011]在一种可选的实施方式中,所述根据多个所述目标设备的内存大小,确定多个所述目标设备的内存所占存储空间大小之和,包括:为每个所述目标设备的内存页增加页面偏移地址,确定多个所述目标设备的内存所占存储空间大小之和;其中,所述目标设备的内存所占存储空间大小,包括:所述目标设备的内存大小以及所述目标设备所有内存页的页面偏移地址的大小。在内存快照中,为目标设备的内存页增加页面偏移地址,可以区分不同内存页所对应的内存脏页数据。
[0012]在一种可选的实施方式中,多个所述目标设备的内存所占存储空间大小之和,满足:Total
RAM
=(Total_ram_bytes / Page_size)
ꢀ×ꢀ
(Page_size + Page_offset);其中,Total
RAM
表示多个所述目标设备的内存所占存储空间大小之和,Total_ram_bytes表示多个所述目标设备的内存大小之和,Page_size表示所述内存页的大小,Page_offset表示页面偏移地址的大小。这种计算方式不需要关注每个目标设备的内存独自的大小,可以方便快速地计算出多个目标设备的内存所占存储空间大小之和。
[0013]在一种可选的实施方式中,Page_size = 4096。将内存页的大小Page_size设为4096,可以符合主流设备,适用于主流设备。
[0014]在一种可选的实施方式中,所述内存快照还用于存储虚拟机开始段和虚拟机状态信息;所述固定存储区的大小不小于,虚拟机开始段大小、虚拟机状态信息大小以及多个目标设备的内存所占存储空间大小之和。
[0015]在一种可选的实施方式中,所述内存快照还用于存储虚拟化管理平台元数据,所述虚拟化管理平台用于对所述虚拟机进行虚拟化管理;所述固定存储区的大小不小于,虚拟化管理平台元数据大小、虚拟机开始段大小、虚拟机状态信息大小以及多个目标设备的内存所占存储空间大小之和。
[0016]在一种可选的实施方式中,所述获取需要迁移至所述内存快照的当前内存脏页数据,包括:建立进程间通信链路,将进程间通信链路的写文件描述符发送至所述虚拟机;基于所述虚拟化管理平台,从所述进程间通信链路的读文件描述符接收需要迁移至所述内存快照的当前内存脏页数据。基于进程间通信链路可以明确读端和写端,可以快速且准确地获取到需要迁移的当前内存脏页数据。
[0017]在一种可选的实施方式中,所述内存快照包括多个内存部分段,且所述内存部分段用于存储唯一目标设备的内存脏页数据。一个内存部分段用于存储唯一目标设备的内存脏页数据,有利于对内存脏页数据的管理。
[0018]在一种可选的实施方式中,所述将所述当前内存脏页数据迁移至所述固定存储区的相应位置,包括:确定所述当前内存脏页数据所属的设备类型,并确定目标内存部分段;
所述目标内存部分段用于存储具有所述设备类型的目标设备的内存脏页数据;将所述当前内存脏页数据迁移至所述固定存储区中所述目标内存部分段的相应位置。基于当前内存脏页数据所属的设备类型,可以快速定位到内存快照中用于存储该当前内存脏页数据的位置,可以提高快照速度。
[0019]在一种可选的实施方式中,所述将所述当前内存脏页数据迁移至所述固定存储区中所述目标内存部分段的相应位置,包括:确定所述当前内存脏页数据的页面偏移地址;将所述当前内存脏页数据迁移至所述目标内存部分段的目标内存页中;所述目标内存页的页面偏移地址与所述当前内存脏页数据的页面偏移地址相一致。利用页面偏移地址可以准确确定当前内存脏页数据与内存部分段中内存页之间的对应关系,从而可以将当前内存脏页数据准确地存储至相应的内存页中。
[0020]在一种可选的实施方式中,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存快照生成方法,其特征在于,所述方法包括:确定用于存储内存快照的固定存储区,所述固定存储区的大小不小于目标设备的内存所占存储空间大小;获取需要迁移至所述内存快照的当前内存脏页数据;以覆盖所述固定存储区中历史内存脏页数据的方式,将所述当前内存脏页数据迁移至所述固定存储区的相应位置;所述当前内存脏页数据和所述历史内存脏页数据源于所述目标设备的同一内存页。2.根据权利要求1所述的方法,其特征在于,所述目标设备的数量为多个,且多个所述目标设备包括虚拟机和至少一个物理设备;所述固定存储区的大小不小于多个所述目标设备的内存所占存储空间大小之和。3.根据权利要求2所述的方法,其特征在于,所述确定用于存储内存快照的固定存储区,包括:查询多个所述目标设备的内存大小;根据多个所述目标设备的内存大小,确定多个所述目标设备的内存所占存储空间大小之和;划分出大小不小于多个所述目标设备的内存所占存储空间大小之和的固定存储区。4.根据权利要求3所述的方法,其特征在于,所述查询多个所述目标设备的内存大小,包括:从所述内存快照的内存开始段中提取出多个所述目标设备的内存大小。5.根据权利要求3所述的方法,其特征在于,所述根据多个所述目标设备的内存大小,确定多个所述目标设备的内存所占存储空间大小之和,包括:为每个所述目标设备的内存页增加页面偏移地址,确定多个所述目标设备的内存所占存储空间大小之和;其中,所述目标设备的内存所占存储空间大小,包括:所述目标设备的内存大小以及所述目标设备所有内存页的页面偏移地址的大小。6.根据权利要求5所述的方法,其特征在于,多个所述目标设备的内存所占存储空间大小之和,满足:Total
RAM =(Total_ram_bytes / Page_size)
ꢀ×ꢀ
(Page_size + Page_offset);其中,Total
RAM
表示多个所述目标设备的内存所占存储空间大小之和,Total_ram_bytes表示多个所述目标设备的内存大小之和,Page_size表示所述内存页的大小,Page_offset表示页面偏移地址的大小。7.根据权利要求6所述的方法,其特征在于,Page_size = 4096。8.根据权利要求2所述的方法,其特征在于,所述内存快照还用于存储虚拟机开始段和虚拟机状态信息;所述固定存储区的大小不小于,虚拟机开始段大小、虚拟机状态信息大小以及多个目标设备的内存所占存储空间大小之和。9.根据权利要求8所述的方法,其特征在于,所述内存快照还用于存储虚拟化管理平台元数据,所述虚拟化管理平台用于对所述虚拟机进行虚拟化管理;所述固定存储区的大小不小于,虚拟化管理平台元数据大小、虚拟机开始段大小、虚拟
机状态信息大小以及多个目标设备的内存所占存储空间大小之和。10.根据权利要求9所述的方法,其特征在于,所述获取需要迁移至所述内存快照的当前内存脏页数据,包括:建立进程间通信链路,将进程间通信链路的写文件描述符发送至所述虚拟机;基于所述虚拟化管理平台,从所述进程间通信链路的...

【专利技术属性】
技术研发人员:周胜利王亮
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1