一种支持内存快照重复数据删除的存储方法和装置与流程

文档序号:11198909 阅读:506 来源:国知局
一种支持内存快照重复数据删除的存储方法和装置与流程

本发明属于云计算技术领域,特别是涉及一种支持内存快照重复数据删除的存储方法和装置。



背景技术:

目前的技术方案中,从数据去重的位置上来说,分为源端去重和目的端去重,服务端与客户端进行交互,由客户端确认数据的重复,相同的数据不再上传,以节约网络带宽;从数据去重的范围上来说,数据去重可以在客户端进行,可采取在云服务端进行统一全局处理;从数据划分的方法上讲,分为全文件划分、静态划分和基于数据内容的划分,重复内容只保留一份,副本内容使用链接的形式取代。在虚拟化环境中,数据去重也得到一定支持,一方面借助存储设备原生的去重机制,一方面在上层对于磁盘内容的存储和链接克隆已经支持较完善,其中的冗余数据得到一定的优化。

目前云环境下关注的焦点往往在于虚拟机的镜像文件存储的优化,但在大规模的场景下,尤其是在线快照较频繁的场景,对内存的快照并未做特别的优化。而目前云环境中,虚拟机操作系统往往被限定在有限的范围内,其内存结构布局相似,内存快照相似性较高,内存快照过多,会导致存储中有大量重复的内存快照数据存在。



技术实现要素:

为解决上述问题,本发明提供了一种支持内存快照重复数据删除的存储方法和装置,能够只保存一份相同内容的内存快照区域,达到优化内存快照的存储和传输带宽的目的。

本发明提供的一种支持内存快照重复数据删除的存储方法,包括:

识别虚拟机操作系统的类型,构造内存布局模板;

根据所述内存布局模板,对虚拟机的内存分段进行快照,得到内存快照;

计算每个所述内存快照的指纹值;

查询所述内存快照的指纹值是否在过滤器中,如果在,则不上传该内存快照,如果不在,则上传该内存快照。

优选的,在上述支持内存快照重复数据删除的存储方法中,所述查询内存快照的指纹值是否在过滤器中之后还包括:

对于所述过滤器无法正确过滤的内存快照,在存储端进行所述内存快照的指纹值的二次校验,如果所述存储端存在所述内存快照,则不保存所述内存快照。

优选的,在上述支持内存快照重复数据删除的存储方法中,在所述查询所述内存快照的指纹值是否在过滤器中之前,还包括:

将所述过滤器保存在运行所述虚拟机的宿主机上。

优选的,在上述支持内存快照重复数据删除的存储方法中,所述计算每个所述内存快照的指纹值为:

利用sha1算法计算每个所述内存快照的指纹值。

优选的,在上述支持内存快照重复数据删除的存储方法中,所述过滤器为bloomfilter。

本发明提供的一种支持内存快照重复数据删除的存储装置,包括:

构造单元,用于识别虚拟机操作系统的类型,构造内存布局模板;

快照单元,用于根据所述内存布局模板,对虚拟机的内存分段进行快照,得到内存快照;

计算单元,用于计算每个所述内存快照的指纹值;

查询单元,用于查询所述内存快照的指纹值是否在过滤器中,如果在,则不上传该内存快照,如果不在,则上传该内存快照。

优选的,在上述支持内存快照重复数据删除的存储装置中,还包括:

校验单元,用于对于所述过滤器无法正确过滤的内存快照,在存储端进行所述内存快照的指纹值的二次校验,如果所述存储端存在所述内存快照,则不保存所述内存快照。

优选的,在上述支持内存快照重复数据删除的存储装置中,还包括:

保存单元,用于将所述过滤器保存在运行所述虚拟机的宿主机上。

优选的,在上述支持内存快照重复数据删除的存储装置中,所述计算单元具体用于利用sha1算法计算每个所述内存快照的指纹值。

优选的,在上述支持内存快照重复数据删除的存储装置中,所述查询单元具体用于查询所述内存快照的指纹值是否在bloomfilter中,如果在,则不上传该内存快照,如果不在,则上传该内存快照。

通过上述描述可知,本发明提供的上述支持内存快照重复数据删除的存储方法和装置,由于该方法包括识别虚拟机操作系统的类型,构造内存布局模板;根据所述内存布局模板,对虚拟机的内存分段进行快照,得到内存快照;计算每个所述内存快照的指纹值;查询所述内存快照的指纹值是否在过滤器中,如果在,则不上传该内存快照,如果不在,则上传该内存快照,因此能够只保存一份相同内容的内存快照区域,达到优化内存快照的存储和传输带宽的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的第一种支持内存快照重复数据删除的存储方法的示意图;

图2为本申请实施例提供的第一种支持内存快照重复数据删除的存储装置的示意图。

具体实施方式

本发明的核心思想在于提供一种支持内存快照重复数据删除的存储方法和装置,能够只保存一份相同内容的内存快照区域,达到优化内存快照的存储和传输带宽的目的。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请实施例提供的第一种支持内存快照重复数据删除的存储方法如图1所示,图1为本申请实施例提供的第一种支持内存快照重复数据删除的存储方法的示意图,该方法包括如下步骤:

s1:识别虚拟机操作系统的类型,构造内存布局模板;

以linux系统为例,其虚拟机内存空间布局类似,对于相同的linux内核,其内核地址空间内核代码段完全相同,其共享库映射空间也有一定重复率,部分进程的代码段页面,也有一定重复率。

s2:根据所述内存布局模板,对虚拟机的内存分段进行快照,得到内存快照;

s3:计算每个所述内存快照的指纹值;

需要说明的是,使用指纹值索引是数据删重技术中的最常用方法,易于实现,且效率高。

