CN111125033A - 一种基于全闪存阵列的空间回收方法及系统 - Google Patents

一种基于全闪存阵列的空间回收方法及系统 Download PDF

Info

Publication number
CN111125033A
CN111125033A CN201811289335.4A CN201811289335A CN111125033A CN 111125033 A CN111125033 A CN 111125033A CN 201811289335 A CN201811289335 A CN 201811289335A CN 111125033 A CN111125033 A CN 111125033A
Authority
CN
China
Prior art keywords
data block
data
storage unit
fingerprint
space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811289335.4A
Other languages
English (en)
Other versions
CN111125033B (zh
Inventor
夏文
古亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201811289335.4A priority Critical patent/CN111125033B/zh
Publication of CN111125033A publication Critical patent/CN111125033A/zh
Application granted granted Critical
Publication of CN111125033B publication Critical patent/CN111125033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种基于全闪存阵列的空间回收方法及系统,用于提高空间回收效率。本申请实施例方法包括:获取性能层中的被压缩数据;将被压缩数据切分为第一数据块,并计算其哈希值;将该哈希值与去重指纹库进行匹配,以确定是否存在匹配指纹;若否,对第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至容量层,而将第一数据块的指纹更新至去重指纹库中,将第一数据块的元数据信息更新至容量层的元数据区域;构建数据位图表,该表用于记录对应每个或多个存储单位的空间占用状态;扫描数据位图表,获取每个存储单位的空间占用状态,并根据每个存储单位的空间占用状态进行空间回收。

Description

一种基于全闪存阵列的空间回收方法及系统
技术领域
本申请涉及数据存储技术领域,尤其涉及一种基于全闪存阵列的空间回收方法及系统。
背景技术
一般地,为了节省数据的存储空间,文件在存储时,会对文件中的数据进行去重压缩,以减小数据的占用空间。
所谓去重,即通过计算数据块的安全哈希摘要(比如SHA1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,且重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的。
而数据压缩也是一种冗余数据消除技术,主要通过编码的方式消除冗余数据信息,即在保证原有数据信息不丢失的前提下,将原始内容进行转换,对于重复的字节序列用更少字节数的编码表示,从而达到消除部分冗余数据并最终节省存储空间的目的。
而对于现有的压缩去重技术,当文件数据发生更新(删除或更改)时,即在存储原有压缩数据的地址空间中,删除掉原压缩数据,或对原压缩数据进行更新,如:假设原文件中一个非重复数据块压缩后的存储空间为2K,而当文件数据删除后,则会出现2K的空间碎片,而当文件数据更改后,若更新后非重复数据块压缩后的数据长度为1K,则会出现1K的空间碎片,当在后期对空间碎片进行回收时,因为无法快速获知空间碎片的物理存储地址,而导致无法快速对空间碎片进行定向回收,从而降低了空间回收的效率。
发明内容
本申请实施例提供了一种基于全闪存阵列的空间回收方法,用于提高空间回收的效率。
本申请实施例第一方面提供了一种基于全闪存阵列的空间回收方法,包括:
获取所述性能层中的被压缩数据;
将所述被压缩数据切分为第一数据块,计算所述第一数据块的哈希值;
将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;
构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
优选的,所述存储单位的空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
当所述存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态为所述第一状态,否则,所述数据位图表中记录对应存储单位的空间占用状态为所述第二状态。
优选的,所述扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述空间占用状态进行空间回收,包括:
扫描所述数据位图表,确定所述每个存储单位的当前空间占用状态为所述第一状态或是所述第二状态;
当所述存储单位的当前空间占用状态为所述第一状态时,对所述存储单位所占用的空间进行回收。
优选的,所述方法还包括:
对所述去重指纹库中指纹的引用次数执行计数管理;
所述对所述去重指纹库中指纹的引用次数执行计数管理,包括:
当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
优选的,所述方法还包括:
当所述去重指纹库中第一指纹的引用次数为零时,则在所述数据位图表中,引用所述第一指纹的第一数据块所对应的存储单位的空间占用状态为所述第一状态。
优选的,所述方法还包括:
若存在所述匹配指纹,则确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。
优选的,在将压缩后的第一数据块以日志追加写的方式回写至所述容量层之后,所述方法还包括:
将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。
本申请实施例第一方面提供了一种基于全闪存阵列的空间回收系统,全闪存阵列包括性能层和容量层,该系统包括:
获取单元,用于获取所述性能层中的被压缩数据;
切分计算单元,用于将所述被压缩数据切分为第一数据块,计算所述第一数据块的哈希值;
匹配单元,用于将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
压缩单元,用于在不存在所述匹配指纹时,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;
构建单元,用于构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描单元,用于扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
优选的,所述存储单位的空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
当所述存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态为所述第一状态,否则,所述数据位图表中记录对应存储单位的空间占用状态为所述第二状态。
优选的,所述扫描单元,包括:
扫描模块,用于扫描所述数据位图表,确定所述每个存储单位的当前空间占用状态为所述第一状态或是所述第二状态;
回收模块,用于当所述存储单位的当前空间占用状态为所述第一状态时,对所述存储单位所占用的空间进行回收。
优选的,所述系统还包括:
计数单元,用于对所述去重指纹库中指纹的引用次数执行计数管理;
所述计数单元,包括:
第一计数模块,用于当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
第二计数模块,用于当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
优选的,当所述去重指纹库中第一指纹的引用次数为零时,则在所述数据位图表中,引用所述第一指纹的第一数据块所对应的存储单位的空间占用状态为所述第一状态。
优选的,所述系统还包括:
去重单元,用于在存在所述匹配指纹时,确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。
优选的,所述系统还包括:
更新单元,用以将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。
本申请还提供了一种基于全闪存阵列的空间回收系统,包括处理器,该处理器在执行存储于存储器上的计算机程序时,用于实现本申请实施例第一方面提供的基于全闪存阵列的空间回收方法。
本申请还提供了一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,用于实现本申请实施例第一方面提供的基于全闪存阵列的空间回收方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,将非重复数据块压缩后,以预设长度的存储单位,以日志追加写的方式在容量层中进行存储,并构建数据位图表,用于对应记录每个存储单位的空间占用状态,使得当存储单位中的第一数据块发生更新时,则对应该存储单位的数据位图表由第二状态变更会第一状态,从而在后期空间回收时,即可通过扫描数据位图表,获知容量层中每个存储单位的空间占用状态,并在该存储单位的空间占用状态为第一状态时,对该存储单位所占用的空间进行快速的定向回收,且数据位图表存储的数据量较小,使得通过对数据位图表的快速扫描,实现对容量层中的空间碎片快速进行定向回收。
附图说明
图1为本申请实施例中基于全闪存阵列的空间回收方法的一个实施例示意图;
图2为本申请实施例中全闪存阵列的物理架构示意图;
图3A为本申请实施例中对压缩后的第一数据块是以日志追加写的方式进行异地更新的示意图;
图3B为本申请实施例中数据位图表的示意图;
图4为本申请实施例中基于全闪存阵列的空间回收方法的另一个实施例示意图;
图5A为本申请实施例中数据去重前后逻辑地址及物理地址的示意图;
图5B为本申请实施例中容量层元数据区域中元数据信息的数据逻辑组织关系示意图。
图6为本申请实施例中基于全闪存阵列的空间回收方法的另一个实施例示意图;
图7为本申请实施例中基于全闪存阵列的空间回收系统的一个实施例示意图;
图8为本申请实施例中基于全闪存阵列的空间回收系统的另一个实施例示意图。
具体实施方式
本申请实施例提供了一种基于全闪存阵列的空间回收方法及系统,用于提高空间回收的效率。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
一般地,为了节省数据的存储空间,文件在存储时,会对文件中的数据进行去重压缩,以减小数据的占用空间。
所谓去重,即通过计算数据块的安全哈希摘要(比如SHA1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,且重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的。
而数据压缩也是一种冗余数据消除技术,主要通过编码的方式消除冗余数据信息,即在保证原有数据信息不丢失的前提下,将原始内容进行转换,对于重复的字节序列用更少字节数的编码表示,从而达到消除部分冗余数据并最终节省存储空间的目的。
而对于现有的压缩去重技术,一般是将被压缩数据块的哈希值与去重指纹库中的指纹进行比对,若存在匹配的指纹,则确定被压缩数据块为重复数据,则只需记录重复数据的指针信息即可;若不存在匹配的指纹,则确定被压缩数据块为非重复数据块,则将被压缩数据块进行压缩后进行存储,以达到节省存储空间的目的,而这种压缩存储方式,在当文件数据发生更新(删除或更改)时,一般是对数据执行原地更新,即在存储原有压缩数据的地址空间中,删除掉原压缩数据,或对原压缩数据进行更新,如:假设原文件中一个非重复数据块压缩后的存储空间为2K,而当文件数据删除后,则会出现2K的空间碎片,而当文件数据更改后,若更新后非重复数据块压缩后的数据长度为1K,则会出现1K的空间碎片,当在后期对空间碎片进行回收时,因为无法快速获知空间碎片的物理存储地址,而导致无法快速对空间碎片进行定向回收,从而降低了空间回收的效率。
基于该问题,本申请提出了一种基于全闪存阵列的空间回收方法,用于提高空间回收的效率。
为方便理解,下面对本申请中的全闪存阵列的空间回收方法进行描述,请参阅图1,本申请实施例中基于全闪存阵列的空间回收方法的一个实施例,包括:
101、获取所述性能层中的被压缩数据;
一般的,对于一台带有处理器的设备而言,存储系统的IO性能是影响设备系统性能的主要因素,而当设备的外存储器部署为全闪存阵列时,一般的全闪存阵列的物理架构分为容量层和性能层,其中,容量层是指IO响应较慢的SSD固态硬盘,或普通硬盘,而性能层是指IO响应较快的SSD固态硬盘,具体请参阅图2所示的全闪存阵列的物理架构,其中性能层又称为写缓存,容量层又称读缓存,而如何避免在性能层的数据回写至容量层的过程中,出现当数据更新时,对出现的空间碎片快速进行定向回收的问题,是本申请要解决的技术问题。
当性能层中的数据回写至容量层的过程中,对回写的数据进行去重压缩,而在去重压缩前,需要获取性能层中被压缩的数据,其中被压缩的数据可以是各种文件数据,也可以是应用软件中的消息数据,此处不做具体限制。
102、将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;
数据在压缩的过程中,一般是将数据切分为预设长度的第一数据块,其中,数据块的切分粒度可以是2K、4K、8K或其他大小,并在切分完成后,或在执行切分时,计算第一数据块的哈希值。
具体的,哈希算法是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果。故一般可以将每个数据快的哈希值视为该数据块的指纹。
需要说明的是,在数据块的切分过程中,对于预设长度的大小,可以根据具体应用的实际需求进行切分,此处不做具体限制。
103、将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹,若否,则执行步骤104,若是,则执行步骤107。
得到第一数据块的哈希值,即第一数据块的指纹后,可以将第一数据块与容量层中预先存储的去重指纹库进行匹配,以确定去重指纹库中是否存在匹配的指纹,若否,则执行步骤104,若是,则执行步骤107。
104、确定第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层中的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度;
当去重指纹库中不存在第一数据块对应的指纹时,说明第一数据块为非重复数据块,则对第一数据块进行压缩,优选的压缩算法为LZ4压缩算法。当压缩完成后,将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至容量层,并将第一数据块的哈希值(指纹)更新至去重指纹库中,而将第一数据块的元数据信息更新至文件元数据区域,所述元数据信息包括:第一数据块压缩后的物理存储地址及第一数据块压缩后的长度,以便于当第一数据块下次出现时,可以作为重复数据块进行处理,及后期能够根据第一数据块的元数据信息对第一数据块执行解压恢复。
需要说明的是,也可以将第一数据块的哈希值(指纹)及第一数据块的元数据信息同时更新至去重指纹库中,只要能够实现后期根据第一数据块的元数据信息对第一数据块执行解压恢复即可,此处对第一数据块元数据信息的更新地址,不做具体限制。
具体的,如假设原文件中一个非重复数据块压缩后的存储空间为6K,则将6K以预设长度(如1K)为存储单位回写至容量层,这样,压缩后为6K的非重复数据块在存储时,即占用6个1K的存储单位,需要说明的是,预设长度的存储单位也可以是2K,这样,压缩后为6K的非重复数据块在存储时,即占用3个2K的存储单位,此处对存储单位的预设长度不做具体限制。
因为日志追加写是按照时间顺序执行顺序写,故当第一数据块对应的文件更新时,对应文件中的新数据块执行压缩后,则是以时间顺序来执行追加写,即在存储介质中是存储在新的存储空间地址(新的存储单位)中,也即异地更新,而非在原来第一数据块对应的存储地址进行更新,这样就避免了文件数据更新后,新的数据块压缩后的长度与原来第一数据块压缩后存储空间不匹配的问题,进而避免了存储介质中存储空间的浪费,也避免了存储介质中产生更小的空间碎片,提高了对存储介质中存储空间的利用率,另外,因为异地更新只用执行写操作,而原地更新却要先执行读操作,再执行写操作,所以日志追加写的异地更新方式,也进一步提高了容量层的IO性能。
进一步,因为SSD盘的最小写入单元为4K,且在一个最小写入单元未写满时,若下次还需要在该最小写入单元执行写操作时,根据SSD盘擦除写的特性,需要先对该最小写入单元中预先存储的已存储数据进行读取,然后擦除,再将需要新写入的新数据和读取出来的已存储数据重新写入,故本申请通过日志追加写的方式对文件数据执行异地更新时,还可以将压缩后的数据以预设长度为存储单位先存储至日志存储单元,并在日志存储单元写满后,再将日志存储单元回写至容量层,其中,日志存储单元的存储空间为容量层最小写入单元的整数倍,即4K的整数倍,如8K、12K或16K,这样,既适配了SSD盘最小写单元为4K的特性,也避免了在SSD盘中产生随机小写(即写入数据的长度小于最小写入单元4K)的问题,即进一步避免了存储介质中存储空间的浪费问题。
容易理解的是,存储单位是远小于日志存储单元的空间单位,且该存储单位主要是便于步骤105中构建数据位图所用,存储单位越小,越容易识别每个存储单位中数据的空间占用状态,但该存储单位越小,也会相应使得数据位图表中的数据量较大,故存储单位的大小可以根据实际应用中处理器的配置进行具体设置,此处不做具体限制。如预设长度的存储单位还可以是2K,3K或其他值,但该存储单位的预设长度一般小于容量层的最小写入单元(4K),此处对存储单位的预设长度不做具体限制。
105、构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
将压缩后的第一数据块以预设长度的存储单位进行存储后,还可以进一步构建数据位图表,其中,该数据位图表用于记录对应每个存储单位(如1K)或多个存储单位的空间占用状态,每个存储单位的空间占用状态包括第一状态和第二状态,第一状态表示空间占用状态为无效占用,即该存储单位中存储的数据为无效数据,而第二状态表示空间占用状态为有效占用,即该存储单位中的数据为有效数据。
当压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至容量层时,则是在某个存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态由第二状态更改为第一状态,,否则,所述数据位图表中记录对应存储单位的空间占用状态仍为第二状态,具体的,为便于操作,可以在数据位图表中用数字“0”来表示存储单位的空间占用状态为第一状态,而用数字“1”来表示存储单位的空间占用状态为第二状态。
因为在第一数据块发生更新(删除或更改)时,压缩后的第一数据块是以日志追加写的方式进行异地更新,即存储在新的存储地址(存储单位)中,第一数据块原有存储地址的数据将成为无效数据,所以当存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态都为第一状态,而当第一数据块正常存在(未发生更新)时,则数据位图表中记录对应存储单位的空间占用状态为第二状态。图3A为本申请实施例中对压缩后的第一数据块是以日志追加写的方式进行异地更新的示意图,且图3A中也示出了数据块的逻辑地址、匹配指纹及匹配指纹对应的物理地址之间的对应关系;图3B为本申请实施例中数据位图表的示意图。
106、扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收;
为了明确容量层中的无效数据,可以通过扫描数据位图表,来快速获取每个存储单位的空间占用状态,并根据每个存储单位的空间占用状态进行空间回收。
具体的,数据位图表对应记录每个存储单位的空间占用状态,当存储单位中存储的第一数据块发生更新时,则该存储单位的空间占用状态为无效占用,即该存储单位中存储的数据为无效数据,对应数据位图表中该存储单位的空间占用状态由第二状态更改为第一状态,故可以通过扫描数据位图表,来获取数据位图表中处于第一状态的存储单位的物理地址,并对处于第一状态的存储单位的物理地址进行定向的空间回收,即删除该存储单位中的无效数据。
107、执行其他流程。
当第一数据块与去重指纹库中的指纹匹配,则执行其他流程,此处不做具体限制。
本申请实施例中,将非重复数据块压缩后,以预设长度的存储单位,以日志追加写的方式在容量层中进行存储,并构建数据位图表,用于对应记录每个存储单位的空间占用状态,使得当存储单位中的第一数据块发生更新时,则对应该存储单位的数据位图表由第二状态变更会第一状态,从而在后期空间回收时,即可通过扫描数据位图表,获知容量层中每个存储单位的空间占用状态,并在该存储单位的空间占用状态为第一状态时,对该存储单位所占用的空间进行快速的定向回收,且数据位图表存储的数据量较小,使得通过对数据位图表的快速扫描,实现对容量层中的空间碎片快速进行定向回收。
基于图1所述的实施例,下面继续描述当第一数据块的指纹与容量层中的去重指纹库中的指纹匹配的情况,请参阅图4,本申请实施例中空间回收方法的另一个实施例,包括:
108、若存在匹配指纹,则确定第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系;
当第一数据块的指纹与去重指纹库中的指纹匹配时,则确定第一数据块为重复数据,则将第一数据块的元数据信息回写至容量层的元数据区域,以用于在数据解压过程中根据第一数据块的元数据信息对第一数据块进行恢复。
具体的,第一数据块的元数据信息包括第一数据块在被压缩数据中的逻辑地址、匹配指纹、匹配指纹的物理地址之间的对应关系,以便于后期对第一数据块进行解压恢复。具体的,第一数据块在被压缩数据中的逻辑地址是指第一数据块在被压缩数据中逻辑顺序(如在图5A中,数据块B5为文件1中的第一个数据块),而匹配指纹的物理地址,是指匹配指纹在容量层中具体的物理存储地址,以便于后期根据该物理地址对第一数据块执行解压恢复。其中,图5A为本申请实施例中数据去重前后逻辑地址及物理地址的示意图;图5B为本申请实施例中容量层元数据区域中元数据信息的数据逻辑组织关系示意图,在该数据逻辑组织关系图中,容易理解的是,多个数据块可以对应同一个指纹,即多个(N个)逻辑地址对应同一个指纹,而一个指纹只对应自身的一个物理存储地址,以用于后期根据该指纹对应数据块的物理存储,对该数据块执行解压恢复。
109、对去重指纹库中指纹的引用次数执行计数管理。
为了明确容量层中的空间碎片信息,即容量层中原有存储空间中的存储数据被删除后所产生的空间碎片,还可以对去重指纹库中指纹的引用次数执行计数管理,具体可以通过以下两个方面进行计数管理:
一、当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
如被压缩数据中的第一数据块在去重指纹库中存在匹配指纹时,则对该匹配指纹的引用次数执行增长式运算,优选的为累加式运算,即当第一数据块在去重指纹库中存在匹配指纹时,对该匹配指纹的引用次数执行“+1”运算,当然,增长式运算还可以是乘法运算,或混合运算,只要是正相关运算即可,此处不做具体限制。
二、当引用所述去重指纹库中匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
具体的,如去重指纹库中的某个匹配指纹对应的文件数据发生删除或更改时,则将对该匹配指纹的引用次数执行递减式运算,优选的为减法运算,即当匹配指纹对应的第一数据块发生删除或更新时,则对该匹配指纹的引用次数执行“-1”运算,当然,递减式运算还可以是除法运算,或混合运算,只要是负相关运算即可,此处不做具体限制。
这样,通过对去重指纹库中指纹引用次数的管理,便可以明确每个指纹的引用情况,当去重指纹库中第一指纹的引用次数为0时,则在对应的数据位图表中,引用第一指纹的第一数据块所对应的存储单位的空间占用状态为第一状态,即当第一指纹的引用次数为0时,则在对应的数据位图表中,引用第一指纹的第一数据块对应的存储单位的空间占用状态为无效占用,则可以对该存储单位所占用的空间进行定向回收,即删除该存储单位所占用空间中的无效数据。
本申请实施例中,还可以对去重指纹库中指纹的引用次数执行计数管理,从而使得在去重指纹中第一指纹的引用次数为0时,则在对应的数据位图表中,引用第一指纹的第一数据块对应的存储单位的空间占用状态为无效占用,从而实现对该存储单位所占用的空间快速定向回收。
基于图1所述的实施例的步骤106,当压缩后的第一数据块以预设长度的存储单位回写至日志存储单元时,还可以执行以下步骤,来实现对日志存储单位中无效数据的自动回收,具体请参阅图6,本实施例中基于全闪存阵列的空间回收方法的另一个实施例,包括:
1061、扫描所述数据位图表,获取每个日志存储单元中处于第一状态的存储单位的数量,并判断所述处于第一状态的存储单位所占用的空间是否大于预设的空间占用阈值,若是,则执行步骤1062,若否,则执行步骤1063;
在数据块更新的过程中,会出现多个存储单位的空间状态为无效占用,即该存储单位中的存储数据为无效数据,为了及时对存储单位中的无效数据进行空间回收,则可以通过实时或定时扫描数据位图表,并在扫描的过程中,获取每个日志存储单元中处于第一状态的存储单位的数量,并判断处于第一状态的存储单位所占用的空间是否大于预设的空间阈值,如:在某个日志存储单元(200K)中,处于第一状态(即无效占用)的存储单位的数量为100个,若每个存储单位为1K,则处于第一状态的存储单位所占用的空间为日志存储单元的50%,若预设的空间占用阈值为40%,而处于第一状态的存储单位所占用的空间利用率50%大于预设的空间占用阈值40%,即该日志存储单元中的无效数据超出40%,则执行步骤1062,否则,执行步骤1063。
1062、删除日志存储单元中处于第一状态的存储单位中的更新数据块,获取日志存储单元中处于第二状态的存储单位中的未更新数据块,并将未更新数据块迁移至新的存储单位,同时将未更新数据块的元数据信息更新至文件元数据区域中,未更新数据块的元数据信息包括未更新数据块的物理存储地址及未更新数据块压缩后的长度;
若处于第一状态的存储单位在日志存储单元中所占用的空间率大于预设的空间占用阈值,则表明该日志存储单元中的无效数据过多,可以对该日志存储单元执行空间回收操作,即删除该日志存储单元中处于第一状态的存储单位中的更新数据块,获取该日志存储单元中处于第二状态的存储单位中的未更新数据块,并将未更新数据块迁移至新的存储单位(即新的存储地址),同时将未更新数据块的元数据信息更新至文件元数据区域中,其中,未更新数据块的元数据信息包括未更新数据块的物理存储地址及未更新数据块压缩后的长度,以便于后期根据未更新数据块的元数据信息对数据执行解压恢复操作。
1063、执行其他流程。
若每个日志存储单元中处于第一状态的存储单位所占用的空间都不大于预设的空间占用阈值,则执行其他流程,此处不再具体限制。
上述实施例中,可以通过每个日志存储单元预设的空间阈值,对该日志存储单元中处于第一状态的存储单位所占用的空间大小进行判断,并在处于第一状态的存储单位所占用的空间大小大于预设的空间阈值时,实现对每个日志存储单元中无效数据的自动化回收。
上面描述了本申请实施例中基于全闪存阵列的空间回收方法,下面来描述本申请实施例中基于全闪存阵列的空间回收系统,请参阅图7,本申请实施例中一种基于全闪存阵列的空间回收系统的一个实施例,包括:
获取单元701,用于获取所述性能层中的被压缩数据;
切分计算单元702,用于将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;
匹配单元703,用于将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
压缩单元704,用于在不存在所述匹配指纹时,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层中的文件元数据区域中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度;
构建单元705,用于构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描单元706,用于扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
需要说明的是,本实施例中各单元的作用与图1所述实施例中各单元的作用类似,此处不再赘述。
本申请实施例中,通过压缩单元704将非重复数据块压缩后,以预设长度的存储单位,以日志追加写的方式在容量层中进行存储,并通过构建单元705构建数据位图表,用于对应记录每个存储单位的空间占用状态,使得当存储单位中的第一数据块发生更新时,则对应该存储单位的数据位图表由第二状态变更会第一状态,从而在后期空间回收时,即可通过扫描数据位图表,获知容量层中每个存储单位的空间占用状态,并在该存储单位的空间占用状态为第一状态时,对该存储单位所占用的空间进行快速的定向回收,且数据位图表存储的数据量较小,使得通过对数据位图表的快速扫描,实现对容量层中的空间碎片快速进行定向回收。
基于图7所述的实施例,下面详细描述本申请实施例中基于全闪存阵列的空间回收系统,请参阅图8,本申请实施例中基于全闪存阵列的空间回收系统的另一个实施例,包括:
获取单元801,用于获取所述性能层中的被压缩数据;
切分计算单元802,用于将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;
匹配单元803,用于将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
压缩单元804,用于在不存在所述匹配指纹时,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度;
构建单元805,用于构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描单元806,用于扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
优选的,所述存储单位的空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
当所述存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态为所述第一状态,否则,所述数据位图表中记录对应存储单位的空间占用状态为所述第二状态。
优选的,压缩单元804,包括:
压缩模块8041,用于在不存在所述匹配指纹时,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度;
优选的,所述扫描单元806,包括:
扫描模块8061,用于扫描所述数据位图表,获取每个日志存储单元中处于第一状态的存储单位的数量,并判断所述处于第一状态的存储单位所占用的空间是否大于预设的空间占用阈值;
回收模块8062,用于当处于第一状态的存储单位所占用的空间大于预设的空间占用阈值时,对所述存储单位所占用的空间进行回收。
优选的,所述系统还包括:
计数单元807,用于对所述去重指纹库中指纹的引用次数执行计数管理;
所述计数单元807,包括:
第一计数模块8071,用于当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
第二计数模块8072,用于当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
优选的,当所述去重指纹库中第一指纹的引用次数为零时,则在所述数据位图表中,引用所述第一指纹的第一数据块所对应的存储单位的空间占用状态为所述第一状态。
优选的,所述系统还包括:
去重单元808,用于在存在所述匹配指纹时,确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。
需要说明的是,本实施例中各单元的作用与图1、图4及图6所述实施例中描述的类似,此处不再赘述。
本申请实施例中,通过压缩单元804将非重复数据块压缩后,以预设长度的存储单位,以日志追加写的方式在容量层中进行存储,并通过构建单元805构建数据位图表,用于对应记录每个存储单位的空间占用状态,使得当存储单位中的第一数据块发生更新时,则对应该存储单位的数据位图表由第二状态变更会第一状态,从而在后期空间回收时,即可通过扫描数据位图表,获知容量层中每个存储单位的空间占用状态,并在该存储单位的空间占用状态为第一状态时,对该存储单位所占用的空间进行快速的定向回收,且数据位图表存储的数据量较小,使得通过对数据位图表的快速扫描,实现对容量层中的空间碎片快速进行定向回收。
其次,本申请实施例还可以对去重指纹库中指纹的引用次数执行计数管理,从而使得在去重指纹中第一指纹的引用次数为0时,则在对应的数据位图表中,引用第一指纹的第一数据块对应的存储单位的空间占用状态为无效占用,从而实现对该存储单位所占用的空间快速定向回收。
上面从模块化功能实体的角度对本申请实施例中的基于全闪存阵列的空间回收系统进行了描述,下面从硬件处理的角度对本申请实施例中的全闪存阵列的空间回收系统进行描述:
本申请实施例中全闪存阵列的数据压缩系统一个实施例包括:
处理器以及存储器;
存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,可以实现如下步骤:
获取所述性能层中的被压缩数据;
将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;
将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度;
构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
在本申请的一些实施例中,处理器,还可以用于实现如下步骤:
所述存储单位的空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
当所述存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态为所述第一状态,否则,所述数据位图表中记录对应存储单位的空间占用状态为所述第二状态。
在本申请的一些实施例中,处理器,还可以用于实现如下步骤:
扫描所述数据位图表,确定所述每个存储单位的当前空间占用状态为所述第一状态或是所述第二状态;
当所述存储单位的当前空间占用状态为所述第一状态时,对所述存储单位所占用的空间进行回收。
在本申请的一些实施例中,处理器,还可以用于实现如下步骤:
对所述去重指纹库中指纹的引用次数执行计数管理;
在本申请的一些实施例中,处理器,还可以用于实现如下步骤:
当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
在本申请的一些实施例中,处理器,还可以用于实现如下步骤:
当所述去重指纹库中第一指纹的引用次数为零时,则在所述数据位图表中,引用所述第一指纹的第一数据块所对应的存储单位的空间占用状态为所述第一状态。
在本申请的一些实施例中,处理器,还可以用于实现如下步骤:
若存在所述匹配指纹,则确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。
在本申请的一些实施例中,处理器,还可以用于实现如下步骤:
若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。
可以理解的是,上述说明的基于全闪存阵列的空间回收系统中的处理器执行所述计算机程序时,也可以实现上述对应的各装置实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述基于全闪存阵列的空间回收系统中的执行过程。例如,所述计算机程序可以被分割成上述基于全闪存阵列的空间回收系统中的各单元,各单元可以实现如上述相应基于全闪存阵列的空间回收系统说明的具体功能。
所述基于全闪存阵列的空间回收系统可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述基于全闪存阵列的空间回收系统可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是全闪存阵列的空间回收系统的示例,并不构成对全闪存阵列的空间回收系统的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于全闪存阵列的空间回收系统还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述基于全闪存阵列的空间回收系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现基于全闪存阵列的空间回收系统的功能,其上存储有计算机程序,计算机程序被处理器执行时,处理器,可以用于执行如下步骤:
获取所述性能层中的被压缩数据;
将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;
将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度;
构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
所述存储单位的空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
当所述存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态为所述第一状态,否则,所述数据位图表中记录对应存储单位的空间占用状态为所述第二状态。
在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
扫描所述数据位图表,确定所述每个存储单位的当前空间占用状态为所述第一状态或是所述第二状态;
当所述存储单位的当前空间占用状态为所述第一状态时,对所述存储单位所占用的空间进行回收。
在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
对所述去重指纹库中指纹的引用次数执行计数管理;
在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
当所述去重指纹库中第一指纹的引用次数为零时,则在所述数据位图表中,引用所述第一指纹的第一数据块所对应的存储单位的空间占用状态为所述第一状态。
在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
若存在所述匹配指纹,则确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。
在本申请的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,可以具体用于执行如下步骤:
若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍,而将所述第一数据块的指纹更新至所述去重指纹库中,将第一数据块的元数据信息更新至容量层的文件元数据区域,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度。
可以理解的是,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在相应的一个计算机可读取存储介质中。基于这样的理解,本申请实现上述相应的实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (18)

1.一种基于全闪存阵列的空间回收方法,所述全闪存阵列包括性能层和容量层,其特征在于,所述方法包括:
获取所述性能层中的被压缩数据;
将所述被压缩数据切分为第一数据块,计算所述第一数据块的哈希值;
将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;
构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
2.根据权利要求1所述的方法,其特征在于,所述存储单位的空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
当所述存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态为所述第一状态,否则,所述数据位图表中记录对应存储单位的空间占用状态为所述第二状态。
3.根据权利要求2所述的方法,其特征在于,所述扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述空间占用状态进行空间回收,包括:
扫描所述数据位图表,确定所述每个存储单位的当前空间占用状态为所述第一状态或是所述第二状态;
当所述存储单位的当前空间占用状态为所述第一状态时,对所述存储单位所占用的空间进行回收。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述去重指纹库中指纹的引用次数执行计数管理;
所述对所述去重指纹库中指纹的引用次数执行计数管理,包括:
当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述去重指纹库中第一指纹的引用次数为零时,则在所述数据位图表中,引用所述第一指纹的第一数据块所对应的存储单位的空间占用状态为所述第一状态。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
若存在所述匹配指纹,则确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。
7.根据权利要求6所述的方法,其特征在于,所述将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,包括:
将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍。
8.根据权利要求7所述的方法,其特征在于,在将压缩后的第一数据块以日志追加写的方式回写至所述容量层之后,所述方法还包括:
将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。
9.一种基于全闪存阵列的空间回收系统,所述全闪存阵列包括性能层和容量层,其特征在于,所述系统包括:
获取单元,用于获取所述性能层中的被压缩数据;
切分计算单元,用于将所述被压缩数据切分为第一数据块,计算所述第一数据块的哈希值;
匹配单元,用于将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
压缩单元,用于在不存在所述匹配指纹时,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,并以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;
构建单元,用于构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态;
扫描单元,用于扫描所述数据位图表,获取所述每个存储单位的空间占用状态,并根据所述每个存储单位的空间占用状态进行空间回收。
10.根据权利要求9所述的系统,其特征在于,所述存储单位的空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
当所述存储单位中的第一数据块发生更改或删除时,则所述数据位图表中记录对应存储单位的空间占用状态为所述第一状态,否则,所述数据位图表中记录对应存储单位的空间占用状态为所述第二状态。
11.根据权利要求10所述的系统,其特征在于,所述扫描单元,包括:
扫描模块,用于扫描所述数据位图表,确定所述每个存储单位的当前空间占用状态为所述第一状态或是所述第二状态;
回收模块,用于当所述存储单位的当前空间占用状态为所述第一状态时,对所述存储单位所占用的空间进行回收。
12.根据权利要求9所述的系统,其特征在于,所述系统还包括:
计数单元,用于对所述去重指纹库中指纹的引用次数执行计数管理;
所述计数单元,包括:
第一计数模块,用于当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
第二计数模块,用于当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。
13.根据权利要求12所述的系统,其特征在于,
当所述去重指纹库中第一指纹的引用次数为零时,则在所述数据位图表中,引用所述第一指纹的第一数据块所对应的存储单位的空间占用状态为所述第一状态。
14.根据权利要求9至13中任一项所述的系统,其特征在于,所述系统还包括:
去重单元,用于在存在所述匹配指纹时,确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。
15.根据权利要求14所述的系统,其特征在于,所述压缩单元,包括:
压缩模块,用于在不存在所述匹配指纹时,确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,将压缩后的第一数据块以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍。
16.根据权利要求15所述的系统,其特征在于,所述系统还包括:
更新单元,用于将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。
17.一种基于全闪存阵列的空间回收系统,包括处理器,其特征在于,所述处理器在执行存储于存储器上的计算机程序时,用于实现如权利要求1至8中任一项所述的基于全闪存阵列的空间回收方法。
18.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,用于实现如权利要求1至8中任一项所述的基于全闪存阵列的空间回收方法。
CN201811289335.4A 2018-10-31 2018-10-31 一种基于全闪存阵列的空间回收方法及系统 Active CN111125033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811289335.4A CN111125033B (zh) 2018-10-31 2018-10-31 一种基于全闪存阵列的空间回收方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811289335.4A CN111125033B (zh) 2018-10-31 2018-10-31 一种基于全闪存阵列的空间回收方法及系统

Publications (2)

Publication Number Publication Date
CN111125033A true CN111125033A (zh) 2020-05-08
CN111125033B CN111125033B (zh) 2024-04-09

Family

ID=70485668

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811289335.4A Active CN111125033B (zh) 2018-10-31 2018-10-31 一种基于全闪存阵列的空间回收方法及系统

Country Status (1)

Country Link
CN (1) CN111125033B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913657A (zh) * 2020-07-10 2020-11-10 长沙景嘉微电子股份有限公司 块数据读写方法、装置、系统及存储介质
CN112699067A (zh) * 2021-01-04 2021-04-23 瑞芯微电子股份有限公司 一种指令寻址方法及装置
CN113064556A (zh) * 2021-04-29 2021-07-02 山东英信计算机技术有限公司 一种bios的数据存储方法、装置、设备及存储介质
CN113608687A (zh) * 2021-06-30 2021-11-05 苏州浪潮智能科技有限公司 一种空间回收方法、装置、设备及可读存储介质
CN113836051A (zh) * 2021-11-29 2021-12-24 苏州浪潮智能科技有限公司 一种元数据空间回收方法、装置、设备及存储介质
CN115543937A (zh) * 2022-03-22 2022-12-30 荣耀终端有限公司 文件碎片整理方法及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102982180A (zh) * 2012-12-18 2013-03-20 华为技术有限公司 数据存储方法及设备
CN103049222A (zh) * 2012-12-28 2013-04-17 中国船舶重工集团公司第七0九研究所 一种raid5的写io优化处理方法
CN104035729A (zh) * 2014-05-22 2014-09-10 中国科学院计算技术研究所 一种日志映射的块设备精简配置方法
US20150199147A1 (en) * 2014-01-14 2015-07-16 International Business Machines Corporation Storage thin provisioning and space reclamation
CN106502587A (zh) * 2016-10-19 2017-03-15 华为技术有限公司 磁盘数据管理方法和磁盘控制装置
CN106951375A (zh) * 2016-01-06 2017-07-14 北京忆恒创源科技有限公司 在存储系统中删除快照卷的方法及装置
CN107797934A (zh) * 2016-09-05 2018-03-13 北京忆恒创源科技有限公司 处理去分配命令的方法与存储设备
CN108427538A (zh) * 2018-03-15 2018-08-21 深信服科技股份有限公司 全闪存阵列的存储数据压缩方法、装置、及可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102982180A (zh) * 2012-12-18 2013-03-20 华为技术有限公司 数据存储方法及设备
CN103049222A (zh) * 2012-12-28 2013-04-17 中国船舶重工集团公司第七0九研究所 一种raid5的写io优化处理方法
US20150199147A1 (en) * 2014-01-14 2015-07-16 International Business Machines Corporation Storage thin provisioning and space reclamation
CN104035729A (zh) * 2014-05-22 2014-09-10 中国科学院计算技术研究所 一种日志映射的块设备精简配置方法
CN106951375A (zh) * 2016-01-06 2017-07-14 北京忆恒创源科技有限公司 在存储系统中删除快照卷的方法及装置
CN107797934A (zh) * 2016-09-05 2018-03-13 北京忆恒创源科技有限公司 处理去分配命令的方法与存储设备
CN106502587A (zh) * 2016-10-19 2017-03-15 华为技术有限公司 磁盘数据管理方法和磁盘控制装置
CN108427538A (zh) * 2018-03-15 2018-08-21 深信服科技股份有限公司 全闪存阵列的存储数据压缩方法、装置、及可读存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913657A (zh) * 2020-07-10 2020-11-10 长沙景嘉微电子股份有限公司 块数据读写方法、装置、系统及存储介质
CN112699067A (zh) * 2021-01-04 2021-04-23 瑞芯微电子股份有限公司 一种指令寻址方法及装置
CN112699067B (zh) * 2021-01-04 2024-05-14 瑞芯微电子股份有限公司 一种指令寻址方法及装置
CN113064556A (zh) * 2021-04-29 2021-07-02 山东英信计算机技术有限公司 一种bios的数据存储方法、装置、设备及存储介质
CN113608687A (zh) * 2021-06-30 2021-11-05 苏州浪潮智能科技有限公司 一种空间回收方法、装置、设备及可读存储介质
CN113836051A (zh) * 2021-11-29 2021-12-24 苏州浪潮智能科技有限公司 一种元数据空间回收方法、装置、设备及存储介质
CN113836051B (zh) * 2021-11-29 2022-03-22 苏州浪潮智能科技有限公司 一种元数据空间回收方法、装置、设备及存储介质
CN115543937A (zh) * 2022-03-22 2022-12-30 荣耀终端有限公司 文件碎片整理方法及电子设备
CN115543937B (zh) * 2022-03-22 2023-07-11 荣耀终端有限公司 文件碎片整理方法及电子设备

Also Published As

Publication number Publication date
CN111125033B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
CN111125033B (zh) 一种基于全闪存阵列的空间回收方法及系统
CN108427538B (zh) 全闪存阵列的存储数据压缩方法、装置、及可读存储介质
CN108427539B (zh) 缓存设备数据的离线去重压缩方法、装置及可读存储介质
CN107506153B (zh) 一种数据压缩方法、数据解压方法及相关系统
US10635359B2 (en) Managing cache compression in data storage systems
CN103098035B (zh) 存储系统
US8214620B2 (en) Computer-readable recording medium storing data storage program, computer, and method thereof
CN107682016B (zh) 一种数据压缩方法、数据解压方法及相关系统
CN105009067B (zh) 管理对存储数据单元的操作
US11113245B2 (en) Policy-based, multi-scheme data reduction for computer memory
KR20170054299A (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
CN111124940B (zh) 一种基于全闪存阵列的空间回收方法及系统
CN111381779B (zh) 数据处理方法、装置、设备及存储介质
KR102275431B1 (ko) 저장된 데이터 유닛들의 동작 관리
CN111124259A (zh) 一种基于全闪存阵列的数据压缩方法及系统
CN111124939A (zh) 一种基于全闪存阵列的数据压缩方法及系统
CN111857574A (zh) 一种写请求数据压缩方法、系统、终端及存储介质
KR102275240B1 (ko) 저장된 데이터 유닛들의 동작 관리
CN111198857A (zh) 一种基于全闪存阵列的数据压缩方法及系统
CN111625531A (zh) 基于可编程装置的合并装置、数据合并方法及数据库系统
CN111061428B (zh) 一种数据压缩的方法及装置
US20230076729A2 (en) Systems, methods and devices for eliminating duplicates and value redundancy in computer memories
CN114115734A (zh) 一种数据重删方法、装置、设备及存储介质
CN109271463B (zh) 一种恢复MySQL数据库的innodb压缩数据的方法
CN111625186B (zh) 数据处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant