System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及存储,尤其涉及一种数据指纹清理方法、装置和设备。
技术介绍
1、在分布式存储领域,重复数据删除技术可以有效地减少存储空间的占用,提升数据传输效率。
2、实现重复数据删除的通常做法如下:
3、(1)将待存储的数据切分为较小的数据块。
4、(2)计算数据指纹,通常的做法是对数据块进行哈希计算,得到唯一的哈希值,将计算的哈希值作为数据块的指纹保存在哈希索引表(亦称为指纹表)中。常见的哈希函数有md5、sha-1等。数据块指纹具有唯一性,指纹表可以用于快速比对数据片段的重复性,避免存储重复的数据。
5、(3)在存储新数据块时,先进行哈希计算并利用指纹表进行数据指纹的比对,当新数据块的指纹已存在,则表示存储系统中已经存储有相同的数据块,为避免存储重复数据,现有技术在指纹表中记录该数据块的引用计数,通过引用计数来表征指纹对应的数据块在存储系统中被引用的次数。增加一次引用计数相当于删除一次重复数据,本专利技术将重复数据删除简称为重删,将未实际存储但通过指纹引用已存储的数据的数据简称为“重删数据”。
6、(4)当发生针对已建立指纹的数据块的覆盖写时,会对指纹表中该数据块的指纹引用计数进行减计。本专利技术将覆盖写重删数据块的过程简称为“重删数据覆盖写”,当某个指纹的引用计数为零时,就可从指纹表中删除该指纹并将该指纹对应重定向聚合地址的数据块标记为垃圾数据。
7、分布式存储系统中指纹表通常也采取分布式存储方式。首先通过哈希算法计算出指纹的哈希值,然后使用该哈希值计
技术实现思路
1、有鉴于此,本专利技术提供一种数据指纹清理方法、装置和设备,用于解决分布式存储系统中指纹清理效率低的技术问题。
2、基于本专利技术实施例的一方面,本专利技术提供了一种数据指纹清理方法,该方法应用于分布式存储中的存储引擎,在主控节点的同步控制下,存储引擎执行如下清理指纹过程:
3、挂起重删服务;
4、在所有存储引擎都完成挂起重删服务步骤后,执行对写时重定向数据库的扫描指纹步骤以识别出指纹表中的有效指纹;
5、在所有存储引擎都完成扫描指纹步骤后,执行清理指纹步骤,从指纹表中删除无效指纹;
6、在所有存储引擎都完成清理指纹步骤后,恢复重删服务。
7、进一步地,所述扫描指纹步骤识别出指纹表中的有效指纹的方法为:
8、遍历写时重定向数据库,将写时重定向数据库记录引用的指纹识别为有效指纹;
9、将识别的有效指纹发送给指纹归属的存储引擎,以使指纹归属的存储引擎标识出所有归属自己的指纹当中的有效指纹;
10、接收归属自己的有效指纹,并标识出所有归属自己的指纹当中的有效指纹。
11、进一步地,所述写时重定向数据库row db为键值型数据库,用于持久化小i/o写入数据到大i/o写入数据块之间的重定向聚合映射关系;
12、所述写时重定向数据库记录引用的指纹为重删类型的值字段中引用的指纹。
13、进一步地,所述标识出所有归属自己的指纹当中的有效指纹的方法为:
14、根据接收的归属自己的有效指纹生成指纹有效性位图,通过指纹有效性位图标识出所有归属自己的指纹当中的有效指纹;所述指纹有效性位图中的每个二进制位对应一个归属自己的指纹,置位为1的二进制位对应的指纹为有效指纹,为0的二进制位对应的指纹代表无效指纹。
15、进一步地,所述清理指纹步骤从指纹表中删除无效指纹的方法为:
16、遍历本地指纹表,删除指纹表中所述指纹有效性位图为0的二进制位对应的无效指纹。
17、进一步地,在生成指纹有效性位图之前,还包括将接收到的有效指纹持久化到指纹引用表的步骤,所述指纹引用表用于在掉电时重新生成所述指纹有效性位图。
18、进一步地,触发所述主控节点指令各存储引擎执行清理指纹过程的方法为:
19、存储引擎统计本节点自上次执行完清理指纹过程后,发生重删数据覆盖写的次数并基于预设的上报策略将重删数据覆盖写次数上报给主控节点;
20、主控节点接收所有存储引擎上报的重删数据覆盖写次数并加和,判断加和后的总重删覆盖写计数是否达到或超过预设的水位线值,若判定达到或超过了预设水位线值,则触发主控节点指令各存储引擎执行清理指纹过程。
21、进一步地,所述方法还包括:当存储引擎统计的重删数据覆盖写次数达到或超过预设的计数持久化阈值的整数倍时,将重删数据覆盖写次数进行持久化。
22、进一步地,所述主控节点基于指纹清理状态机来同步分布式存储系统中所有存储引擎的在执行清理指纹过程中的状态。
23、基于本专利技术实施例的另一方面,本专利技术还提供一种数据指纹清理装置,该装置应用于分布式存储中的存储引擎,所述存储引擎中包括主控节点,该装置包括:
24、指纹清理控制模块,用于与分布式存储系统中的其它存储引擎的指纹清理控制模块信息交互,在主控节点的指纹清理控制模块的同步控制下,协调清理指纹过程中的状态,同步执行清理指纹过程;在清理指纹过程的开始和结束阶段开启和关闭重删服务;
25、重删覆盖写计数模块,用于统计本节点自上次执行完清理指纹过程后,发生重删数据覆盖写的次数,以及将统计数据上报给主控节点的指纹清理控制模块;
26、扫描指纹模块,用于根据主控节点的指纹清理控制模块发送的扫描指纹消息执行扫描指纹步骤,遍历本地写时重定向数据库,将扫描到的有效指纹通过指纹引用消息发送给指纹归属的存储引擎;
27、指纹有效性位图生成模块,用于接收各存储引擎发送的指纹引用消息,生成指纹有效性位图,通过指纹有效性位图标识出所有归属自己的指纹当中的有效指纹;
28、清理指纹模块,用于根据主控节点中的指纹清理控制模块发送的清理指纹消息执行清理指纹步骤,根据指纹有效性位图从指纹表中删除被标识为无效指纹的指纹记录。
29、进一步地,所述写时重定向数据库row db为键值型数据库,用于持久化小i/o写入数据到大i/o写入数据块之间的重定向聚合映射关系;
30、所述写时重定向数据库记录引用的指纹为重删类型的值字段中引用的指纹。
31、进一步地,所述指纹有效性位图生成模块还用于在生成指纹有效性位图之前,将接收到的有效指纹持久化到指纹引用表的步骤,所述指纹引用表用于在掉电时重新生成所述指纹有效性位图。
32、进一步地,所述主控节点的指纹清理控制模块中包括:
33、触发判断模块,用于接收各存储引擎的重删覆盖写计数模块上报的重删数据覆盖写次数并加和,判断加和后的总重删本文档来自技高网...
【技术保护点】
1.一种数据指纹清理方法,其特征在于,该方法应用于分布式存储中的存储引擎,在主控节点的同步控制下,存储引擎执行如下清理指纹过程:
2.根据权利要求1所述的方法,其特征在于,所述扫描指纹步骤识别出指纹表中的有效指纹的方法为:
3.根据权利要求2所述的方法,其特征在于,
4.根据权利要求2所述的方法,其特征在于,所述标识出所有归属自己的指纹当中的有效指纹的方法为:
5.根据权利要求4所述的方法,其特征在于,所述清理指纹步骤从指纹表中删除无效指纹的方法为:
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,触发所述主控节点指令各存储引擎执行清理指纹过程的方法为:
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
9.根据权利要求1所述的方法,其特征在于,
10.一种数据指纹清理装置,其特征在于,该装置应用于分布式存储中的存储引擎,所述存储引擎中包括主控节点,该装置包括:
11.根据权利要求10所述的装置,其
12.根据权利要求10所述的装置,其特征在于,
13.根据权利要求10所述的装置,其特征在于,所述主控节点的指纹清理控制模块中包括:
14.根据权利要求13所述的装置,其特征在于,
15.一种电子设备,其特征在于,包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过通信总线完成相互间的通信;
16.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至9中任一项所述的方法。
...【技术特征摘要】
1.一种数据指纹清理方法,其特征在于,该方法应用于分布式存储中的存储引擎,在主控节点的同步控制下,存储引擎执行如下清理指纹过程:
2.根据权利要求1所述的方法,其特征在于,所述扫描指纹步骤识别出指纹表中的有效指纹的方法为:
3.根据权利要求2所述的方法,其特征在于,
4.根据权利要求2所述的方法,其特征在于,所述标识出所有归属自己的指纹当中的有效指纹的方法为:
5.根据权利要求4所述的方法,其特征在于,所述清理指纹步骤从指纹表中删除无效指纹的方法为:
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,触发所述主控节点指令各存储引擎执行清理指纹过程的方法为:
8.根据权利要求7所述的方法,其特征在于,所述方法还包括...
【专利技术属性】
技术研发人员:毛培霖,
申请(专利权)人:新华三云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。