s4:查询所述内存快照的指纹值是否在过滤器中,如果在,则不上传该内存快照,如果不在,则上传该内存快照。

需要说明的是,可以但不限于利用bloomfilter协同源端和目的端去重的方式,以对相同内容的内存快照区域只保存一份,最终优化内存快照的存储和传输带宽。

通过上述描述可知,本申请实施例提供的第一种支持内存快照重复数据删除的存储方法,由于包括识别虚拟机操作系统的类型,构造内存布局模板;根据所述内存布局模板,对虚拟机的内存分段进行快照,得到内存快照;计算每个所述内存快照的指纹值;查询所述内存快照的指纹值是否在过滤器中,如果在,则不上传该内存快照,如果不在,则上传该内存快照,因此能够只保存一份相同内容的内存快照区域,达到优化内存快照的存储和传输带宽的目的。

本申请实施例提供的第二种支持内存快照重复数据删除的存储方法,是在上述第一种支持内存快照重复数据删除的存储方法的基础上,还包括如下技术特征:

所述查询内存快照的指纹值是否在过滤器中之后还包括:

对于所述过滤器无法正确过滤的内存快照,在存储端进行所述内存快照的指纹值的二次校验,如果所述存储端存在所述内存快照,则不保存所述内存快照。

需要说明的是,该步骤是为了消除过滤器必然存在的误差,从而更好的保证过滤的准确性。

本申请实施例提供的第三种支持内存快照重复数据删除的存储方法,是在上述第一种支持内存快照重复数据删除的存储方法的基础上,还包括如下技术特征:

在所述查询所述内存快照的指纹值是否在过滤器中之前,还包括:

将所述过滤器保存在运行所述虚拟机的宿主机上。

需要说明的是,虚拟机运行在宿主机上,因此这里讲过滤器保存在该宿主机上。

本申请实施例提供的第四种支持内存快照重复数据删除的存储方法,是在上述第一种支持内存快照重复数据删除的存储方法的基础上,还包括如下技术特征:所述计算每个所述内存快照的指纹值为:

利用sha1算法计算每个所述内存快照的指纹值。

需要说明的是,该sha1算法(安全哈希算法,securehashalgorithm)主要适用于数字签名标准(digitalsignaturestandarddss)里面定义的数字签名算法(digitalsignaturealgorithmdsa)。对于长度小于2^64位的消息,sha1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。

本申请实施例提供的第五种支持内存快照重复数据删除的存储方法,是在上述第一种至第四种支持内存快照重复数据删除的存储方法中任一种的基础上,还包括如下技术特征:

所述过滤器为bloomfilter。

这种过滤器具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此bloomfilter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见bloomfilter是牺牲了正确率和时间以节省空间。

本申请实施例提供的第一种支持内存快照重复数据删除的存储装置如图2所示,图2为本申请实施例提供的第一种支持内存快照重复数据删除的存储装置的示意图,该装置包括:

构造单元201,用于识别虚拟机操作系统的类型,构造内存布局模板,以linux系统为例,其虚拟机内存空间布局类似,对于相同的linux内核,其内核地址空间内核代码段完全相同,其共享库映射空间也有一定重复率,部分进程的代码段页面,也有一定重复率;

快照单元202,用于根据所述内存布局模板,对虚拟机的内存分段进行快照,得到内存快照;

计算单元203,用于计算每个所述内存快照的指纹值;

查询单元204,用于查询所述内存快照的指纹值是否在过滤器中,如果在,则不上传该内存快照,如果不在,则上传该内存快照,可以但不限于利用bloomfilter协同源端和目的端去重的方式,以对相同内容的内存快照区域只保存一份,最终优化内存快照的存储和传输带宽。

本申请实施例提供的第二种支持内存快照重复数据删除的存储装置,是在上述第一种支持内存快照重复数据删除的存储装置的基础上,还包括如下技术特征:

校验单元,用于对于所述过滤器无法正确过滤的内存快照,在存储端进行所述内存快照的指纹值的二次校验,如果所述存储端存在所述内存快照,则不保存所述内存快照,这是为了消除过滤器必然存在的误差,从而更好的保证过滤的准确性。

本申请实施例提供的第三种支持内存快照重复数据删除的存储装置,是在上述第一种支持内存快照重复数据删除的存储装置的基础上,还包括如下技术特征:

保存单元,用于将所述过滤器保存在运行所述虚拟机的宿主机上。

本申请实施例提供的第四种支持内存快照重复数据删除的存储装置,是在上述第一种支持内存快照重复数据删除的存储装置的基础上,还包括如下技术特征:

所述计算单元具体用于利用sha1算法计算每个所述内存快照的指纹值。

需要说明的是,该sha1算法(安全哈希算法,securehashalgorithm)主要适用于数字签名标准(digitalsignaturestandarddss)里面定义的数字签名算法(digitalsignaturealgorithmdsa)。对于长度小于2^64位的消息,sha1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。

本申请实施例提供的第五种支持内存快照重复数据删除的存储装置,是在上述第一种至第四种支持内存快照重复数据删除的存储装置中任一种的基础上,还包括如下技术特征:

所述查询单元具体用于查询所述内存快照的指纹值是否在bloomfilter中,如果在,则不上传该内存快照,如果不在,则上传该内存快照。

这种过滤器具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此bloomfilter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见bloomfilter是牺牲了正确率和时间以节省空间。

综上所述,上述方案对每个虚拟机的内存进行分段指纹计算,利用源端去重优化了内存快照时宿主机与存储间的传输带宽,利用目的端去重,降低了后端数据存储的空间占用,最终以达到对相同内容的内存快照区域只保存一份,优化内存快照的存储和传输带宽的目的,适用于大规模的云环境场景。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页 1 2
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1