掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理方法、装置、服务器及存储介质

文献发布时间:2023-06-19 16:11:11



技术领域

本申请涉及计算机存储技术领域,尤其涉及一种数据处理方法、装置、服务器及存储介质。

背景技术

随着信息化的发展,数据量正在高度增长,如何有效地对数据进行保护、存储显得尤为重要,为了确保数据的安全或者对不常用的数据进行归档保护,往往需要结合备份软件进行数据保护。数据增长量越来越大,重复的数据也越来越多,不管是对数据进行备份还是归档,需要传输的数量过多,会造成网络带宽压力过大以及备份时长过长,同时也造成了存储空间的巨大浪费。因此很多备份软件都提供了数据重删的功能,旨在减少数据的传输量或者存储量。然而重删因涉及到数据分块,指纹计算,指纹判重等过程,整个过程执行速率较慢,严重影响了备份软件的备份速率。一般而言,数据重删可分为文件重删、定长块重删、不定长块重删,就执行速率而言,定长块重删低于文件重删,而高于不定长块重删,而反映重复数据比例的重删率则和执行速率刚好相反。在不影响数据的重删率的前提下,如何提高重删的执行速率是一大难题。

相关技术中,并行处理可以在一定程度上解决传统单线程的磁盘索引表I/O访问瓶颈。在并行重删的过程中,全局指纹索引表在多线程访问修改下,要确保唯一性,可以采用锁的同步机制,然而并行重删下的全局数据块索引表因为要确保一致性而会消耗大量的CPU资源和I/O资源,影响其它业务的正常访问,且数据重删速率不高。

发明内容

有鉴于此,本申请实施例提供一种数据处理方法、装置、服务器及存储介质,以至少解决相关技术中并行重删影响其它业务的正常访问,数据重删速率不高的问题,减少并行重删过程中资源消耗,提高数据重删速率。

本申请实施例的技术方案是这样实现的:

本申请实施例提供了一种数据处理方法,所述方法包括:

确定至少一个数据块中的每个数据块的第一参数;所述第一参数通过计算数据块的第一指纹值中至少两个字符的ASCII值之和得到;所述第一指纹值通过第一哈希算法得到;

根据对应的第一参数,以及根据预先创建的至少两个第一索引表的第一数量,为所述至少一个数据块中的每个数据块分配一个第一索引表;所述第一索引表用于记录第一服务器中存储的数据块对应的第一索引和对应的第一指纹值;

根据所述至少一个数据块中的每个数据块的第一指纹值和对应分配的第一索引表,在数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,将数据块存入所述第一服务器。

其中,上述方案中,所述方法还包括:

在数据块的第一指纹值在对应分配的第一索引表中已存在的情况下,基于布隆过滤器判断所述第一服务器中是否存储有对应的数据块,得到对应的判断结果;

在对应的判断结果表征所述第一服务器中未备份有对应的数据块的情况下,将数据块存入所述第一服务器。

上述方案中,所述方法还包括:

在对应的判断结果不能表征所述第一服务器中未备份有对应的数据块的情况下,根据对应的数据块的第二指纹值和第二索引表,在数据块的第二指纹值在第二索引表中不存在的情况下,将数据块存入所述第一服务器;其中,

所述第二指纹值通过第二哈希算法得到;所述第二索引表用于记录所述第一服务器中存储的数据块对应的第二索引和对应的第二指纹值。

上述方案中,所述第一哈希算法表征弱哈希算法;所述第二哈希算法表征强哈希算法。

上述方案中,所述方法还包括:

在数据块的第二指纹值在第二索引表中已存在的情况下,放弃将数据块存入所述第一服务器。

上述方案中,所述确定至少一个数据块中的每个数据块的第一参数时,所述方法包括:

通过计算数据块的第一指纹值的首位字符和末位字符的ASCII值之和,得到数据块的第一参数。

上述方案中,所述方法还包括:

对存入所述第一服务器的数据块进行备份。

上述方案中,所述确定至少一个数据块中的每个数据块的第一参数之前,所述方法还包括:

根据存储在第一服务器的数据,对所述至少一个数据块进行重删处理。

