存储系统的数据去重方法及装置、计算机装置及存储介质与流程

文档序号:15195530发布日期:2018-08-18 22:10阅读:191来源:国知局

本发明涉及数据存储技术领域,尤其涉及一种存储系统的数据去重方法及装置、计算机装置及存储介质。



背景技术:

数据去重又称重复数据删除(datadeduplication),是一种应用在存储系统中的全局地识别和消除冗余数据的技术,成为近些年来存储系统研究的热点。数据去重通过计算数据块的安全哈希摘要(比如sha1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,具有良好的可扩展性;重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的;所以数据去重技术能够极大地节省存储空间从而提高存储设备的资源利用率。

数据去重指纹一般使用的是sha1哈希摘要(20个字节),如果是4tb的数据,按照4kb的数据块粒度,那就是有1g个数据块,指纹总大小20gb,如果把指纹放在内存中,这将非常消耗内存资源,如果全部放在全阵列闪存上组织索引,这样的查找速度将慢很多。

故如何在内存设备及全闪存阵列之间设置数据存储策略,是提高存储系统io性能的一个重要途径。



技术实现要素:

本发明实施例提供了一种存储系统的数据去重方法及装置、计算机装置及存储介质,用于提高存储系统中数据去重速度和数据写入速度。

本发明第一方面提供了一种存储系统的数据去重方法,包括:

接收内存设备发送的数据写入请求;

根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

查询内存设备的热点指纹库,并判断热点指纹库中是否存在指纹,内存设备包括:第一文件元数据库及热点指纹库;

若热点指纹库中不存在指纹,则查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库;

若去重指纹库中存在指纹,则确定该数据块为重复数据,将数据区域中的数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,所述元数据信息包括:所述数据块在所述数据段中的顺序、所述数据块的物理存储地址及所述数据块的长度。

优选的,数据区域包括多个数据容器,数据容器用于存储多个连续数据块及多个连续数据块对应的指纹序列;

将数据区域中的数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,包括:

将数据块所在的数据容器中的指纹序列发送至内存设备的热点指纹库中。优选的,在判断热点指纹库中是否存在所述指纹之后,该方法还包括:

若热点指纹库中存在所述指纹,则确定该数据块为重复数据,并将数据块的元数据信息存储至第一文件元数据库中,所述元数据信息包括:所述数据块在所述数据段中的顺序、所述数据块的物理存储地址及所述数据块的长度。

优选的,在判断去重指纹库中是否存在所述指纹之后,该方法还包括:

若去重指纹库中不存在所述指纹,则对该数据块执行压缩操作,并将压缩后的数据块存储至数据容器,并更新数据容器的指纹序列,同时将压缩后数据块的元数据信息及该数据块的指纹更新至去重指纹库中,所述元数据信息包括:所述数据块压缩后的物理存储地址及所述数据块压缩后的长度。

优选的,该内存设备还包括:热点数据库;

在所述确定所述数据库为重复数据之后,该方法还包括:

将所述数据容器中的所述数据块及相邻数据块发送至所述内存设备的热点数据库中。

优选的,该方法还包括:

判断所述热点数据库是否达到热点数据库的存储阈值;

若达到所述热点数据库的存储阈值,则按照预设的规则淘汰出第一热点数据,并更新所述热点数据库。

优选的,该方法还包括:

分别判断热点指纹库及第一文件元数据库是否达到各自的存储阈值;

若热点指纹库或第一文件元数据库达到各自的存储阈值,则按照预设的规则淘汰出第一热点指纹及第一元数据,并更新热点指纹库及第一文件元数据库。

本发明第二方面提供了一种存储系统的数据去重装置,包括:

接收单元,用于接收内存设备发送的数据写入请求;

划分计算单元,用于根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

第一查询判断单元,用于查询内存设备的热点指纹库,并判断热点指纹库中是否存在指纹,内存设备包括:第一文件元数据库及热点指纹库;

第二查询判断单元,用于在热点指纹库中不存在所述指纹时,查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在所述指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库;

发送执行单元,用于在去重指纹库中存在指纹时,确定该数据块为重复数据,将数据区域中的该数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,并更新数据容器中的指纹序列,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。。

优选的,数据区域包括多个数据容器,数据容器用于存储多个连续数据块及多个连续数据块对应的指纹序列;

发送执行单元,包括:

第一发送执行模块,用于在去重指纹库中存在指纹时,确定该数据块为重复数据,将数据块所在的数据容器中的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,所述元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。优选的,该装置还包括:

去重单元,用于在热点指纹库中存在指纹时,确定该数据块为重复数据,并将数据块的元数据信息存储至第一文件元数据库中,所述元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

优选的,该装置还包括:

存储更新单元,用于在去重指纹库中不存在所述指纹时,对该数据块执行压缩操作,并将压缩后的数据块存储至数据容器,并更新数据容器的指纹序列,同时将压缩后数据块的元数据信息及该数据块的指纹更新至去重指纹库中,所述元数据信息包括:所述数据块压缩后的物理存储地址及所述数据块压缩后的长度。

优选的,该内存设备还包括:热点数据库;

该装置还包括:

发送单元,用于将所述数据容器中的所述数据块及相邻数据块发送至内存设备的热点数据库中。

优选的,该装置还包括:

第一判断单元,用于判断所述热点数据库是否达到热点数据库的存储阈值;

第一淘汰单元,用于在达到所述热点数据库的存储阈值时,按照预设的规则淘汰出第一热点数据,并更新所述热点数据库。

优选的,该装置还包括:

第二判断单元,用于分别判断热点指纹库及第一文件元数据库是否达到各自的存储阈值;

第二淘汰单元,用于在热点指纹库或第一文件元数据库达到存储阈值时,按照预设的规则淘汰出第一热点指纹及第一元数据,并更新热点指纹库及第一文件元数据库。

本发明实施例还提供了一种计算机装置,包括处理器,该处理器在执行存储于存储器上的计算机程序时,用于实现本发明第一方面所述的存储系统的数据去重方法。

本发明实施例还提供了一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,用于实现本发明第一方面所述的存储系统的数据去重方法。

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

本发明实施例中,存储系统的数据去重装置在接收内存设备发送的数据写入请求后,先根据写入请求,将该写入请求所指示的数据划分为数据块,计算数据块的指纹,并在内存设备的热点指纹库中查询判断,在热点指纹库中不存在该指纹时,继而在全闪存阵列的去重指纹库中查询判断,并在去重指纹库中找到该指纹时,确定该数据块为重复数据,并将全闪存阵列数据区域中的所述数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,从而增加数据块在内存设备中的访问命中率,减少在存储系统的去重索引中访问全闪存阵列的操作,达到提升数据去重速度和数据写入速度。

附图说明

图1为本发明实施例中存储系统及存储系统中数据的结构示意图;

图2为本发明实施例中存储系统的数据去重方法的一个实施例示意图;

图3为本发明实施例中重复数据块及相连数据块的结构示意图;

图4为本发明实施例中存储系统的数据去重方法的另一个实施例示意图;

图5为本发明实施例中全闪存阵列中数据区域及数据容器的结构示意图;

图6为本发明实施例中存储系统的数据去重装置的一个实施例示意图;

图7为本发明实施例中存储系统的数据去重装置的另一个实施例示意图。

具体实施方式

本发明实施例提供了一种存储系统的数据去重方法及装置、计算机装置及存储介质,用于提升存储系统中数据去重速度和数据写入速度。

为方便理解,先对文中的专业术语解释如下:

数据去重:数据去重又称重复数据删除(datadeduplication),是一种应用在存储系统中的全局地识别和消除冗余数据的技术,成为近些年来存储系统研究的热点。数据去重通过计算数据块的安全哈希摘要(比如sha1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,具有良好的可扩展性;重复的数据内容只需要记录响应的数据指针信息即可达到节省存储空间的目的;所以数据去重技术不仅能够极大地节省存储空间从而提高存储设备的资源利用率。

全闪存阵列:闪存固态盘(ssd)被广泛用于机械硬盘的缓存,例如ceph和zfs,这主要因为闪存固态盘有良好的随机io性能,而传统的机械硬盘在随机io性能的支持方面表现不佳,目前存储系统部署全闪存设备成为普遍趋势,以全面提升存储系统的整体性能。考虑到ssd的成本远远贵于现在的机械硬盘,而同时在当下云计算和虚拟化环境下,存储系统存在大量的重复冗余数据,通过数据去重和压缩技术可以扩展ssd存储系统的逻辑存储空间,提升ssd的设备使用率,达到降低ssd成本的目的。

数据存储系统包括外存储器和内存储器,其中内存储器即为内存设备,外存储器一般包括全闪存阵列和机械硬盘,其中全闪存阵列多设置为机械硬盘的缓存,但因为传统机械盘的随机io性能较差,故目前外存储器部署全闪存阵成为普遍趋势,而如何设置内存设备与全闪存阵列数据之间的存储策略,是提高存储系统io性能的一个重要途径。

基于上述的存储系统,下面来描述本发明实施例中的存储系统的数据去重方法,请参阅图2,本发明实施例中存储系统的数据去重方法的一个实施例包括:

201、接收内存设备发送的数据写入请求;

随着智能设备的发展,数据的处理速度要求越来越高,而存储系统的io性能是影响数据处理速度的一个重要参数。一般的,存储系统包括内存设备和外存储设备,其中内存是智能设备的重要部件之一,它是与cpu进行沟通的桥梁。智能设备中所有程序的运行都是在内存中进行的,因此内存的性能对智能设备的影响非常大,内存的作用是用于暂时存放cpu中的运算数据,以及与硬盘等外部存储器交换的数据。只要智能设备在运行中,cpu就会把需要运算的数据调到内存中进行运算,当运算完成后cpu再将结果传送出来,内存的运行也决定了智能设备的稳定运行。

故智能设备的所有程序在内存中执行完运算后,需要将数据写入外存储设备中,在本发明的实施例中,外存储设备设置为全闪存阵列,而为了同时提高内存及外存储设备的数据写入速度及数据存储容量,存储系统的数据去重装置(下面简称为数据去重装置)在内存设备的数据写入全闪存阵列前,接收内存设备发送的数据写入请求,并根据该写入请求,对该写入请求所指示的数据执行去重策略,以节省内存及全闪存阵列中的存储空间,并提高数据的写入速度。

202、根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

如图1所示的存储系统的数据结构图所示,为了提高数据的写入速度,节省存储系统的存储空间,存储系统在内存设备中存入热点数据指纹,以提高数据块在内存设备中的访问命中率,而为了节省内存的存储空间,存储系统对于内存中的数据采用去重压缩的形式进行存储,且只存入访问率比较大(即重复率较高)的数据的元数据信息,故内存中的数据存储结构包括:第一文件元数据及热点指纹库。

其中,为了加快数据的去重速度,将数据写入请求所指示的数据划分为预设粒度的数据块,并通过哈希摘要(比如sha1指纹)计算该数据块的指纹,当该数据块的指纹与热点指纹库中的指纹相同时,则证明该数据块为重复数据块,可以对该数据块进行去重操作,并将该数据块的元数据信息存入第一文件元数据库中,以节省数据的存储空间;其中,第一文件元数据库为帮助数据恢复(数据解压)过程中的辅助数据,第一文件元数据库包括:重复数据块在原文件中的顺序、逻辑地址及长度。

故数据去重装置在接收到内存设备发送的数据写入请求后,并不是直接将数据写入存储系统,而是判断该写入请求所指示的数据是否存在重复现象,而在判断是否存在重复之前,首先将要写入的数据划分为预设粒度的数据块,并计算每个数据块的指纹,具体的,数据块的大小可以是4kb、8kb、12kb、16kb或其他的粒度,并以提高数据的处理速度为目的进行粒度划分,此处对于粒度的大小不做具体限制,而计算数据块指纹的算法可以是哈希算法或md5算法,只要计算出数据块的指纹是唯一的即可,此处对于计算数据块指纹的算法也不做具体限制。

203、查询内存设备的热点指纹库,并判断热点指纹库中是否存在所述指纹,内存设备包括:第一文件元数据库及热点指纹库,若存在,则执行步骤206,若不存在,则执行步骤204;

数据去重装置在步骤202中计算了数据块的指纹后,先在内存的热点指纹库中对该数据块的指纹判断,并在内存的热点指纹库中不存在该数据块的指纹时,执行步骤204,而当内存的热点指纹库中存在该数据块的指纹时,则执行步骤206。

204、查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在所述指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库,若存在,则执行步骤205,若不存在,则执行步骤206;

数据去重装置在判断热点指纹库中不存在该数据块的指纹时,则将数据写入全闪存阵列中,而为了节省全闪存阵列的存储空间,全闪存阵列中的数据也是以去重压缩的形式进行存储,故全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库,其中,数据区域用于存储第一次出现的数据,而第二文件元数据库及去重指纹库的作用与步骤202中,第一文件元数据库及热点指纹库的作用类似,此处不再赘述。

具体的,若热点指纹库中不存在数据块的指纹时,则数据去重装置进一步查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在该指纹,并在去重指纹库中存在该指纹时,执行步骤205,而在去重指纹库中不存在该指纹时,则执行步骤206。

205、确定该数据块为重复数据,将数据区域中的该数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度;

若全闪存阵列的去重指纹库中存在该指纹,则说明该数据块与全闪存阵列数据区域中的存储数据是重复的,即该数据块的访问率较高,而根据重复数据存在一定的集中性,或者说重复数据在时间或空间上存在局部性的原理,可以将数据区域中存储的该数据块及其相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,具体的,如图3所述,若数据块b在全闪存阵列中的数据区域中是重复的,则将数据块在数据区域中存储时的相邻数据块a、c与b一起组成的数据序列对应的指纹序列发送至内存设备的热点指纹库中,根据重复数据的集中性原理,若数据块b为重复数据块,则数据块a、c也具有一定的重复性,故将a、b、c所组成的数据序列所对应的指纹序列一起发送至内存设备的热点指纹库中,以增加重复数据的命中率,加快重复数据的写入速度,同时节省存储系统的存储空间。

需要说明的是,上面描述的数据块b的相邻数据块a、c只是对数据块b的相邻数据块的解释说明,实际的数据处理中,b的相邻数据块的长度可以为b的左相邻两个或更多的数据块,或b的右相邻的两个或更多的数据块,此处对应重复数据块b的相邻数据块的长度不做具体限制。

此外,数据去重装置将重复数据块及其相邻数据块对应的指纹序列发送至内存设备中的热点指纹库中后,并将重复数据块的元数据信息存储至第二文件元数据库中,所述元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度,用于后期根据该元数据信息对数据的解压恢复。

206、执行其他流程。

具体的,本实施例中,数据去重装置在步骤203之后,即在内存设备中的热点指纹库中存在数据块的指纹时,及步骤204之后,即全闪存阵列的去重指纹库中不存在数据块的指纹时,都执行其他流程,此处不做具体限制。

本发明实施例中,存储系统的数据去重装置在接收内存设备发送的数据写入请求后,先根据写入请求,将该写入请求所指示的数据划分为数据块,计算数据块的指纹,并在内存设备的热点指纹库中查询判断,在热点指纹库中不存在该指纹时,继而在全闪存阵列的去重指纹库中查询判断,并在去重指纹库中找到该指纹时,确定该数据块为重复数据,将全闪存阵列数据区域中的所述数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,从而增加数据块在内存设备中的访问命中率,减少在存储系统的去重索引中访问全闪存阵列的操作,达到提升数据去重速度和数据写入速度。

基于图2所述的实施例,为了方便在全闪存阵列的去重指纹库中存在数据块的指纹时,更方便快捷的将数据区域中的数据块及相连数据块对应的指纹序列发送至热点指纹库中,以加快数据的写入速度,下面详细描述本发明实施例中的存储系统的去重方法,请参阅图4,本发明实施例中的存储系统的去重方法的另一个实施例,包括:

401、接收内存设备发送的数据写入请求;

402、根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

需要说明的是,本实施例中的步骤401至402与图2所述实施例中的步骤201至202类似,此处不再赘述。

403、查询内存设备的热点指纹库,并判断热点指纹库中是否存在所述指纹,内存设备包括:第一文件元数据库、热点数据库及热点指纹库,若存在,则执行步骤406,若不存在,则执行步骤404;

数据去重装置在步骤402中计算了数据块的指纹后,先在内存的热点指纹库中对该数据块的指纹进行判断,并在内存的热点指纹库中不存在该数据块的指纹时,执行步骤404,而当内存的热点指纹库中存在该数据块的指纹时,则执行步骤406。

为了便于数据在写入内存设备后,该数据能被快速读取出来,存储系统的内存设备还可以包括热点数据库,以用于存储访问命中率较高的热点数据,其中该热点数据库中的热点数据对应于热点指纹库中热点指纹所对应的数据,以便于通过内存设备可以快速读取出热点数据,提高数据后续的读取速度。

404、查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在所述指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库,数据区域包括多个数据容器,数据容器用于存储多个连续数据块及所述多个连续数据块对应的指纹序列;若存在,则执行步骤405,若不存在,则执行步骤407;

数据去重装置在判断该数据块的指纹在热点指纹库中不存在时,则将数据存入全闪存阵列中,而为了节省全闪存阵列的存储空间,全闪存阵列中的数据也是以去重压缩的形式进行存储,其中,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库。

而为了加快数据的写入速度,存储系统在全闪存阵列的数据区域中,可以将数据区域划分为若干个数据容器,分别用于存储多个连续的数据块及各个连续数据块对应的指纹序列,为方便描述,将数据容器中存储的多个连续数据块对应的指纹序列称之为该容器的容器指纹序列,其中全闪存阵列中数据区域中的数据容器及数据容器中数据块及容器指纹序列的结构示意图的可以参阅图5所示。

具体的,若热点指纹库中不存在数据块的指纹时,则进一步查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在该指纹,并在去重指纹库中存在该指纹时,执行步骤405,而去重指纹库中不存在该指纹时,则执行步骤408。

405、确定该数据块为重复数据,将数据块所在的数据容器中的指纹序列发送至所述内存设备的热点指纹库中,将数据容器中的该数据块及相邻数据块发送至热点数据库中,同时将数据块的元数据信息存储至第二文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度;

对应于步骤404,为了方便数据块及相邻数据块对应的指纹序列的提取及发送,本实施中将数据区域划分为多个数据容器,故在本步骤中,若全闪存阵列的去重指纹库中存在该数据块的指纹,则确定该数据块为重复数据,并将该数据块所在数据容器中的该数据块及相邻数据块的指纹序列发送至内存设备的热点指纹库中,需要说明的是,为了方便发送,还可以将该数据块所在数据容器的容器指纹序列(即该数据容器中存储的包括该数据块在内的所有连续数据块的指纹序列)发送至内存设备的热点指纹库中,因为在重复数据块的指纹序列发送前,减少了数据块的提取及指纹序列的计算步骤,故可以提高数据的处理速度。

同样,数据去重装置将数据容器中的指纹序列发送至内存设备中的热点指纹库中后,为了便于后续数据的读取,数据去重装置还将数据容器中的该数据块及相邻数据块发送至内存设备的热点数据库中,或进一步将该数据块所在的数据容器中存储的所有连续数据块一起发送至内存设备的热点数据库中,以提高后续数据的读取速度,同时还将重复数据块的元数据信息存储至第二文件元数据库中。

可以理解的是,内存设备中热点指纹库中的指纹是全闪存阵列去重指纹库中重复率比较高的指纹,所以当去重指纹库中指纹发生大范围的迁移或删除时,或是全闪存阵列中数据区域中的数据发生大范围迁移或删除时,则置空热点指纹库,等待后续数据写入的过程中将去重指纹库中的指纹逐步填充至热点指纹库中。

406、确定该数据块为重复数据,并将所述数据块的元数据信息存储至第一文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度;

在步骤403之后,若内存设备的热点指纹库中存在该数据块的指纹,则说明该数据块与内存设备中热点数据库中的数据内容是重复的,则直接将该数据块的元数据信息存储至第一文件元数据库中即可。

其中,第一文件元数据库中存储的是数据块在原文件中的顺序、数据块的物理存储地址及数据块的长度,第一文件元数据中的元数据信息主要是用于数据块的后期解压过程。

407、对该数据块执行压缩操作,并将压缩后的数据块存储至数据容器,并更新数据容器的指纹序列,同时将压缩后数据块的元数据信息及该数据块的指纹更新至去重指纹库中,所述元数据信息包括:所述数据块压缩后的物理存储地址及所述数据块压缩后的长度;

在步骤404之后,若全闪存阵列的去重指纹库中不存在数据块的指纹,则说明数据容器中不存在该数据块,即该数据块属于新数据块,则数据去重装置将该数据块执行压缩操作,并将压缩后的数据块存储至数据容器,并更新数据容器中连续数据块的指纹序列,同时将压缩后数据块的元数据信息及该数据块(压缩前的数据块)的指纹更新至去重指纹库中,以便于后期数据块的去重索引,该元数据信息包括:该数据块压缩后的物理存储地址及压缩后的长度。其中,元数据信息用于后期对该数据块内容的恢复。具体的,数据块的解压过程可以参照现有技术中描述的哈弗曼压缩算法或lz压缩算法,此处不再赘述。

408、分别判断热点指纹库、热点数据库及第一文件元数据库是否达到各自的存储阈值,若热点指纹库、热点数据库或第一文件元数据库达到存储阈值,则执行步骤409,若热点指纹库、热点数据库及第一文件元数据库都未达到各自的存储阈值,则执行步骤410;

可以理解的是,因为内存空间有限,所以在数据容器的指纹序列发送至热点指纹库后,会导致内存设备的存储空间不断减小,故数据去重装置可以设置在数据容器的指纹序列发送至热点指纹库之前或之后,对内存设备中的热点指纹库、热点数据库及第一文件元数据库的存储容量进行判断,或数据去重装置设置计时器定时对内存设备中的第一文件元数据库、热点指纹库及热点数据库的存储容量进行判断,以及时淘汰出第一文件元数据库、热点数据库和热点指纹库中的存储空间,以供后续热点指纹、热点数据及元数据信息进行存储。

需要说明的是,步骤408既可以在步骤405之前执行,还可以在405步骤之后执行,此处步骤408的执行顺序不做具体限制。

409、按照预设的规则淘汰出第一热点指纹、第一热点数据及第一元数据,并更新所述热点指纹库、所述热点数据库及所述第一文件元数据库;

当第一文件元数据库、热点数据库或热点指纹库的存储容量超出存储阈值后,为了在第一文件元数据库及热点指纹库中淘汰出数据空间,可以按照预设的淘汰规则对第一文件元数据库、热点数据库及热点指纹库中的数据进行运算,以淘汰出第一热点指纹、第一热点数据及第一元数据,并更新内存设备中的热点指纹库、热点数据库及第一文件元数据库。容易理解的是,热点指纹库中的热点指纹是热点数据库中的热点数据块的指纹,而第一文件元数据库中存储的是热点数据块的元数据信息,故热点指纹库、热点数据库及第一文件元数据库中的数据之间相互对应,当热点指纹库、热点数据库及第一文件元数据库中任一个库中的数据发生变化时,其他两个库中的数据也会随之发生变化。

需要说明的是,本步骤中用于淘汰数据的预设规则可以为lru算法、lfu算法或arc算法,而对于具体算法的内容在现有技术中都有具体描述,此处不再赘述,而对于计算淘汰数据的预设规则,此处也只是做出了示例性的说明,此处不做具体限制。

410、执行其他流程。

在步骤408之后,若第一热点指纹库、第一热点数据库及第一文件元数据库都未达到各自的存储阈值,则数据去重装置执行其他流程,此处不做具体限制。

本发明实施例中,存储系统的数据去重装置在接收内存设备发送的数据写入请求后,先根据写入请求,将该写入请求所指示的数据划分为数据块,计算数据块的指纹,并在内存设备的热点指纹库中查询判断,在热点指纹库中不存在该指纹时,继而在全闪存阵列的去重指纹库中查询判断,并在去重指纹库中找到该指纹时,确定该数据块属于重复数据,将全闪存阵列数据区域中的所述数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,从而增加数据块在内存设备中的访问命中率,减少在存储系统的去重索引中访问全闪存阵列的操作,达到提升数据去重速度和数据写入速度。

其次,存储系统将全闪存阵列的数据区域划分为多个数据容器,用于存储多个连续的数据块及多个连续数据块对应的指纹序列,并在全闪存阵列的去重指纹库中存在数据块的指纹时,通过数据去重装置将该数据块所在容器的指纹序列发送至内存设备的热点指纹库,增加了数据的处理速度,进一步提高了存储系统空间利用率及存储效率。

上面描述了本发明实施例中的存储系统的数据去重方法,下面来描述本发明实施例中的存储系统的数据去重装置,请参阅图6,本发明实施例中的存储系统的数据去重装置的一个实施例包括,包括:

接收单元601,用于接收内存设备发送的数据写入请求;

划分计算单元602,用于根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

第一查询判断单元603,用于查询内存设备的热点指纹库,并判断热点指纹库中是否存在指纹,内存设备包括:第一文件元数据库及热点指纹库;

第二查询判断单元604,用于在热点指纹库中不存在指纹时,查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库;

发送执行单元605,用于在去重指纹库中存在指纹时,确定该数据块属于重复数据,将数据区域中的该数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

需要说明的是,本实施例中各单元的作用与图2所述实施例中的存储系统的数据去重装置的作用类似,此处不再赘述。

本发明实施例中,接收单元601在接收内存设备发送的数据写入请求后,先根据写入请求,通过划分计算单元602将该写入请求所指示的数据划分为数据块,计算数据块的指纹,并在内存设备的热点指纹库中查询判断,在热点指纹库中不存在该指纹时,继而在全闪存阵列的去重指纹库中查询判断,并在去重指纹库中找到该指纹时,通过发送执行单元605确定该数据块属于重复数据,并将全闪存阵列数据区域中的所述数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,从而增加数据块在内存设备中的访问命中率,减少在存储系统的去重索引中访问全闪存阵列的操作,达到提升数据去重速度和数据写入速度。

基于图6所述的实施例,下面详细描述本发明实施例中的存储系统的数据去重装置,请参阅图7,本发明实施例中存储系统的数据去重装置的另一个实施例,包括:

接收单元701,用于接收内存设备发送的数据写入请求;

划分计算单元702,用于根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

第一查询判断单元703,用于查询内存设备的热点指纹库,并判断热点指纹库中是否存在指纹,内存设备包括:第一文件元数据库、热点数据库及热点指纹库;

第二查询判断单元704,用于在热点指纹库中不存在指纹时,查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库;

发送执行单元705,用于在去重指纹库中存在指纹时,确定该数据块属于重复数据,将数据区域中的数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

优选的,数据区域包括多个数据容器,每个数据容器用于存储多个连续数据块及多个连续数据块对应的指纹序列;

发送执行单元705还包括:

第一发送执行模块7051,用于在去重指纹库中存在数据块的指纹时,确定该数据块属于重复数据,将数据块所在的数据容器中的所述指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

去重单元706,用于在热点指纹库中存在指纹时,确定该数据块属于重复数据,并将数据块的元数据信息存储至第一文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度;

存储更新单元707,用于在去重指纹库中不存在指纹时,则对该数据块执行压缩操作,并将压缩后的数据块存储至数据容器,并更新数据容器的指纹序列,同时将压缩后数据块的元数据信息及原数据块的指纹更新至去重指纹库中,所述元数据信息包括:所述数据块压缩后的物理存储地址及所述数据块压缩后的长度。

优选的,内存设备还包括:热点数据库;

该装置还包括:

发送单元710,用于将所述数据容器中的所述数据块及相邻数据块发送至内存设备的热点数据库中;

第一判断单元711,用于判断所述热点数据库是否达到热点数据库的存储阈值;

第一淘汰单元712,用于在达到所述热点数据库的存储阈值时,按照预设的规则淘汰出第一热点数据,并更新所述热点数据库。

第二判断单元708,用于分别判断热点指纹库及第一文件元数据库是否达到各自的存储阈值;

第二淘汰单元709,用于在热点指纹库或第一文件元数据库达到存储阈值时,按照预设的规则淘汰出第一热点指纹及第一元数据,并更新热点指纹库及第一文件元数据库。

需要说明的是,本实施例中各单元的作用与图4所述实施例中的存储系统的数据去重装置的作用类似,此处不再赘述。

本发明实施例中,接收单元701在接收内存设备发送的数据写入请求后,先根据写入请求,通过划分计算单元702将该写入请求所指示的数据划分为数据块,计算数据块的指纹,并在内存设备的热点指纹库中查询判断,在热点指纹库中不存在该指纹时,继而在全闪存阵列的去重指纹库中查询判断,并在去重指纹库中找到该指纹时,通过发送执行单元705确定该数据块属于重复数据,将全闪存阵列数据区域中的所述数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,从而增加数据块在内存设备中的访问命中率,减少在存储系统的去重索引中访问全闪存阵列的操作,达到提升数据去重速度和数据写入速度。

其次,存储系统将全闪存阵列的数据区域划分为多个数据容器,用于存储多个连续的数据块及多个连续数据块对应的指纹序列,并在全闪存阵列的去重指纹库中存在数据块的指纹时,通过第一发送执行模块7051将该数据块所在容器中该数据块及相邻数据块的指纹序列发送至内存设备的热点指纹库,增加了数据的处理速度,进一步提高了存储系统的存储效率。

上面从模块化功能实体的角度对本发明实施例中的存储系统的数据去重装置进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:

该计算机装置用于实现存储系统的数据去重装置的功能,本发明实施例中计算机装置一个实施例包括:

处理器以及存储器;

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

接收内存设备发送的数据写入请求;

根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

查询内存设备的热点指纹库,并判断热点指纹库中是否存在指纹,内存设备包括:第一文件元数据库及热点指纹库;

若热点指纹库中不存在指纹,则查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库;

若去重指纹库中存在指纹,确定该数据块属于重复数据,则将数据区域中的数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

优选的,数据区域包括多个数据容器,数据容器用于存储多个连续数据块及多个连续数据块对应的指纹序列;

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

将数据块所在的数据容器中该数据块及相邻数据块的指纹序列发送至内存设备的热点指纹库中。在本发明的一些实施例中,处理器,还可以用于实现如下步骤:

若热点指纹库中存在指纹,确定该数据块属于重复数据,并将数据块的元数据信息存储至第一文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

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

若去重指纹库中不存在指纹,对该数据块执行压缩操作,并将压缩后的数据块存储至数据容器,并更新数据容器的指纹序列,同时将压缩后数据块的元数据信息及原数据块的指纹更新至去重指纹库中,所述元数据信息包括:所述数据块压缩后的物理存储地址及所述数据块压缩后的长度。

优选的,内存设备还包括:热点数据库;

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

用于将所述数据容器中的所述数据块及相邻数据块发送至内存设备的热点数据库中。

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

判断所述热点数据库是否达到热点数据库的存储阈值;

若达到所述热点数据库的存储阈值时,按照预设的规则淘汰出第一热点数据,并更新所述热点数据库。

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

分别判断热点指纹库及第一文件元数据库是否达到各自的存储阈值;

若热点指纹库或第一文件元数据库达到各自的存储阈值,则按照预设的规则淘汰出第一热点指纹及第一元数据,并更新热点指纹库及第一文件元数据库。

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

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

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

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

本发明还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现存储系统的数据去重装置的功能,其上存储有计算机程序,计算机程序被处理器执行时,处理器,可以用于执行如下步骤:

接收内存设备发送的数据写入请求;

根据数据写入请求,将数据写入请求所指示的数据划分为预设粒度的数据块,并计算数据块的指纹;

查询内存设备的热点指纹库,并判断热点指纹库中是否存在指纹,内存设备包括:第一文件元数据库及热点指纹库;

若热点指纹库中不存在指纹,则查询全闪存阵列的去重指纹库,并判断去重指纹库中是否存在指纹,全闪存阵列包括:第二文件元数据库、数据区域及去重指纹库;

若去重指纹库中存在指纹,则确定该数据块属于重复数据,将数据区域中的数据块及相邻数据块所对应的指纹序列发送至内存设备的热点指纹库中,并将数据块的元数据信息存储至第二文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

优选的,数据区域包括多个数据容器,数据容器用于存储多个连续数据块及多个连续数据块对应的容器指纹序列;

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

将数据块所在的数据容器中的容器指纹序列发送至内存设备的热点指纹库中。

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

若热点指纹库中存在指纹,则确定该数据块属于重复数据,并将数据块的元数据信息存储至第一文件元数据库中,元数据信息包括:数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

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

若去重指纹库中不存在指纹,则对该数据块执行压缩操作,并将压缩后的数据块存储至数据容器,并更新数据容器的指纹序列,同时将压缩后数据块的元数据信息及原数据块的指纹更新至去重指纹库中,所述元数据信息包括:所述数据块压缩后的物理存储地址及所述数据块压缩后的长度。

优选的,内存设备还包括:热点数据库;

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

用于将所述数据容器中的所述数据块及相邻数据块发送至内存设备的热点数据库中。

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

判断所述热点数据库是否达到热点数据库的存储阈值;

若达到所述热点数据库的存储阈值时,按照预设的规则淘汰出第一热点数据,并更新所述热点数据库。

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

分别判断热点指纹库及第一文件元数据库是否达到各自的存储阈值;

若热点指纹库或第一文件元数据库达到存储阈值,则按照预设的规则淘汰出第一热点指纹及第一元数据,并更新热点指纹库及第一文件元数据库。

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

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

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

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

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

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

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

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