一种基于全闪存阵列的空间回收方法及系统技术方案

技术编号:24090617 阅读:28 留言:0更新日期:2020-05-09 07:54
本申请提供了一种基于全闪存阵列的空间回收方法及系统,用于提高空间回收效率。本申请实施例方法包括:获取性能层中的被压缩数据;将被压缩数据切分为预设长度的第一数据块,计算其哈希值;将该哈希值与容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;若否,对第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至容量层;构建数据位图表,该表用于记录对应每个或多个存储单位的空间占用状态;扫描数据位图表,获取处于第二状态的存储单位中的未更新数据块,并将未更新数据块迁移至新的存储单位;将未更新数据块划分为频繁迁移和非频繁迁移类型,并将非频繁迁移的未更新数据块进行固定化存储。

A space recovery method and system based on full flash array

【技术实现步骤摘要】
一种基于全闪存阵列的空间回收方法及系统
本申请涉及数据存储
,尤其涉及一种基于全闪存阵列的空间回收方法及系统。
技术介绍
一般地,为了节省数据的存储空间,文件在存储时,会对文件中的数据进行去重压缩,以减小数据的占用空间。所谓去重,即通过计算数据块的安全哈希摘要(比如SHA1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,且重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的。而数据压缩也是一种冗余数据消除技术,主要通过编码的方式消除冗余数据信息,即在保证原有数据信息不丢失的前提下,将原始内容进行转换,对于重复的字节序列用更少字节数的编码表示,从而达到消除部分冗余数据并最终节省存储空间的目的。而对于现有的压缩去重技术,当文件数据发生更新(删除或更改)时,即在存储原有压缩数据的地址空间中,删除掉原压缩数据,或对原压缩数据进行更新,如:假设原文件中一个非重复数据块压缩后的存储空间为50K,而当文件数据删除后,则会出现50K的空间碎片,而当文件数据更改后,若更新后非重复数据块压缩后的数据长度为5K,则会出现45K的空间碎片,当在后期对空间碎片进行回收时,需要将未更新的非重复数据块迁移至另一存储地址,若与该未更新的非重复数据块相邻的数据块反复更新时,则需将该未更新的非重复数据块反复迁移,从而增加了对该存储系统的IO次数,降低了该存储系统的IO性能。
技术实现思路
本申请实施例提供了一种基于全闪存阵列的空间回收方法及系统,用于提高空间回收的效率。本申请实施例第一方面提供了一种基于全闪存阵列的空间回收方法,其中,全闪存阵列包括性能层和容量层,该方法包括:获取所述性能层中的被压缩数据;将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态,所述空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;扫描所述数据位图表,获取处于所述第二状态的存储单位中的未更新数据块,并将所述未更新数据块迁移至新的存储单位;将所述未更新数据块划分为频繁迁移和非频繁迁移类型,并将非频繁迁移的未更新数据块进行固定化存储,避免对所述非频繁迁移的未更新数据块的频繁迁移。优选的,所述将所述未更新数据块划分为频繁迁移和非频繁迁移类型,包括:按照所述未更新数据块发生迁移的前后两次时间间隔的平均值,将所述未更新数据块划分为频繁迁移和非频繁迁移类型;或,按照所述未更新数据块在预设时间段内发生迁移的频率,将所述未更新数据块划分为频繁迁移和非频繁迁移类型;或,按照所述未更新数据块对应指纹的引用次数,将所述未更新数据块划分为频繁迁移和非频繁迁移类型。优选的,在将所述未更新数据块迁移至新的存储单位之后,所述方法还包括:将所述未更新数据块的元数据信息更新至所述文件元数据区域,所述元数据信息包括:所述未更新数据块的物理存储地址及所述未更新数据块的长度。优选的,所述将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至所述容量层,包括:将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍。优选的,在扫描所述数据位图表之后,获取处于所述第二状态的存储单位中的未更新数据块之前,所述方法还包括:获取每个日志存储单元中处于第一状态的存储单位的数量,并判断所述处于第一状态的存储单位所占用的空间是否大于预设的空间占用阈值;若是,则删除所述日志存储单元中处于第一状态的存储单位中的更新数据块。优选的,所述方法还包括:若存在所述匹配指纹,则确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。优选的,所述方法还包括:对所述去重指纹库中指纹的引用次数执行计数管理;所述对所述去重指纹库中指纹的引用次数执行计数管理,包括:当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;和,当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。优选的,在将压缩后的第一数据块以日志追加写的方式回写至所述容量层之后,该方法还包括:将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。本申请实施例第二方面提供了一种基于全闪存阵列的空间回收系统,其中,该全闪存阵列包括性能层和容量层,该系统包括:获取单元,用于获取所述性能层中的被压缩数据;切分计算单元,用于将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;匹配单元,用于将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;去重单元,用于在不存在所述匹配指纹时,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至所述容量层,而所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;构建单元,用于构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态,所述空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;扫描单元,用于扫描所述数据位图表,获取处于所述第二状态的存储单位中的未更新数据块,并将所述未更新数据块迁移至新的存储单位;类型划分单元,用于将所述未更新数据块划分为频繁迁移和非频繁迁移类型,并将非频繁迁移的未更新数据块进行固定化存储,避免对所述非频繁迁移的未更新数据块的频繁迁移。优选的,所述类型划分单元,包括:第一划分模块,用于按照所述未更新数据块发生迁移的前后两次时间本文档来自技高网...

【技术保护点】
1.一种基于全闪存阵列的空间回收方法,其特征在于,所述全闪存阵列包括性能层和容量层,所述方法包括:/n获取所述性能层中的被压缩数据;/n将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;/n将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;/n若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;/n构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态,所述空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;/n扫描所述数据位图表,获取处于所述第二状态的存储单位中的未更新数据块,并将所述未更新数据块迁移至新的存储单位;/n将所述未更新数据块划分为频繁迁移和非频繁迁移类型,并将非频繁迁移的未更新数据块进行固定化存储,避免对所述非频繁迁移的未更新数据块的频繁迁移。/n...

【技术特征摘要】
1.一种基于全闪存阵列的空间回收方法,其特征在于,所述全闪存阵列包括性能层和容量层,所述方法包括:
获取所述性能层中的被压缩数据;
将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;
将所述第一数据块的哈希值与所述容量层中的去重指纹库进行匹配,以确定是否存在匹配指纹;
若不存在所述匹配指纹,则确定所述第一数据块为非重复数据块,对所述第一数据块进行压缩,并将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至所述容量层,而将所述第一数据块的指纹更新至所述去重指纹库中,所述日志追加写作为一种异地更新方式,用以提高所述容量层的IO性能;
构建数据位图表,所述数据位图表用于记录对应每个存储单位或多个存储单位的空间占用状态,所述空间占用状态包括第一状态和第二状态,所述第一状态为无效占用,所述第二状态为有效占用;
扫描所述数据位图表,获取处于所述第二状态的存储单位中的未更新数据块,并将所述未更新数据块迁移至新的存储单位;
将所述未更新数据块划分为频繁迁移和非频繁迁移类型,并将非频繁迁移的未更新数据块进行固定化存储,避免对所述非频繁迁移的未更新数据块的频繁迁移。


2.根据权利要求1所述的方法,其特征在于,所述将所述未更新数据块划分为频繁迁移和非频繁迁移类型,包括:
按照所述未更新数据块发生迁移的前后两次时间间隔的平均值,将所述未更新数据块划分为频繁迁移和非频繁迁移类型;
或,
按照所述未更新数据块在预设时间段内发生迁移的频率,将所述未更新数据块划分为频繁迁移和非频繁迁移类型;
或,
按照所述未更新数据块对应指纹的引用次数,将所述未更新数据块划分为频繁迁移和非频繁迁移类型。


3.根据权利要求1所述的方法,其特征在于,在将所述未更新数据块迁移至新的存储单位之后,所述方法还包括:
将所述未更新数据块的元数据信息更新至所述文件元数据区域中,所述元数据信息包括:所述未更新数据块的物理存储地址及所述未更新数据块的长度。


4.根据权利要求1所述的方法,其特征在于,所述将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至所述容量层,包括:
将压缩后的第一数据块以预设长度为存储单位,以日志追加写的方式回写至日志存储单元,并在所述日志存储单元写满后,将所述日志存储单元回写至所述容量层,所述日志存储单元的存储空间为所述容量层最小写入单元的整数倍。


5.根据权利要求4所述的方法,其特征在于,在扫描所述数据位图表之后,获取处于所述第二状态的存储单位中的未更新数据块之前,所述方法还包括:
获取每个日志存储单元中处于第一状态的存储单位的数量,并判断所述处于第一状态的存储单位所占用的空间是否大于预设的空间占用阈值;
若是,则删除所述日志存储单元中处于第一状态的存储单位中的更新数据块。


6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
若存在所述匹配指纹,则确定所述第一数据块为重复数据,并将所述第一数据块的元数据信息回写至所述容量层的元数据区域,所述元数据信息包括所述第一数据块在所述被压缩数据中的逻辑地址、所述匹配指纹及所述匹配指纹的物理地址之间的对应关系。


7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
对所述去重指纹库中指纹的引用次数执行计数管理;
所述对所述去重指纹库中指纹的引用次数执行计数管理,包括:
当所述去重指纹库中存在所述第一数据块的匹配指纹时,则将所述匹配指纹的引用次数执行增长式运算;
和,
当引用所述去重指纹库中所述匹配指纹的第一数据块发生更新时,则将所述匹配指纹的引用次数执行递减式运算。


8.根据权利要求7所述的方法,其特征在于,在将压缩后的第一数据块以日志追加写的方式回写至所述容量层之后,所述方法还包括:
将所述第一数据块的元数据信息更新至所述容量层的文件元数据区域或所述去重指纹库中,所述元数据信息包括:所述第一数据块压缩后的物理存储地址及所述第一数据块压缩后的长度,以用于后期根据所述元数据信息对所述第一数据块进行解压。


9.一种基于全闪存阵列的空间回收系统,其特征在于,所述全闪存阵列包括性能层和容量层,所述系统,包括:
获取单元,用于获取所述性能层中的被压缩数据;
切分计算单元,用于将所述被压缩数据切分为预设长度的第一数据块,计算所述第一数据块的哈希值;
匹配单元,用于将所述第一...

【专利技术属性】
技术研发人员:夏文古亮
申请(专利权)人:深信服科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1