上述方案中,所述确定至少一个数据块中的每个数据块的第一参数之前,所述方法还包括:

为所述至少一个数据块中的每个数据块分配线程;

在分配的线程的第二数量大于所述第一数量的情况下,对所述至少两个第一索引表分配同步锁。

本申请实施例还提供了一种数据处理装置,包括:

第一确定单元,用于确定至少一个数据块中的每个数据块的第一参数;所述第一参数通过计算数据块的第一指纹值中至少两个字符的ASCII值之和得到;所述第一指纹值通过第一哈希算法得到;

第一分配单元,用于根据对应的第一参数,以及根据预先创建的至少两个第一索引表的第一数量,为所述至少一个数据块中的每个数据块分配一个第一索引表;所述第一索引表用于记录第一服务器中存储的数据块对应的第一索引和对应的第一指纹值;

第一存储单元,用于根据所述至少一个数据块中的每个数据块的第一指纹值和对应分配的第一索引表,在数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,将数据块存入所述第一服务器。

本申请实施例还提供了一种服务器,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,

其中,所述处理器用于运行所述计算机程序时,执行上述数据处理方法的步骤。

本申请实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。

在本申请实施例中,通过第一哈希算法得到第一指纹值,计算数据块的第一指纹值中至少两个字符的ASCII值之和,得到至少一个数据块中的每个数据块的第一参数,根据对应的第一参数,以及根据预先创建的至少两个第一索引表的第一数量,为每个数据块分配一个第一索引表,第一索引表用于记录第一服务器中存储的数据块对应的第一索引和对应的第一指纹值,根据每个数据块的第一指纹值和对应分配的第一索引表,在数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,将数据块存入第一服务器。这样,通过并行索引实现数据块指纹值处理,将数据块根据指定算法均衡分配索引表,使数据块分配索引表的过程随机,从而实现加快数据重删速率的效果。

附图说明

图1为本申请实施例提供的一种数据处理方法的流程示意图;

图2为本申请应用实施例提供的一种数据处理方法的流程示意图;

图3为本申请应用实施例提供的另一种数据处理方法的流程示意图;

图4为本申请应用实施例提供的另一种数据处理方法的流程示意图;

图5为本申请实施例提供的一种数据处理装置的结构示意图;

图6为本申请实施例提供的一种服务器的结构示意图。

具体实施方式

相关技术中,并行重删下的全局数据块索引表因为要确保一致性而会消耗大量的CPU资源和I/O资源,影响其它业务的正常访问,且数据重删速率不高。

基于此,在本申请的各种实施例中,通过第一哈希算法得到第一指纹值,计算数据块的第一指纹值中至少两个字符的ASCII值之和得到至少一个数据块中的每个数据块的第一参数,根据对应的第一参数,以及根据预先创建的至少两个第一索引表的第一数量,为每个数据块分配一个第一索引表,第一索引表用于记录第一服务器中存储的数据块对应的第一索引和对应的第一指纹值,根据每个数据块的第一指纹值和对应分配的第一索引表,在数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,将数据块存入第一服务器。

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为本申请实施例提供的数据处理方法的实现流程示意图。如图1示出的数据处理方法包括:

步骤101:确定至少一个数据块中的每个数据块的第一参数。

其中,所述第一参数通过计算数据块的第一指纹值中至少两个字符的ASCII值之和得到;所述第一指纹值通过第一哈希算法得到。

将待备份文件进行分块,得到至少一个数据块,采用第一哈希算法计算至少一个数据块中的每个数据块的第一指纹值,提取第一哈希算法计算的第一指纹值中的至少两个设定位的字符,计算提取的字符的ASCII值之和,从而确定每个数据块的第一参数。这里,第一哈希算法可以是强哈希算法,也可以是弱哈希算法;字符包括数字或字母;实际应用中,设定位可以是首位和末位,可以是首两位,也可以是第四到第六位,根据需要设定字符提取的设定位。

其中,在一实施例中,所述确定至少一个数据块中的每个数据块的第一参数时,所述方法包括:

