一种数据重删方法及装置的制造方法

文档序号:10724483阅读:297来源:国知局
一种数据重删方法及装置的制造方法
【专利摘要】本发明提供一种数据重删方法及装置,方法包括:确定第一区域,第一区域为写入数据频率低于预设的频率阈值的区域,区域包含至少一个数据块;计算第一区域的第一数据块的哈希值;判断第一数据块的哈希值是否与重删映射表项中的哈希值相同;当相同时,获取重删映射表项中重删数据块的物理地址;读取重删数据块中的数据;当重删数据块中的数据与第一数据块中的数据相同时,将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与重删数据块的物理地址的映射关系;回收第一数据块。本发明可提高重删效率,降低写入数据延时,提高存储系统的工作效率。
【专利说明】
一种数据重删方法及装置
技术领域
[0001 ]本发明涉及存储技术领域,尤其涉及一种数据重删方法及装置。【背景技术】
[0002]重删是一种自动搜索重复数据,并将相同数据保留唯一副本的存储技术。通过重删处理,可消除存储系统的冗余数据,降低对存储容量的需求。
[0003]目前比较流行的重删技术是基于Hash(译为散列或哈希)算法实现的在线重删技术,即在写入数据时,计算写入数据的Hash值,通过Hash值匹配,保留新增数据,删除重复数据。Hash值计算以及匹配过程需要消耗大量的系统资源,造成写数据延迟,影响存储系统工作效率。
【发明内容】

