一种基于全闪存阵列的数据压缩方法及系统与流程

文档序号:20682866发布日期:2020-05-08 18:33阅读:172来源:国知局
一种基于全闪存阵列的数据压缩方法及系统与流程

本申请涉及数据存储技术领域,尤其涉及一种基于全闪存阵列的数据压缩方法及系统。



背景技术:

一般地,为了节省数据的存储空间,文件在存储时,会对文件中的数据进行去重压缩,以减小数据的占用空间。

所谓去重,即通过计算数据块的安全哈希摘要(比如sha1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,且重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的。

而在数据去重中,在计算数据块的哈希摘要时,是指计算数据块的强哈希,一般强哈希是指符合安全哈希摘要标准的哈希算法,比如sha1、sha256等,这类哈希的长度一般都比较长(大于20字节),一般认为不同的数据拥有相当的安全哈希摘要的概率几乎不存在,类似于人类指纹的冲突情况,所以在数据去重领域一般使用哈希哈希摘要算法唯一标志数据块,避免重复数据的逐个字节比对。

而现有的去重技术中所采用的强哈希算法,因其计算量较大,且强哈希的长度都比较长(大于20字节),故在计算出第一数据块的强哈希后,在与去重指纹库进行匹配时,所花费的匹配时间较长,从而减慢了数据去重的效率。



技术实现要素:

本申请实施例提供了一种基于全闪存阵列的数据压缩方法及系统,用于提高数据去重的效率,从而提高存储系统的io性能。

本申请实施例第一方面提供了一种基于全闪存阵列的数据压缩方法,该闪存阵列包括:性能层和容量层,该方法包括:

获取所述性能层中的被压缩数据;

将所述被压缩数据切分为预设长度的第一数据块,并计算所述第一数据块的弱哈希值;

将所述第一数据块的弱哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;

若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中。

优选的,所述方法还包括:

若存在所述匹配指纹,则读取所述匹配指纹对应的原始数据块;

将所述第一数据块与所述原始数据块进行匹配,以确定所述第一数据块与所述原始数据块是否完全相同;

若完全相同,则确定所述第一数据块为重复数据块,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。

优选的,所述方法还包括:

若不完全相同,则确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中。

优选的,所述将压缩后的第一数据块回写至所述容量层,包括:

将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍。

优选的,所述方法还包括:

对所述去重指纹库中指纹的引用次数执行计数管理;

所述对所述去重指纹库中指纹的引用次数执行计数管理,包括;

当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;

和,

当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。

优选的,在将压缩后的第一数据块回写至所述容量层之后,所述方法还包括:

将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。

本申请实施例第二方面提供了一种基于全闪存阵列的数据压缩系统,该全闪存阵列包括性能层和容量层,该系统包括:

获取单元,用于获取所述性能层中的被压缩数据;

切分计算单元,用于将所述被压缩数据切分为预设长度的第一数据块,并计算所述第一数据块的弱哈希值;

匹配单元,用于将所述第一数据块的弱哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;

第一压缩单元,用于在若不存在所述匹配指纹时,确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中。

优选的,所述系统还包括:

读取匹配单元,用于在若存在所述匹配指纹时,读取所述匹配指纹对应的原始数据块,将所述第一数据块与所述原始数据块进行匹配,以确定所述第一数据块与所述原始数据块是否完全相同;

去重单元,用于在所述第一数据块与所述原始数据块完全相同时,确定所述第一数据块为重复数据块,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。

优选的,所述系统还包括:

第二压缩单元,用于在所述第一数据块与所述原始数据块不完全相同时,确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中。

优选的,所述第一压缩单元,包括:

第一压缩模块,用于将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍;

所述第二压缩单元,包括:

第二压缩模块,用于用于将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍;

优选的,所述系统还包括:

计数单元,用于对所述去重指纹库中指纹的引用次数执行计数管理;

所述计数单元,包括;

第一计数模块,用于当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;

和,

第二计数模块,用于当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。

优选的,所述系统还包括:

更新单元,用于将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。

本申请实施例还提供了一种基于全闪存阵列的数据压缩系统,包括处理器,该处理器在执行存储于存储器上的计算机程序时,用于实现本申请实施例第一方面提供的基于全闪存阵列的数据压缩方法。

本申请实施例还提供了一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,用于实现本申请实施例第一方面提供的基于全闪存阵列的数据压缩方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例中,从性能层中获取被压缩的数据后,将被压缩的数据切分为预设长度的第一数据块,并计算第一数据块的弱哈希值,并将第一数据块的弱哈希值与去重指纹库进行匹配,并在去重指纹库中不存在与第一数据块的弱哈希值匹配的指纹时,确定第一数据块为非重复数据块,然后对第一数据块进行压缩存储,因为本申请中计算的是第一数据块的弱哈希值,而弱哈希一般指的是计算很快而且哈希长度很短(一般4-8个字节)的哈希算法,主要用于快速数据校验和检索,故本申请可以通过计算第一数据块的弱哈希值,提高在去重数据库中对第一数据块的检索效率,从而提高对数据块的去重效率,提高存储系统的io性能。

附图说明

图1为本申请实施例中基于全闪存阵列的数据压缩方法的一个实施例示意图;

图2为本申请实施例中全闪存阵列的物理架构示意图;

图3为本申请实施例中基于全闪存阵列的数据压缩方法的另一个实施例示意图;

图4a为本申请实施例中数据去重前后逻辑地址及物理地址的示意图;

图4b为本申请实施例中容量层元数据区域中元数据信息的数据逻辑组织关系图;

图5为本申请实施例中对压缩后的第一数据块是以日志追加写的方式进行异地更新的示意图;

图6为本申请实施例中基于全闪存阵列的数据压缩系统的一个实施例示意图;

图7为本申请实施例中基于全闪存阵列的数据压缩系统的另一个实施例示意图。

具体实施方式

本申请实施例提出了一种基于全闪存阵列的数据压缩方法及系统,用于提高数据去重的效率,从而提高存储系统的io性能。

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

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

一般地,为了节省数据的存储空间,文件在存储时,会对文件中的数据进行去重压缩,以减小数据的占用空间。

所谓去重,即通过计算数据块的安全哈希摘要(比如sha1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,且重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的。

而数据压缩也是一种冗余数据消除技术,主要通过编码的方式消除冗余数据信息,即在保证原有数据信息不丢失的前提下,将原始内容进行转换,对于重复的字节序列用更少字节数的编码表示,从而达到消除部分冗余数据并最终节省存储空间的目的。

而在数据去重中,在计算数据块的哈希摘要时,又存在强哈希和弱哈希的情况,一般强哈希是指符合安全哈希摘要标准的哈希算法,比如sha1、sha256等,这类哈希的长度一般都比较长(大于20字节),一般认为不同的数据拥有相当的安全哈希摘要的概率几乎不存在,类似于人类指纹的冲突情况,所以在数据去重领域一般使用哈希哈希摘要算法唯一标志数据块,避免重复数据的逐个字节比对;弱哈希一般指的是计算很快而且哈希长度很短(一般4-8个字节)的哈希算法,这类算法存在冲突的可能(比如万分之一),比较典型的弱哈希有crc32、xxhash等,主要用于快速数据校验和检索。

因为现有的去重技术中都采用强哈希的算法,而强哈希计算量较大,且强哈希的长度都比较长(大于20字节),故在计算出第一数据块的强哈希后,在与去重指纹库进行匹配时,所花费的匹配时间较长,对处理器的占用率较大,从而减慢了数据去重的效率。

针对该问题,本申请提出了基于全闪存阵列的数据压缩方法,请参阅图1,本申请中基于全闪存阵列的数据压缩方法的一个实施例,包括:

101、获取所述性能层中的被压缩数据;

一般的,对于一台带有处理器的设备而言,存储系统的io性能是影响设备系统性能的主要因素,而当设备的外存储器部署为全闪存阵列时,一般的全闪存阵列的物理架构分为容量层和性能层,其中,容量层是指io响应较慢的ssd固态硬盘,或普通硬盘,而性能层是指io响应较快的ssd固态硬盘,具体请参阅图2所示的全闪存阵列的物理架构,其中性能层又称为写缓存,容量层又称读缓存,而如何避免在性能层的数据回写至容量层的过程中,每次都需要将计算出的数据块的强哈希值与去重指纹库进行匹配,因为强哈希值字段较长,从而花费较长匹配时间,降低数据去重效率的问题,是本申请要解决的技术问题。

当性能层中的数据回写至容量层的过程中,对回写的数据进行去重压缩,而在去重压缩前,需要获取性能层中被压缩的数据,其中被压缩的数据可以是各种文件数据,也可以是应用软件中的消息数据,此处不做具体限制。

102、将所述被压缩数据切分为预设长度的第一数据块,并计算所述第一数据块的弱哈希值;

数据在压缩的过程中,一般是将数据切分为预设长度的第一数据块,其中,数据块的切分粒度可以是2k、4k、8k或其他大小,并在切分完成后,或在执行切分时,计算第一数据块的弱哈希值。

区别于现有技术的是,本申请在切分完第一数据块后,计算的是第一数据块的弱哈希值,而弱哈希一般指的是计算很快而且哈希长度很短(一般4-8个字节)的哈希算法,比较典型的弱哈希有crc32、xxhash等,主要用于快速数据校验和检索。而强哈希值的长度一般较长(大于20字节),故在校验和检索时,花费的时间较长。

需要说明的是,在数据块的切分过程中,对于预设长度的大小,可以根据具体应用的实际需求进行切分,此处不做具体限制。

103、将所述第一数据块的弱哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹,若否,则执行步骤104,若是,则执行步骤105;

区别于现有技术的是,本申请中是计算第一数据块的弱哈希值,然后将第一数据块的弱哈希值与容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹。

因为弱哈希一般指的是计算很快而且哈希长度很短(一般4-8个字节)的哈希算法,比较典型的弱哈希有crc32、xxhash等,主要用于快速数据校验和检索。故本申请采用计算第一数据块的弱哈希值的方法,可以提高在去重指纹库中对第一数据块进行检索的速度,从而提高数据块的去重效率。

104、确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层中的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度;

当去重指纹库中不存在第一数据块对应的指纹时,说明第一数据块为非重复数据块,则对第一数据块进行压缩,优选的压缩算法为lz4压缩算法。当压缩完成后,将压缩后的第一数据块回写至容量层,并将第一数据块的哈希值(指纹)更新至去重指纹库中,而将第一数据块的元数据信息更新至文件元数据区域,所述元数据信息包括:第一数据块压缩后的物理存储地址及第一数据块压缩后的长度,以便于当第一数据块下次出现时,可以作为重复数据块进行处理,及后期能够根据第一数据块的元数据信息对第一数据块执行解压恢复。

需要说明的是,也可以将第一数据块的哈希值(指纹)及第一数据块的元数据信息同时更新至去重指纹库中,只要能够实现后期根据第一数据块的元数据信息对第一数据块执行解压恢复即可,此处对第一数据块元数据信息的更新地址,不做具体限制。

进一步,为了避免在第一数据块发生更新时,采用数据原地更新的方式,导致文件中的新数据块在压缩后,与原第一数据块存储空间不匹配,而导致空间浪费问题,如:假设原文件中一个非重数据块压缩后的存储空间为2k,而当文件数据删除后,则会出现2k的空间碎片,而当文件数据更改后,若更新后非重数据块压缩后的数据长度为1k,则会出现1k的空间碎片,若更新后非重数据块压缩后的数据长度为3k,则会出现原有2k的空间地址存储不了的问题,从而导致空间浪费的问题。

优选的,可以将压缩后的第一数据块以日志追加写的方式回写至容量层中,其中,图5为为本申请实施例中对压缩后的第一数据块是以日志追加写的方式进行异地更新的示意图,且该图中也示出了数据块的逻辑地址、匹配指纹及匹配指纹对应的物理地址之间的对应关系,因为日志追加写是按照时间顺序执行顺序写,故当第一数据块对应的文件更新时,对应文件中的新数据块执行压缩后,则是以时间顺序来执行追加写,即在存储介质中是存储在新的存储空间地址(新的存储单位)中,也即异地更新,而非在原来第一数据块对应的存储地址进行更新,这样就避免了文件数据更新后,新的数据块压缩后的长度与原来第一数据块压缩后存储空间不匹配的问题,进而避免了存储介质中存储空间的浪费,也避免了存储介质中产生更小的空间碎片,提高了对容量层中存储空间的利用率,另外,因为异地更新只用执行写操作,而原地更新却要先执行读操作,再执行写操作,所以日志追加写的异地更新方式,也进一步提高了容量层的io性能。

进一步,因为ssd盘的最小写入单元为4k,且在一个最小写入单元未写满时,若下次还需要在该最小写入单元执行写操作时,根据ssd盘擦除写的特性,需要先对该最小写入单元中预先存储的已存储数据进行读取,然后擦除,再将需要新写入的新数据和读取出来的已存储数据重新写入,故本申请通过日志追加写的方式对文件数据执行异地更新时,还可以将压缩后的第一数据块先存储至日志存储单元,并在日志存储单元写满后,再将日志存储单元回写至容量层,其中,日志存储单元的存储空间为容量层最小写入单元的整数倍,即4k的整数倍,如8k、12k或16k,这样,既适配了ssd盘最小写单元为4k的特性,也避免了在ssd盘中产生随机小写(即写入数据的长度小于最小写入单元4k)的问题,即进一步避免了存储介质中存储空间的浪费问题。

105、执行其他流程。

当去重指纹库中存在与第一数据块的弱哈希值匹配的指纹时,则执行其他流程,此处不做具体限制。

本申请实施例中,从性能层中获取被压缩的数据后,将被压缩的数据切分为预设长度的第一数据块,并计算第一数据块的弱哈希值,并将第一数据块的弱哈希值与去重指纹库进行匹配,并在去重指纹库中不存在与第一数据块的弱哈希值匹配的指纹时,确定第一数据块为非重复数据块,然后对第一数据块进行压缩存储,因为本申请中计算的是第一数据块的弱哈希值,而弱哈希一般指的是计算很快而且哈希长度很短(一般4-8个字节)的哈希算法,主要用于快速数据校验和检索,故本申请可以通过计算第一数据块的弱哈希值,提高在去重数据库中对第一数据块的检索效率,从而提高对数据块的去重效率,提高存储系统的io性能。

基于图1所述的实施例,下面详细描述当第一数据块的弱哈希值与第一去重指纹库匹配的情况,请参阅图3,本申请中基于全闪存阵列的数据压缩方法的另一个实施例,包括:

106、读取所述匹配指纹对应的原始数据块,将所述第一数据块与所述原始数据块进行匹配,以确定所述第一数据块与所述原始数据块是否完全相同,若是,则执行步骤107,若否,则执行图1所述实施例中的步骤104;

当去重指纹库中存在与第一数据块的弱哈希值对应的匹配指纹时,则根据该匹配指纹的物理地址,读取该匹配指纹对应的原始数据块,并将第一数据块与原始数据块进行逐一匹配,以确定第一数据块与原始数据块是否完全相同。

因为弱哈希值存在一定的冲突率,即存在一个弱哈希值对应多个数据块的情形,为了避免该情形,实现一个指纹对应一个数据块,则需要根据该匹配指纹的物理地址,读取出该匹配指纹对应的原始数据块,并将第一数据块与原始数据块进行匹配,以确定第一数据块和原始数据块是否完全相同,若是,则确定该第一数据块为重复数据块,执行步骤107,否则,该第一数据块为非重复数据块,则执行图1所述实施例中的步骤104。

107、确定所述第一数据块为重复数据块,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系;

当第一数据块为匹配指纹对应的原始数据块完全相同时,则确定第一数据块为重复数据块,则将第一数据块的元数据信息回写至容量层的元数据区域,其中,元数据信息包括第一数据块在被压缩数据中的逻辑地址、匹配指纹及匹配指纹的物理地址之间的对应关系,具体的,第一数据块在被压缩数据中的逻辑地址是指第一数据块在被压缩数据中逻辑顺序(如在图4a中,数据块b5为文件1中的第一个数据块),而匹配指纹的物理地址,是指匹配指纹在容量层中具体的物理存储地址,以便于后期根据该物理地址对第一数据块执行解压恢复。

其中,图4a为数据去重前后逻辑地址及物理地址的示意图;图4b为为容量层元数据区域中元数据信息的数据逻辑组织关系图。在该数据逻辑组织关系图中,容易理解的是,多个数据块可以对应同一个指纹,即多个(n个)逻辑地址对应同一个指纹,而一个指纹只对应自身的一个物理存储地址,以用于后期根据该指纹对应数据块的物理存储,对该数据块执行解压恢复。

108、对去重指纹库中指纹的引用次数执行计数管理。

为了明确容量层中无效数据的空间占用信息,即容量层中原有存储空间中的存储数据被更新后所产生的无效数据信息,可以对去重指纹库中指纹的引用次数执行计数管理,具体可以通过以下两个方面进行计数管理:

一、当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;

如被压缩数据中的第一数据块的弱哈希值在去重指纹库中存在匹配指纹,且第一数据块与匹配指纹对应的原始数据块完全相同时,则对该匹配指纹的引用次数执行增长式运算,优选的为累加式运算,即当第一数据块在去重指纹库中存在匹配指纹,且第一数据块与匹配指纹对应的原始数据块完全相同时,对该匹配指纹的引用次数执行“+1”运算,当然,增长式运算还可以是乘法运算,或混合运算,只要是正相关运算即可,此处不做具体限制。

二、当引用所述去重指纹库中匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。

具体的,如去重指纹库中的某个匹配指纹对应的文件数据发生删除或更改时,则将对该匹配指纹的引用次数执行递减式运算,优选的为减法运算,即当匹配指纹对应的第一数据块发生删除或更新时,则对该匹配指纹的引用次数执行“-1”运算,当然,递减式运算还可以是除法运算,或混合运算,只要是负相关运算即可,此处不做具体限制。

这样,通过对去重指纹库中指纹引用次数的管理,便可以明确每个指纹的引用情况,当某个指纹的引用次数为0时,则可以根据该指纹的物理地址,对该指纹对应的原始数据块执行删除操作,以增大容量层的存储空间,并在执行删除操作时,对该空间碎片的地址信息进行记录,以明确容量层中的空间碎片信息,方便对容量层存储空间的管理。

上面描述了本申请实施例中的基于全闪存阵列的数据压缩方法,下面对本申请实施例中基于全闪存阵列的数据压缩系统进行描述,请参阅图6,本申请实施例中基于全闪存阵列的数据压缩系统的一个实施例,包括:

获取单元601,用于获取所述性能层中的被压缩数据;

切分计算单元602,用于将所述被压缩数据切分为预设长度的第一数据块,并计算所述第一数据块的弱哈希值;

第一匹配单元603,用于将所述第一数据块的弱哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;

第一压缩单元604,用于在若不存在所述匹配指纹时,确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。

需要说明的是,本实施例中各单元的作用与图1所述实施例中描述的类似,此处不再赘述。

本申请实施例中,从性能层中获取被压缩的数据后,将被压缩的数据切分为预设长度的第一数据块,并计算第一数据块的弱哈希值,并将第一数据块的弱哈希值与去重指纹库进行匹配,并在去重指纹库中不存在与第一数据块的弱哈希值匹配的指纹时,确定第一数据块为非重复数据块,然后对第一数据块进行压缩存储,因为本申请中计算的是第一数据块的弱哈希值,而弱哈希一般指的是计算很快而且哈希长度很短(一般4-8个字节)的哈希算法,主要用于快速数据校验和检索,故本申请可以通过计算第一数据块的弱哈希值,提高在去重数据库中对第一数据块的检索效率,从而提高对数据块的去重效率。

基于图6所述的实施例,下面详细描述本申请实施例中基于全闪存阵列的数据压缩系统,请参阅图7,本申请实施例中基于全闪存阵列的数据压缩系统的另一个实施例,包括:

获取单元701,用于获取所述性能层中的被压缩数据;

切分计算单元702,用于将所述被压缩数据切分为预设长度的第一数据块,并计算所述第一数据块的弱哈希值;

匹配单元703,用于将所述第一数据块的弱哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;

第一压缩单元704,用于在若不存在所述匹配指纹时,确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。

优选的,该系统还包括:

读取匹配单元705,用于在存在所述匹配指纹时,读取所述匹配指纹对应的原始数据块,将所述第一数据块与所述原始数据块进行匹配,以确定所述第一数据块与所述原始数据块是否完全相同;

去重单元706,用于在所述第一数据块与所述原始数据块完全相同时,确定所述第一数据块为重复数据块,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。

优选的,所述系统还包括:

第二压缩单元707,用于在所述第一数据块与所述原始数据块不完全相同时,确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。

优选的,所述第一压缩单元704,包括:

第一压缩模块7041,用于将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍;

所述第二压缩单元707,包括:

第二压缩模块7071,用于用于将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍;

优选的,所述系统还包括:

计数单元708,用于对所述去重指纹库中指纹的引用次数执行计数管理;

所述计数单元,包括;

第一计数模块7081,用于当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;

和,

第二计数模块7082,用于当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。

需要说明的是,本实施例中各单元的作用与图1及图3所述实施例中描述的类似,此处不再赘述。

本申请实施例中,从性能层中获取被压缩的数据后,将被压缩的数据切分为预设长度的第一数据块,并计算第一数据块的弱哈希值,并将第一数据块的弱哈希值与去重指纹库进行匹配,并在去重指纹库中不存在与第一数据块的弱哈希值匹配的指纹时,确定第一数据块为非重复数据块,然后对第一数据块进行压缩存储,因为本申请中计算的是第一数据块的弱哈希值,而弱哈希一般指的是计算很快而且哈希长度很短(一般4-8个字节)的哈希算法,主要用于快速数据校验和检索,故本申请可以通过计算第一数据块的弱哈希值,提高在去重数据库中对第一数据块的检索效率,从而提高对数据块的去重效率。

其次,通过对去重指纹库中指纹引用次数的管理,便可以明确每个指纹的引用情况,当某个指纹的引用次数为0时,则可以根据该指纹的物理地址,对该指纹对应的原始数据块执行删除操作,以增大容量层的存储空间,并在执行删除操作时,对该空间碎片的地址信息进行记录,以明确容量层中的空间碎片信息,方便对容量层存储空间的管理。

上面从模块化功能实体的角度对本申请实施例中的基于全闪存阵列的数据压缩系统进行了描述,下面从硬件处理的角度对本申请实施例中的全闪存阵列的数据压缩系统进行描述:

本申请实施例中全闪存阵列的数据压缩系统一个实施例包括:

处理器以及存储器;

存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,可以实现如下步骤:

获取所述性能层中的被压缩数据;

将所述被压缩数据切分为预设长度的第一数据块,并计算所述第一数据块的弱哈希值;

将所述第一数据块的弱哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;

若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。

在本申请的一些实施例中,处理器,还可以用于实现如下步骤:

若存在所述匹配指纹,则读取所述匹配指纹对应的原始数据块;

将所述第一数据块与所述原始数据块进行匹配,以确定所述第一数据块与所述原始数据块是否完全相同;

若完全相同,则确定所述第一数据块为重复数据块,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。

在本申请的一些实施例中,处理器,还可以用于实现如下步骤:

若不完全相同,则确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。

在本申请的一些实施例中,处理器,还可以用于实现如下步骤:

将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍。

在本申请的一些实施例中,处理器,还可以用于实现如下步骤:

对所述去重指纹库中指纹的引用次数执行计数管理;

在本申请的一些实施例中,处理器,还可以用于实现如下步骤:

当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;

和,

当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。

可以理解的是,上述说明的基于全闪存阵列的数据压缩系统中的处理器执行所述计算机程序时,也可以实现上述对应的各装置实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述基于全闪存阵列的数据压缩系统中的执行过程。例如,所述计算机程序可以被分割成上述基于全闪存阵列的数据压缩系统中的各单元,各单元可以实现如上述相应基于全闪存阵列的数据压缩系统说明的具体功能。

所述基于全闪存阵列的数据压缩系统可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述基于全闪存阵列的数据压缩系统可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是计算机装置的示例,并不构成对计算机装置的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于全闪存阵列的数据压缩系统还可以包括输入输出设备、网络接入设备、总线等。

所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现基于全闪存阵列的数据压缩系统的功能,其上存储有计算机程序,计算机程序被处理器执行时,处理器,可以用于执行如下步骤:

获取所述性能层中的被压缩数据;

将所述被压缩数据切分为预设长度的第一数据块,并计算所述第一数据块的弱哈希值;

将所述第一数据块的弱哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;

若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。

在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:

若存在所述匹配指纹,则读取所述匹配指纹对应的原始数据块;

将所述第一数据块与所述原始数据块进行匹配,以确定所述第一数据块与所述原始数据块是否完全相同;

若完全相同,则确定所述第一数据块为重复数据块,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。

在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:

若不完全相同,则确定所述第一数据块为非重复数据块,则对所述第一数据块进行压缩,并将压缩后的第一数据块回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。

在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:

将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍。

在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:

对所述去重指纹库中指纹的引用次数执行计数管理;

在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:

当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;

和,

当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。

可以理解的是,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在相应的一个计算机可读取存储介质中。基于这样的理解,本申请实现上述相应的实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

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

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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