通过计算数据块的第一指纹值的首位字符和末位字符的ASCII值之和,得到数据块的第一参数。

这里,使用第一哈希算法计算至少一个数据块中的每个数据块的第一指纹值,提取第一指纹值的首位和末位的字符,计算提取的字符的ASCII值之和,确定每个数据块的第一参数。采用并行索引,可以减少备份的机器资源消耗。

在一实施例中,所述确定至少一个数据块中的每个数据块的第一参数之前,所述方法还包括:

根据存储在第一服务器的数据,对所述至少一个数据块进行重删处理。

在确定至少一个数据块中的每个数据块的第一参数之前,根据第一服务器中存储的数据对至少一个数据块进行源端重删,这里,第一服务器存储有已备份的数据。因为已经备份在第一服务器中的数据不再需要进行备份,通过对数据进行源端重删,可以减少重删、备份的数据量,提高了重删执行速率和备份速率。

在一实施例中,所述确定至少一个数据块中的每个数据块的第一参数之前,所述方法还包括:

为所述至少一个数据块中的每个数据块分配线程;

在分配的线程的第二数量大于所述第一数量的情况下,对所述至少两个第一索引表分配同步锁。

在确定至少一个数据块中的每个数据块的第一参数之前,为每个数据块分配线程,当分配的线程的第二数量大于第一索引表的第一数量,会出现多于一个线程同时共用一个第一索引表的情况,存在写同步问题,对每个第一索引表分配同步锁,可以在多线程访问修改下确保唯一性。

步骤102:根据对应的第一参数,以及根据预先创建的至少两个第一索引表的第一数量,为所述至少一个数据块中的每个数据块分配一个第一索引表。

如果两个数据块是相同的,通过第一哈希算法得到的第一指纹值相同,因而提取设定位字符计算得到的第一参数也相同。这样,在后续每个数据块分配一个第一索引表时,相同的数据块会分到同一个第一索引表,能够实现所有数据块均衡分配第一索引表,这里,所述第一索引表用于记录第一服务器中存储的数据块对应的第一索引和对应的第一指纹值。

根据至少一个数据块中的每个数据块的第一参数λ,和预先创建的至少两个第一索引表的第一数量n,通过以第一索引表的个数对第一参数取余数ξ=λmodn,为每个数据块分配一个第一索引表,第一索引表中记录了第一服务器中存储的数据块对应的第一索引和对应的第一指纹值。

例如,预先创建了5个第一索引表,6个数据块的第一参数分别为11、15、6、38、2、29,取余数分别为1、0、1、3、2、4,对应分别分配第2个、第1个、第2个、第4个、第3个、第5个第一索引表。由于相同数据块计算相同设定位的字符的ASCII值的结果相同,在分配第一索引表时,将分布式节点均衡的思想运用到重删的并行处理模块,相同的数据块会被分到同一个第一索引表,不同的数据块根据指定算法可以均衡分配到不同的第一索引表,从而能够充分实现数据块并行重删,且每个子索引表互不干涉,能够达到一定的负载均衡,加快数据重删速率。

步骤103:根据所述至少一个数据块中的每个数据块的第一指纹值和对应分配的第一索引表,在数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,将数据块存入所述第一服务器。

考虑到数据块的第一指纹值在对应分配第一索引表的数据块中不存在,才将数据块存入所述第一服务器,即第一服务器中存储的数据块是没有重复数据块的数据块,第一索引表中记录了已分配第一索引表的数据块对应的第一索引和对应的第一指纹值;当数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,说明该数据块与已分配第一索引表的数据块都不相同,将该数据块存入第一服务器,以便后续备份。

在一实施例中,所述方法还包括:

在数据块的第一指纹值在对应分配的第一索引表中已存在的情况下,基于布隆过滤器判断所述第一服务器中是否存储有对应的数据块,得到对应的判断结果;

在对应的判断结果表征所述第一服务器中未备份有对应的数据块的情况下,将数据块存入所述第一服务器。