[0004]本发明的目的在于提供一种数据重删方法及装置,用以在非热点区域执行后台重删处理。
[0005]为实现上述发明目的,本发明提供了技术方案:
[0006]本发明提供一种数据重删方法,应用于存储系统,所述方法包括:
[0007]确定第一区域,所述第一区域为写入数据频率低于预设的频率阈值的区域,所述区域包含至少一个数据块;
[0008]计算所述第一区域的第一数据块的哈希值;
[0009]判断所述第一数据块的哈希值是否与重删映射表项中的哈希值相同,所述重删映射表项用于记录哈希值与重删数据块的物理地址的映射关系;
[0010]当所述第一数据块的哈希值与重删映射表项中的哈希值相同时,获取所述重删映射表项中重删数据块的物理地址;
[0011]根据所述重删数据块的物理地址读取所述重删数据块中的数据;
[0012]当所述重删数据块中的数据与所述第一数据块中的数据相同时,将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与重删数据块的物理地址的映射关系;回收所述第一数据块。
[0013]进一步地,所述确定第一区域之前,还包括:
[0014]获取预设的统计时长;
[0015]在所述统计时长内,统计每一个数据块的写入次数;
[0016]计算同一区域内所有数据块的写入次数的总和;
[0017]根据所述写入次数的总和以及所述统计时长,得到当前区域的写入数据频率。
[0018]进一步地,所述方法还包括:
[0019]当所述第一数据块的哈希值与重删映射表项中的哈希值不同时,分配重删数据块;
[0020]将所述第一数据块的数据写入分配的重删数据块;
[0021]将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与分配的重删数据块的物理地址的映射关系;[〇〇22]建立所述第一数据块的哈希值与所述分配的重删数据块的物理地址的映射关系, 生成对应的重删映射表项;[〇〇23]回收所述第一数据块。[〇〇24]进一步地,所述方法还包括:[〇〇25]将第二区域的第二数据块对应的数据映射表项保存在内存中,将第一区域的第一数据块对应的数据映射表项保存在磁盘中,所述第二区域为写入数据频率达到所述预设频率阈值的区域。
[0026]本发明还提供一种数据重删装置,应用于存储系统,所述装置包括:
[0027]确定单元,用于确定第一区域,所述第一区域为写入数据频率低于预设的频率阈值的区域,所述区域包含至少一个数据块;
[0028]计算单元,用于计算所述第一区域的第一数据块的哈希值;
[0029]判断单元,用于判断所述第一数据块的哈希值是否与重删映射表项中的哈希值相同,所述重删映射表项用于记录哈希值与重删数据块的物理地址的映射关系;
[0030]获取单元,用于当所述第一数据块的哈希值与重删映射表项中的哈希值相同时, 获取所述重删映射表项中重删数据块的物理地址;
[0031]读取单元,用于根据所述重删数据块的物理地址读取所述重删数据块中的数据;
[0032]重删单元,用于当所述重删数据块中的数据与所述第一数据块中的数据相同时, 将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与重删数据块的物理地址的映射关系;回收所述第一数据块。 [〇〇33] 进一步地,所述装置还包括:
[0034]统计单元,用于在所述确定单元确定第一区域之前,获取预设的统计时长;在所述统计时长内,统计每一个数据块的写入次数;计算同一区域内所有数据块的写入次数的总和;根据所述写入次数的总和以及所述统计时长,得到当前区域的写入数据频率。
[0035]进一步地,
[0036]所述重删单元,还用于当所述第一数据块的哈希值与重删映射表项中的哈希值不同时,分配重删数据块;将所述第一数据块的数据写入分配的重删数据块;将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与分配的重删数据块的物理地址的映射关系;建立所述第一数据块的哈希值与所述分配的重删数据块的物理地址的映射关系,生成对应的重删映射表项;回收所述第一数据块。[〇〇37] 进一步地,所述装置还包括:[〇〇38]保存单元,用于将第二区域的第二数据块对应的数据映射表项保存在内存中,将第一区域的第一数据块对应的数据映射表项保存在磁盘中,所述第二区域为写入数据频率达到所述预设频率阈值的区域。
[0039]由以上描述可以看出,本发明基于非热点区域(写入数据频率相对较低的区域)执行后台重删处理,从而提高重删效率,同时,降低写入数据延时,提高存储系统的工作效率。【附图说明】
[0040]图1是本发明实施例示出的数据重删方法流程图;
[0041]图2是本发明实施例示出的一种数据重删中间状态示意图;
[0042]图3是本发明实施例示出的另一种数据重删中间状态示意图;
[0043]图4是本发明实施例示出的另一种数据重删中间状态示意图;
[0044]图5是本发明实施例不出的一种存储系统的结构不意图;
[0045]图6是本发明实施例示出的一种数据重删装置的结构示意图。【具体实施方式】
[0046]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0047]在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。 在本发明和所附权利要求书中所使用的单数形式的“一种”、“”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。[〇〇48]应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当…… 时”或“响应于确定”。
[0049]本发明实施例提出一种数据重删方法,该方法基于非热点区域(写入数据频率相对较低的区域)执行后台重删处理,从而提高重删效率,同时,降低写入数据延时,提高存储系统的工作效率。
[0050]参见图1,为本发明数据重删方法的一个实施例流程图,该实施例对数据重删过程进行描述。
[0051]步骤101,确定第一区域,所述第一区域为写入数据频率低于预设的频率阈值的区域,所述区域包含至少一个数据块。[〇〇52]数据块是用来保存数据的最小单位,数据块的大小可根据具体应用进行划分,例如,4K、8K、16K等。本发明实施例将数据写入存储系统时的数据块称为初始数据块。
[0053]本发明实施例基于数据块划分区域,区域的大小为数据块大小的整数倍。在进行重删处理之前,首先识别区域是否为热点区域。具体识别过程为:获取预设的统计时长,例如,一个小时。在该统计时长内,统计每一个数据块的写入次数,然后,计算同一区域内所有数据块的写入次数的总和,根据区域内写入次数的总和以及统计时长,得到当前区域的写入数据频率。将该写入数据频率与预设的频率阈值进比较,当写入数据频率达到预设的频率阈值时,确定当前区域为热点区域;当写入数据频率低于预设的频率阈值时,确定当前区域为非热点区域。以下描述将非热点区域称为第一区域,位于第一区域的数据块,称为第一数据块。
[0054]步骤102,计算所述第一区域的第一数据块的哈希值。
[0055]本发明实施例仍基于哈希值进行重删处理。
[0056]步骤103,判断所述第一数据块的哈希值是否与重删映射表项中的哈希值相同,所述重删映射表项用于记录哈希值与重删数据块的物理地址的映射关系。
[0057]将步骤102计算的第一数据块的哈希值与重删映射表项中的哈希值进行比较,以确认当前第一数据块中的数据是否与重删数据块中的数据重复,进而进行重删处理。
[0058]步骤104,当所述第一数据块的哈希值与重删映射表项中的哈希值相同时,获取所述重删映射表项中重删数据块的物理地址。
[0059]当第一数据块的哈希值与重删映射表项中的哈希值相同时,可基本确定第一数据块的数据与重删数据块的数据重复。但是,既使哈希算法再先进再复杂,也无法完全避免哈希冲突(哈希值相同,但实际数据并不相同),因此,还需要进一步确定。
[0060]步骤105,根据所述重删数据块的物理地址读取所述重删数据块中的数据。
[0061]步骤106,当所述重删数据块中的数据与所述第一数据块中的数据相同时,将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与重删数据块的物理地址的映射关系;回收所述第一数据块。
[0062]当第一数据块与重删数据块的哈希值相同时,可通过获取对应数据块中的具体数据进行比对,以确定是否真正存在数据重复。
[0063]当第一数据块中的数据与重删数据块中的数据相同时,说明确实存在数据重复, 因此,将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与重删数据块的物理地址的映射关系,并回收该第一数据块,从而完成重删处理,即,对于相同数据仅在存储系统中保存一份副本。当读取数据时, 可通过查询数据映射表项,由逻辑地址直接查询到对应的物理地址,进而获取对应数据,缩短了数据读取时间。
[0064]当第一数据块中的数据与重删数据块中的数据不同时,说明当前存在哈希冲突 (随着哈希算法的优化,真正发生哈希冲突的概率很小),实际数据并没有重复,此时,可不进行处理,数据仍保存在第一数据块中,仍然通过第一数据块的逻辑地址与第一数据块的物理地址的映射关系访问该第一数据块中的数据。
[0065]当根据步骤103的判断结果,确定第一数据块的哈希值与重删映射表项中的哈希值不同时,说明第一数据块的数据与当前已保存在重删数据块中的数据不重复,因此,分配重删数据块,将第一数据块中的数据写入该分配的重删数据块,同时,将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与分配的重删数据块的物理地址的映射关系,并建立第一数据块的哈希值与分配的重删数据块的物理地址的映射关系,生成对应的重删映射表项,并回收第一数据块。
[0066]由以上描述可以看出,本发明实施例采用后台重删方式,在数据写入后再进行重删处理,从而将前端处理(读写数据)与后台重删处理分离,通过控制重删处理时机(例如, 设定时间策略,到预定时间点触发重删处理;设定数据增量,当写入数据到达一定规模时, 触发重删处理;检测系统状态,在系统空闲时触发重删处理),保证前端处理效率。同时,由于采用一次映射(由逻辑地址直接到物理地址的映射)进行读写操作,在支持重删功能的同时,进一步提高了前端处理效率。此外,由于非热点区域数据更新频率较低,针对非热点区域的重删处理,可提高处理后数据的稳定性,提高重删效率。
[0067]需要补充的是,由于本发明实施例对非热点区域(简称第一区域)和热点区域(简称第二区域)进行了区分,因此,当存储系统内存紧张时,可将第二区域的数据块(简称第二数据块)对应的数据映射表项保存在内存中,将第一区域的第一数据块对应的数据映射表项保存在磁盘中,从而减轻内存压力,使访问频繁的数据块的映射关系优先放在内存中,提高访问速度。
[0068]本发明实施例的数据重删方法可适用于文件存储系统、对象存储系统以及块存储系统,现以块存储系统(LUN存储系统)为例介绍数据重删过程。[〇〇69]图2所示,为本发明实施例示出的一种数据重删中间状态示意图。假设,Addr_0? Addr_m为区域1,对应数据块B_0?B_m,区域1的写入数据频率为5次/小时;区域2(图中未示出)的写入数据频率为30次/小时;区域X(图中未示出)的写入数据频率为40次/小时;预设频率阈值为25次/小时,则可确定区域1为非热点区域,其它区域为热点区域。
[0070]对区域1进行重删处理,具体如下:
[0071]获取B_0数据块中数据Data_0(表示保存在B_0数据块中的所有数据),计算Data_0 的哈希值,假设计算结果为H_x,查询哈希值与重删数据块物理地址的映射关系,可知存在该哈希值!1_1,获取与H_x对应的重删数据块B_x中的数据Data_0,与B_0数据块中的数据 Data_0比对,数据内容完全相同,因此,可确定存在重复数据,修改与Addr_0对应的数据块的物理地址为重删数据块B_x的物理地址,参见图3,回收数据块B_0。[〇〇72]获取B_1数据块中数据Data_l(表示保存在B_1数据块中的所有数据),计算Data_l 的哈希值,假设计算结果为H_y,查询哈希值与重删数据块物理地址的映射关系,可知存在该哈希值!1_7,获取与H_y对应的重删数据块B_y中的数据Data_y,与B j数据块中的数据 Data_l比对,数据内容不同,因此,确定存在哈希冲突,不作处理,Data_l仍然保存在B_1中, 逻辑地址Addr_l和数据块8_1的物理地址映射关系不变。[〇〇73]获取B_m数据块中数据Data_m(表示保存在B_m数据块中的所有数据),计算Data_m 的哈希值,假设计算结果为H_z,查询哈希值与重删数据块物理地址的映射关系,可知不存在该哈希值H_z,分配重删数据块13_2,将Data_m写入重删数据块13_2,修改与Addr_m对应的数据块的物理地址为重删数据块B_z的物理地址,参见图4,回收数据块B_m。[〇〇74]当内存空间紧张时,可将非热点区域(区域1)对应的逻辑地址与数据块物理地址的映射关系存入磁盘中,将其它热点区域对应的逻辑地址与数据块物理地址的映射关系保留在内存中,以满足热点区域读写效率。
[0075]与前述数据重删方法的实施例相对应,本发明还提供了数据重删装置的实施例。
[0076]本发明数据重删装置的实施例可以应用在存储系统上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器运行存储器中对应的计算机程序指令形成的。从硬件层面而言,如图5所示,为本发明数据重删装置所在设备的一种硬件结构图,除了图5所示的处理器以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能, 还可以包括其他硬件,对此不再赘述。
[0077]请参考图6,为本发明一个实施例中的数据重删装置的结构示意图。该数据重删装置包括确定单元601、计算单元602、判断单元603、获取单元604、读取单元605以及重删单元606,其中:
[0078]确定单元601,用于确定第一区域,所述第一区域为写入数据频率低于预设的频率阈值的区域,所述区域包含至少一个数据块;
[0079]计算单元602,用于计算所述第一区域的第一数据块的哈希值;
[0080]判断单元603,用于判断所述第一数据块的哈希值是否与重删映射表项中的哈希值相同,所述重删映射表项用于记录哈希值与重删数据块的物理地址的映射关系;
[0081]获取单元604,用于当所述第一数据块的哈希值与重删映射表项中的哈希值相同时,获取所述重删映射表项中重删数据块的物理地址;
[0082]读取单元605,用于根据所述重删数据块的物理地址读取所述重删数据块中的数据;
[0083]重删单元606,用于当所述重删数据块中的数据与所述第一数据块中的数据相同时,将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与重删数据块的物理地址的映射关系;回收所述第一数据块。
[0084]进一步地,所述装置还包括:
[0085]统计单元,用于在所述确定单元601确定第一区域之前,获取预设的统计时长;在所述统计时长内,统计每一个数据块的写入次数;计算同一区域内所有数据块的写入次数的总和;根据所述写入次数的总和以及所述统计时长,得到当前区域的写入数据频率。
[0086]进一步地,
[0087]所述重删单元606,还用于当所述第一数据块的哈希值与重删映射表项中的哈希值不同时,分配重删数据块;将所述第一数据块的数据写入分配的重删数据块;将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻辑地址与分配的重删数据块的物理地址的映射关系;建立所述第一数据块的哈希值与所述分配的重删数据块的物理地址的映射关系,生成对应的重删映射表项;回收所述第一数据块。
[0088]进一步地,所述装置还包括:
[0089]保存单元,用于将第二区域的第二数据块对应的数据映射表项保存在内存中,将第一区域的第一数据块对应的数据映射表项保存在磁盘中,所述第二区域为写入数据频率达到所述预设频率阈值的区域。
[0090]上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0091]对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0092]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1.一种数据重删方法,应用于存储系统,其特征在于,所述方法包括:确定第一区域,所述第一区域为写入数据频率低于预设的频率阈值的区域,所述区域 包含至少一个数据块;计算所述第一区域的第一数据块的哈希值;判断所述第一数据块的哈希值是否与重删映射表项中的哈希值相同,所述重删映射表 项用于记录哈希值与重删数据块的物理地址的映射关系;当所述第一数据块的哈希值与重删映射表项中的哈希值相同时,获取所述重删映射表 项中重删数据块的物理地址;根据所述重删数据块的物理地址读取所述重删数据块中的数据;当所述重删数据块中的数据与所述第一数据块中的数据相同时,将数据映射表项中记 录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的逻 辑地址与重删数据块的物理地址的映射关系;回收所述第一数据块。2.如权利要求1所述的方法,其特征在于,所述确定第一区域之前,还包括:获取预设的统计时长;在所述统计时长内,统计每一个数据块的写入次数;计算同一区域内所有数据块的写入次数的总和;根据所述写入次数的总和以及所述统计时长,得到当前区域的写入数据频率。3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:当所述第一数据块的哈希值与重删映射表项中的哈希值不同时,分配重删数据块;将所述第一数据块的数据写入分配的重删数据块;将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关 系,更改为第一数据块的逻辑地址与分配的重删数据块的物理地址的映射关系;建立所述第一数据块的哈希值与所述分配的重删数据块的物理地址的映射关系,生成 对应的重删映射表项;回收所述第一数据块。4.如权利要求1所述的方法,其特征在于,所述方法还包括:将第二区域的第二数据块对应的数据映射表项保存在内存中,将第一区域的第一数据 块对应的数据映射表项保存在磁盘中,所述第二区域为写入数据频率达到所述预设频率阈 值的区域。5.—种数据重删装置,应用于存储系统,其特征在于,所述装置包括:确定单元,用于确定第一区域,所述第一区域为写入数据频率低于预设的频率阈值的 区域,所述区域包含至少一个数据块;计算单元,用于计算所述第一区域的第一数据块的哈希值;判断单元,用于判断所述第一数据块的哈希值是否与重删映射表项中的哈希值相同, 所述重删映射表项用于记录哈希值与重删数据块的物理地址的映射关系;获取单元,用于当所述第一数据块的哈希值与重删映射表项中的哈希值相同时,获取 所述重删映射表项中重删数据块的物理地址;读取单元,用于根据所述重删数据块的物理地址读取所述重删数据块中的数据;重删单元,用于当所述重删数据块中的数据与所述第一数据块中的数据相同时,将数据映射表项中记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为 第一数据块的逻辑地址与重删数据块的物理地址的映射关系;回收所述第一数据块。6.如权利要求5所述的装置,其特征在于,所述装置还包括:统计单元,用于在所述确定单元确定第一区域之前,获取预设的统计时长;在所述统计 时长内,统计每一个数据块的写入次数;计算同一区域内所有数据块的写入次数的总和;根 据所述写入次数的总和以及所述统计时长,得到当前区域的写入数据频率。7.如权利要求5或6所述的装置,其特征在于:所述重删单元,还用于当所述第一数据块的哈希值与重删映射表项中的哈希值不同 时,分配重删数据块;将所述第一数据块的数据写入分配的重删数据块;将数据映射表项中 记录的第一数据块的逻辑地址与第一数据块的物理地址的映射关系,更改为第一数据块的 逻辑地址与分配的重删数据块的物理地址的映射关系;建立所述第一数据块的哈希值与所 述分配的重删数据块的物理地址的映射关系,生成对应的重删映射表项;回收所述第一数 据块。8.如权利要求5所述的装置,其特征在于,所述装置还包括:保存单元,用于将第二区域的第二数据块对应的数据映射表项保存在内存中,将第一 区域的第一数据块对应的数据映射表项保存在磁盘中,所述第二区域为写入数据频率达到 所述预设频率阈值的区域。
【文档编号】G06F3/06GK106095332SQ201610381696
【公开日】2016年11月9日
【申请日】2016年6月1日 公开号201610381696.6, CN 106095332 A, CN 106095332A, CN 201610381696, CN-A-106095332, CN106095332 A, CN106095332A, CN201610381696, CN201610381696.6
【发明人】扈海龙
【申请人】杭州宏杉科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1