布隆过滤器是一种以哈希表作为基础的算法,在数据块的第一指纹值在对应分配的第一索引表中已存在的情况下,再经过布隆过滤器筛选判断数据块是否为不重复的数据块,能够快速判断大部分不存在于集合中的元素,得到对应的判断结果,如果判断结果为数据块不重复的情况下,将数据块存入所述第一服务器。实际应用中,采用至少一种第三哈希算法进行bit位数据组的映射,当发现数据块的所有映射位不全是1时,可判断该数据块为不重复数据块,保存该数据块,这里,第三哈希算法可以是弱哈希算法,也可以是强哈希算法。这样,利用布隆过滤器,能够快速判断数据块不存在于指纹索引表中,从而加快检索速率。

考虑到数据重删涉及到数据安全,通过鉴别数据块的指纹,如果两个数据块的指纹相同,则认为该数据块是重复的,不保留该数据块,对数据进行还原时,则根据文件的元数据表找到相应每个数据块的第一指纹值,然后根据数据块指纹进行数据块还原。如果两个不同的数据块产生了碰撞,即数据块碰撞,认为是同一个数据块,则会造成数据丢失和改写,导致数据信息失真。在一实施例中,所述方法还包括:

在对应的判断结果不能表征所述第一服务器中未备份有对应的数据块的情况下,根据对应的数据块的第二指纹值和第二索引表,在数据块的第二指纹值在第二索引表中不存在的情况下,将数据块存入所述第一服务器;

其中,所述第二指纹值通过第二哈希算法得到;所述第二索引表用于记录所述第一服务器中存储的数据块对应的第二索引和对应的第二指纹值。

当布隆过滤器不能给出数据块不重复的结论时,采用第二哈希算法计算至少一个数据块中的每个数据块的第二指纹值,提取第二哈希算法计算的第二指纹值中的至少两个设定位的字符,计算提取的字符的ASCII值之和,从而确定每个数据块的第二参数。这里,第二哈希算法可以是强哈希算法,也可以是弱哈希算法;字符包括数字或字母;实际应用中,设定位可以是首位和末位,可以是首两位,也可以是第四到第六位,根据需要设定字符提取的设定位。

在本实施例中,如果两个数据块是相同的,通过第二哈希算法得到的第二指纹值相同,因而提取设定位字符计算的第二参数也相同。这样,在后续每个数据块分配一个第二索引表时,相同的数据块会分到同一个第二索引表,能够实现所有数据块均衡分配第二索引表,第二索引表中记录了已分配第二索引表的数据块对应的第二索引和对应的第二指纹值;当数据块的第二指纹值在根据指定算法分配的第二索引表中不存在的情况下,说明该数据块与已分配第二索引表的数据块都不相同,将该数据块存入第一服务器,以便后续备份。组合使用多种Hash算法组合方式,能更好地保护数据的一致性,可以减低因为哈希冲突而造成数据误删的几率,提高数据重删的可靠性和安全性。

在一实施例中,所述方法还包括:

在数据块的第二指纹值在第二索引表中已存在的情况下,放弃将数据块存入所述第一服务器。

当布隆过滤器不能给出数据块不重复的结论时,采用第二哈希算法计算至少一个数据块中的每个数据块的第二指纹值,可以通过提取第二哈希算法计算的第二指纹值中的至少两个设定位的字符,计算提取的字符的ASCII值之和,从而确定每个数据块的第二参数,分配第二索引表时,相同的数据块会分到同一个第二索引表,能够实现所有数据块均衡分配第二索引表,第二索引表中记录了已重删过的数据块对应的第二索引和对应的第二指纹值;当数据块的第二指纹值在根据指定算法分配的第二索引表中存在的情况下,说明该数据块与已经执行过重删的数据块相同,放弃数据块的保存,仅记录索引和元数据。通过组合使用哈希算法,可以实现提高数据重删速率的效果。

考虑到数据去重涉及到数据安全,主要包括数据块碰撞,是通过鉴别数据块的指纹,如果两个数据块的指纹相同,则认为该数据块是重复的,则不保留该数据块,对数据进行还原时,则根据文件的元数据表找到相应每个数据块指纹,然后根据数据块指纹进行数据块还原。如果两个不同的数据块产生了碰撞,认为是同一个数据块,则会造成数据丢失和改写,导致数据信息失真。

在一实施例中,所述第一哈希算法表征弱哈希算法;所述第二哈希算法表征强哈希算法。

这里,在分配第一索引表时,采用弱哈希算法,使得不同数据块快速均衡地分配到不同重删通道,再采用强哈希算法进行二重判断数据块是否为重复数据块,同时通过强弱哈希结合,降低哈希冲突而造成数据误删的几率,提高数据重删的可靠性和安全性。

在一实施例中,所述方法还包括:

对存入所述第一服务器的数据块进行备份。

这里,对已存入第一服务器的数据块进行备份,可以将数据备份至第一服务器其他存储盘,也可以将数据备份至第二服务器存储盘,起到数据处理后的备份作用,也可以供下次进行数据处理时进行源端重删。

下面结合应用实施例对本申请再作进一步的详细描述。

参照图2示出的应用实施例:

步骤1:用户在备份软件管理平台前端页面设置备份策略,触发备份命令。

步骤2:备份软件管理平台发送备份指令,使备份模块功能生效。

步骤3:再根据用户设置向介质管理服务器发送备份/反向代理指令,同时向重删服务器发送重删指令。

步骤4:介质管理服务器收到备份/反向代理指令,根据指令中分配参数或者默认参数分配相应大小的存储卷。

步骤5:重删服务器收到重删指令后,重删服务器克隆重删池快照。

步骤6:介质管理服务器将步骤4创建存储卷映射到客户端,完成介质管理服务器存储卷的反向代理,而使得客户端能够访问已代理过来的存储卷。

步骤7:重删服务器将步骤5克隆的重删池快照映射到客户端,完成重删池的反向代理,从而使得客户端能够访问已代理过来的重删池。

步骤8:客户端接收备份软件管理平台发送的备份指令,对介质管理服务器反向代理的存储卷进行格式化,并挂载该存储卷,使得客户端可对该存储卷进行读写操作;并对映射过来的重删池执行直接挂载命令,使得客户端对该重删池快照有读写操作能力。

步骤9:在客户端对介质管理服务器反向代理的存储卷进行格式化的同时,客户端利用代理过来的重删池对备份数据源进行源端重删。

步骤10:客户端根据设定的一定线程数实现并行索引设计模块,在并行重删通道中,将数据块均衡分配到各自线程中和对应的子索引进行重删。

步骤11:对已进行重删的数据进行备份,并将数据备份到存储卷,将反向代理过来的重删池进行卸载,取消映射。

步骤12:备份完毕后对反向代理的存储卷进行卸载和取消映射。

上述应用实施例步骤10中,客户端根据设定的线程数实现并行索引设计模块,如图3所示,其包含如下步骤:

步骤10A-1:对待备份文件进行不定长分块,开启多线程,即下述步骤进行并行处理;

步骤10A-2:对已分块的数据块采用弱哈希算法计算其指纹值str;

步骤10A-3:提取弱哈希算法计算的指纹值str的首位数字或者字母α,以及末尾数字或者字母β;此时如果两个数据块是相同的,则计算出来的λ也相同;

步骤10A-4:取α和β的ASCII值,并进行相加得λ=ascii(α)+ascii(β);

步骤10A-5:假设设计的线程数为n,并行索引表的个数也为n,通过ξ=λmodn,在数量为n的并行索引表中进行映射,实现相同数据块分配同一个子索引表,ξ的随机性能够实现所有数据块均衡分配子索引。

上述应用实施例步骤10中,客户端根据设定的线程数实现并行索引设计模块,在并行重删通道中,将数据块均衡分配到各自线程中和对应的子索引进行重删,如图4所示,其具体步骤如下:

步骤10B-1:分配子索引表:根据上述步骤10A-1至10A-5的并行索引设计模块流程,为每一个线程下的数据块分配子索引表,根据并行索引设计模块的分析可知,相同数据块会分配同一个子索引表,不同数据块能够均匀分配不同子索引表。其中,如果m个线程(m≤n,n为总线程数)下的数据块指纹哈希映射同一个子索引表,则这m个线程下共用一个子索引表,会存在写同步问题,此时需对单独的每个子索引表分配同步锁;如果m个线程下的数据块指纹哈希映射到m个不同子索引表,则m个子索引表彼此读写独立,不同子索引间的不需要写同步锁;

步骤10B-2:弱哈希指纹初步判重:根据步骤10B-1分配子索引表用到的弱哈希指纹进行初步判重,如果判断指纹不存在,则认为数据块不重复,需要保存该数据块,并记录索引和元数据,然后执行数据备份功能,由备份软件完成后续备份操作;如果判断指纹存在,则无法判断数据块是否重复,需要进入到步骤10B-3。

步骤10B-3:布隆过滤器判断数据是否为不重复数据:采用3种不同的弱哈希算法来进行bit位数据组的映射:当发现该数据块的所有映射位不全是1时,根据布隆过滤器的特点,可以判断该元素不存在,即可判断该数据块为不重复数据块,需要保存该数据块,并记录索引和元数据,并执行数据备份功能,数据重删环节结束;当发现该数据块的所有映射位都是1,则无法判断该数据块是否为重复数据,还需执行步骤10B-4。

步骤10B-4:强哈希二重判断:当步骤10B-3的布隆过滤器过滤后无法判断的数据将由本步骤进行二重判断:首先利用强哈希算法计算数据块的指纹,检索子索引表,如果计算出来的指纹在子索引表中能检索出来,就认为该数据块重删,因此放弃该数据块的保存,仅记录索引和元数据;如果判断该数据块不重复,则保存该数据块,同时记录索引和元数据,进入数据备份阶段。

应用实施例提出一种基于并行索引的数据处理方法,该方法通过将存储卷反向代理至客户端,使得客户端程序能够访问存储卷;根据设定的一定线程数实现并行索引,客户端待备份的文件数据被划分成不同数据块,并分配并行子索引表,从而数据块就能均衡分配到各自线程中和对应的子索引中进行重删;进一步将重删后的数据被备份至反向代理过来的存储卷中,待所有数据备份完毕,对存储卷进行卸载和取消映射。该方法主要通过并行索引加快数据块检索速度,通过数据重删减少备份数据量,减少整个备份过程中带宽压力和存储压力。

结合图2对应的数据处理装置的结构示意图,包括以下模块:

1、备份软件管理平台:软件功能对应的业务流程均通过备份软件管理平台前端的完成串联,正常的调度配置、时间窗口、作业监控、数据管理等功能都由备份软件管理平台前端配置管理完成。

2、备份模块,接收备份软件管理平台发送的备份指令,向介质管理服务器发送备份/反向代理指令,同时向重删服务器发送重删指令。

3、介质管理服务器:将随机存取存储器(RAM,Random Access Memory)、非易失性随机访问存储器(NV-RAM,Non-Volatile Random Access Memory)、NVMe-SSD、PCIe-SSD、SATA/SAS-SSD、SATA/SAS-HDD等不同速率的存储介质统一进行纳管,数据在不同速率的介质间自动完成分层和热迁移操作。

4、重删服务器,克隆重删池快照,客户端可以利用代理过来的重删池对备份数据源进行源端重删,根据已经备份在重删池的快照确定当前需要进行重删处理的数据块。这里,重删服务器和介质管理服务器可以是同一个服务器;

5、客户端:部署于待备份的业务系统主机中,与备份软件管理平台和介质管理服务器通信,完成数据备份恢复功能。

6、并行索引设计模块:该模块对数据块指纹值进行处理,将不同数据块根据指定算法分配不同子索引表,对数据块指纹首尾字符的ASCII值进行相加,将该相加值对线程数取余,实现将相同的数据块分配到同样的子索引表中(相同数据块的指纹相同,因此首尾字符的ASCII值相同,相加后对指定线程数取余后的数值也相同),在同一个子索引表中,除去哈希冲突造成的小概率判重失误外,可以高效地判断数据块是否为重复数据,子索引表的功能就等同于全局索引表的功能。在并行线程中,每个线程只有一个子索引表和分配给该线程的数据块,每个子索引表的读写是相互独立的,同时ASCII值相加取余的数值具有很大的随机性,因此能够对数据块均衡地分配不同子索引表,加大了并行索引表的可行性和效率性。

7、单通道重删模块:采用的是并行通道重删,由n个(n个线程)单通道重删模块组成,每个单通道重删模块主要功能是将单线程下的数据块,利用子索引表加快重删指纹检索时间,根据指定的重删算法判断该数据块是否为重复数据块,最后输出非重复数据块。

8、数据备份:发生在介质管理服务器中,对已进行重删的数据进行备份,并将数据备份到存储卷,将反向代理过来的重删池进行卸载,取消映射,备份完毕后对反向代理的存储卷进行卸载和取消映射。

为实现本申请实施例的方法,本申请实施例还提供了一种数据处理装置,如图5所示,该装置包括:

第一确定单元501,用于确定至少一个数据块中的每个数据块的第一参数;所述第一参数通过计算数据块的第一指纹值中至少两个字符的ASCII值之和得到;所述第一指纹值通过第一哈希算法得到;

第一分配单元502,用于根据对应的第一参数,以及根据预先创建的至少两个第一索引表的第一数量,为所述至少一个数据块中的每个数据块分配一个第一索引表;所述第一索引表用于记录第一服务器中存储的数据块对应的第一索引和对应的第一指纹值;

第一存储单元503,用于根据所述至少一个数据块中的每个数据块的第一指纹值和对应分配的第一索引表,在数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,将数据块存入所述第一服务器。

其中,在一个实施例中,所述装置还包括:

第一判断单元,用于在数据块的第一指纹值在对应分配的第一索引表中已存在的情况下,基于布隆过滤器判断所述第一服务器中是否存储有对应的数据块,得到对应的判断结果。

第二存储单元,用于在对应的判断结果表征所述第一服务器中未备份有对应的数据块的情况下,将数据块存入所述第一服务器。

在一个实施例中,所述装置还包括:

第三存储单元,用于在对应的判断结果不能表征所述第一服务器中未备份有对应的数据块的情况下,根据对应的数据块的第二指纹值和第二索引表,在数据块的第二指纹值在第二索引表中不存在的情况下,将数据块存入所述第一服务器。

在一个实施例中,所述第一哈希算法表征弱哈希算法;所述第二哈希算法表征强哈希算法。

在一个实施例中,所述装置还包括:

放弃单元,用于在数据块的第二指纹值在第二索引表中已存在的情况下,放弃将数据块存入所述第一服务器。

在一个实施例中,所述第一确定单元501用于:

通过计算数据块的第一指纹值的首位字符和末位字符的ASCII值之和,得到数据块的第一参数。

在一个实施例中,所述装置还包括:

备份单元,用于对存入所述第一服务器的数据块进行备份。

在一个实施例中,所述装置还包括:

重删单元,用于根据存储在第一服务器的数据,对所述至少一个数据块进行重删处理。

在一个实施例中,所述装置还包括:

第二分配单元,用于为所述至少一个数据块中的每个数据块分配线程。

第三分配单元,用于在分配的线程的第二数量大于所述第一数量的情况下,对所述至少两个第一索引表分配同步锁。

实际应用时,所述第一确定单元501、第一分配单元502、第一判断单元、放弃单元、第二分配单元、第三分配单元可由基于数据处理装置中的处理器实现,所述第一存储单元503、第二存储单元、第三存储单元、备份单元、重删单元可由基于数据处理装置中的处理器结合通信接口实现。

需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据处理的装置与数据处理的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

基于上述程序模块的硬件实现,且为了实现本申请实施例数据处理方法,本申请实施例还提供了一种服务器,如图6所示,该服务器600包括:

通信接口610,能够与其它设备比如网络设备等进行信息交互;

处理器620,与所述通信接口610连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的方法。而所述计算机程序存储在存储器630上。

具体地,所述处理器620,用于确定至少一个数据块中的每个数据块的第一参数;

其中,所述第一参数通过计算数据块的第一指纹值中至少两个字符的ASCII值之和得到;所述第一指纹值通过第一哈希算法得到。

所述处理器620,还用于根据对应的第一参数,以及根据预先创建的至少两个第一索引表的第一数量,为所述至少一个数据块中的每个数据块分配一个第一索引表;

其中,所述第一索引表用于记录第一服务器中存储的数据块对应的第一索引和对应的第一指纹值。

所述通信接口610,用于在处理器620根据所述至少一个数据块中的每个数据块的第一指纹值和对应分配的第一索引表,确定在数据块的第一指纹值在对应分配的第一索引表中不存在的情况下,将数据块存入所述第一服务器;

其中,在一个实施例中,所述处理器620,还用于在数据块的第一指纹值在对应分配的第一索引表中已存在的情况下,基于布隆过滤器判断所述第一服务器中是否存储有对应的数据块,得到对应的判断结果。

所述通信接口610,还用于在处理器620根据对应的判断结果表征确定所述第一服务器中未备份有对应的数据块的情况下,将数据块存入所述第一服务器。

在一个实施例中,所述通信接口610,还用于在所述处理器620根据对应的判断结果确定不能表征所述第一服务器中未备份有对应的数据块的情况下,在处理器620根据对应的数据块的第二指纹值和第二索引表,确定在数据块的第二指纹值在第二索引表中不存在的情况下,将数据块存入所述第一服务器。

在一个实施例中,所述第一哈希算法表征弱哈希算法;所述第二哈希算法表征强哈希算法。

在一个实施例中,所述处理器620,还用于在数据块的第二指纹值确定在第二索引表中已存在的情况下,放弃将数据块存入所述第一服务器。

在一个实施例中,所述处理器620,还用于通过计算数据块的第一指纹值的首位字符和末位字符的ASCII值之和,得到数据块的第一参数。

在一个实施例中,所述处理器620,还用于对存入所述第一服务器的数据块进行备份。

在一个实施例中,所述处理器620,还用于根据存储在第一服务器的数据,对所述至少一个数据块进行重删处理。

在一个实施例中,所述处理器620,还用于为所述至少一个数据块中的每个数据块分配线程。

所述处理器620,还用于在分配的线程的第二数量大于所述第一数量的情况下,对所述至少两个第一索引表分配同步锁。

当然,实际应用时,服务器600中的各个组件通过总线系统640耦合在一起。可理解,总线系统640用于实现这些组件之间的连接通信。总线系统640除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统640。

本申请实施例中的存储器630用于存储各种类型的数据以支持服务器600的操作。这些数据的示例包括:用于在服务器600上操作的任何计算机程序。

可以理解,存储器630可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是RAM,其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static RandomAccess Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random AccessMemory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random AccessMemory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous DynamicRandom Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink DynamicRandom Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus RandomAccess Memory)。本申请实施例描述的存储器630旨在包括但不限于这些和任意其它适合类型的存储器。

上述本申请实施例揭示的方法可以应用于处理器620中,或者由处理器620实现。处理器620可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器620中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器620可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器620可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器630,处理器620读取存储器630中的程序,结合其硬件完成前述方法的步骤。

可选地,所述处理器620执行所述程序时实现本申请实施例的各个方法中由服务器实现的相应流程,为了简洁,在此不再赘述。

在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器630,上述计算机程序可由电子设备的处理器620执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置、电子设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。除非另有说明和限定,术语“连接”应做广义理解,例如,可以是电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

另外,在本申请实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解“第一\第二\第三”区分的对象在适当情况下可以互换,以使这里描述的本申请的实施例可以除了在这里图示或描述的那些以外的顺序实施。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

在具体实施方式中所描述的各个实施例中的各个具体技术特征,在不矛盾的情况下,可以进行各种组合,例如通过不同的具体技术特征的组合可以形成不同的实施方式,为了避免不必要的重复,本申请中各个具体技术特征的各种可能的组合方式不再另行说明。

相关技术
  • 存储系统的数据处理方法及装置、存储服务器及存储介质
  • 一种数据处理方法、装置及数据交换服务器和存储介质
技术分类

06120114734252