首页> 中国专利> 基于重删域的数据重删方法、装置、系统及存储设备

基于重删域的数据重删方法、装置、系统及存储设备

摘要

本公开公开了一种基于重删域的数据重删方法、装置、系统及存储设备。其中,该方法包括:从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域;基于预定的配置,确定所述当前重删域在所述复数个重删域中的嵌套关系;按照域重删规则,依次对所述当前重删域以及与所述当前重删域具有嵌套关系的一个或多个重删域执行数据重删。本公开解决了相关技术中数据存储性能不好的技术问题,具有数据存储效率高、可靠性高的有益效果。

著录项

  • 公开/公告号CN112506877A

    专利类型发明专利

  • 公开/公告日2021-03-16

    原文格式PDF

  • 申请/专利权人 深圳市木浪云数据有限公司;

    申请/专利号CN202011395126.5

  • 发明设计人 陈元强;李文祥;

    申请日2020-12-03

  • 分类号G06F16/174(20190101);

  • 代理机构11526 北京航信高科知识产权代理事务所(普通合伙);

  • 代理人高原

  • 地址 518052 广东省深圳市南山区科技北一路15号凤凰城大厦405

  • 入库时间 2023-06-19 10:16:30

说明书

技术领域

本公开涉及计算机领域,具体而言,涉及一种基于重删域的数据重删方法、装置、系统及存储设备。

背景技术

重复数据删除是一种在存储系统中广泛应用的技术,通过分析数据中是否存在重复而只保留一份相同的数据,能够大幅地减少对存储空间的占用。重复数据删除技术从不同的维度可以有不同的分类方法,按照发生的时机,可以分为两类,即,实时重复数据删除和离线重复数据删除。

实时重复数据删除:在数据写入过程中实时地检测新数据是否与已经存储的旧数据存在重复,将重复的部分去掉,只把新增的部分写下去。

离线重复数据删除:数据先直接写入存储区域,然后再对数据进行分析,找出其中重复的部分,删除并释放空间。

离线重复数据删除会先将数据进行存储,在重删完成之前,会占据较多的存储空间。而数据的离线分析需要额外地占用磁盘I/O,和新数据的写入存在资源竞争关系。此外,在数据持续高压力写入的情况下,离线重删可能无法及时完成。

实时重复数据删除在数据写入时完成数据分片、指纹计算、指纹对比,不会存储多余的数据。虽然空间效率较高,但对写入性能有明显的影响。尤其随着数据规模的扩大,指纹查询的性能会逐步下降,相应地会影响存储性能。

另外,重复数据删除虽然节省了空间,但却降低了数据的可靠性。多份数据中相同的分片只存储一份,也就意味着这个分片的损坏会造成所有相关数据的损坏。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本公开实施例提供了一种基于重删域的数据重删方法、装置、系统及存储设备,以至少解决相关技术中数据存储性能不好的技术问题。

根据本公开实施例的一个方面,提供了一种基于重删域的数据重删方法,包括:从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域;基于预定的配置,确定所述当前重删域在所述复数个重删域中的嵌套关系;按照域重删规则,依次对所述当前重删域以及与所述当前重删域具有嵌套关系的一个或多个重删域执行数据重删。

根据本公开实施例的另一方面,还提供了一种基于重删域的数据重删装置,包括:域确定模块,被配置为从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域;嵌套确定模块,被配置为基于预定的配置,确定所述当前重删域在所述复数个重删域中的嵌套关系;重删模块,被配置为按照域重删规则,依次对所述当前重删域以及与所述当前重删域具有嵌套关系的一个或多个重删域执行数据重删。

根据本公开实施例的另一方面,还提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现如上所述的数据重删方法。

根据本公开实施例的另一方面,还提供了一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的数据重删方法。

根据本公开实施例的另一方面,还提供了一种存储设备,具有包括复数个重删域的数据存储区域,所述复数个重删域中的部分或者全部重删域具有嵌套关系,使得在数据重删时,能够基于所述嵌套关系进行数据重删。

在本公开实施例中,从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域;基于预定的配置,确定所述当前重删域在所述复数个重删域中的嵌套关系;按照域重删规则,依次对所述当前重删域以及与所述当前重删域具有嵌套关系的一个或多个重删域执行数据重删,从而实现了数据存储效率高、可靠性高的技术效果,进而解决了相关技术中数据存储性能不好的技术问题。

附图说明

此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:

图1是根据本公开实施例的重删域的关系图的一个示例;

图2是根据本公开实施例的一种基于重删域的数据重删方法的流程图;

图3是根据本公开实施例的另一种基于重删域的数据重删方法的流程图;

图4是根据本公开实施例的图3中的步骤S303的具体流程图;

图5是根据本公开实施例的数据重删装置的结构示意图;

图6是根据本公开实施例的数据重删系统的结构示意图;

图7是根据本公开实施例的针对超大规模重删系统的重删域配置示意图;

图8是根据本公开实施例的针对租户隔离系统的重删域配置示意图;以及

图9是根据本公开实施例的针对重要数据保护系统的重删域配置示意图。

具体实施例

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

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

为了解决相关技术中的上述数据重删所存在的问题,本公开提出了重删域的概念,并将重删域分为不同的类型和级别,同时结合了离线重删和实时重删的特点,并对不同的重删域进行层级嵌套,从而能够支持数据隔离,解决了现有技术中的数据重删存在的问题。

在本公开的实施例中,重删域是指重复数据删除生效的逻辑区域,即待进行数据重删的数据存储区域。在实时重删的情况下,在同一个重删域中,待写入的数据按照特定的算法进行数据分片并计算指纹(即,特征值),通过指纹比较判定是否存在相同的数据分片,相同的数据分片在一个重删域只存储一份,以减少存储空间占用。在离线重删的情况下,在同一个重删域中,通过比较指纹库中的指纹来判定已存储的数据中是否存在相同的数据分片,如果存在相同的数据分片,则删除冗余的数据分片,这样,在一个重删域只存储一份相同的数据片,以减少存储空间占用。

根据重删的方式情况,可以将重删域分为以下几种类型和级别:

1)实时重删域:对待存入该区域的数据进行实时数据重删。实时重删域的级别定义为1,表示其级别为低。

2)离线重删域:对待存入或已存入该区域的数据进行离线数据重删。离线重删域的级别定义为2,表示其级别为中。

3)无重删域:对待存入或已存入该区域的数据不进行数据重删。无重删域的级别定义为3,表示其级别为高。

以上几种类型的重删域可以预先配置在数据存储区域中,使得同时存在复数个重删域,并且该复数个重删域中的至少两个重删域能够相互包含,形成层级关系,即层级嵌套。在一个重删域包含另外一个重删域的情况下,则两者之间存在父子关系,分别称为“父域”和“子域”。数据通常总是写入到最内层的子域,但是要满足所有父域定义的重删关系。

实施例1

图1是根据本公开实施例的重删域的关系图的一个示例。如图1所示,该图示出了三种类型的重删域,其中,区域A和区域B分别表示实时重删域,区域C表示离线重删域,区域D表示无重删域,区域A和区域B的父域为区域E,区域E是离线重删域,区域E的父域和区域C、区域D的父域都是区域F,区域F是无重删域。

在图1中,类型为实时重删域的区域A和区域B的等级最低为1,类型为离线重删域的区域C、以及区域A和B的所在的区域E的等级较高,为2,类型为无重删域的区域F的等级最高为3。

定义重删域的级别的作用在于:当数据存入某个重删域时,先按照当前域的规则进行重删。然后查询其父域,若父域的等级高于当前域,则再按照父域规则进行重删,否则终止该删除处理。

以图1所示的区域为例,假设数据要存入区域A,首先获取区域A的类型,在确定区域A为实时重删域的情况下,以实时重删的方式将数据写入到区域A中。之后,获取区域A的父域即区域E的类型和级别,并将区域E的级别和区域A的级别进行比较。在图1中,区域E为离线重删域,其级别为2,大于区域A的级别1,因此,按照区域E的规则执行离线重删。之后,再查询区域E的父域即区域F的类型和级别,比较区域E和区域F的级别。在图1中,区域E为离线重删域,其级别为2,区域F为无重删域,其级别为3,因此,按照区域F的规则执行数据重删。由于区域F的类型为无重删域,因此不执行数据重删。

下面,将基于上述定义的重删域、重删域的类型、级别以及嵌套规则详细描述数据重删的方法和装置。

实施例2

根据本公开实施例,提供了一种基于重删域的数据重删方法,如图2所示,该方法包括:

步骤S201,数据写入。

接收数据写请求,并将待写入的数据写入到缓存设备中。

步骤S202,数据分片、计算指纹、分配重删域。

将待写入的数据进行数据分片,并计算每个数据片的特征值,即指纹。计算数据片特征值通常使用哈希(Hash)算法,对数据片进行哈希计算得到哈希值作为特征值。常用的哈希算法包括MD5、SHA1、SHA-256、SHA-512等。

为数据分片分配重删域。可以基于以下两种分配方式来决定将数据分片写入到哪个重删域:规则分配和算法分配。

规则分配:用户预先配置分配规则,在该规则中,可以指定将某部分数据写入到某个重删域。例如,将对应的数据分片后为该数据片添加上特定的标签,这样,根据规则中定义的标签与重删域的映射关系,便可以将与该标签对应的重删域分配给具有该标签的数据片。

算法分配:针对多个相同层级的重删域,可以为每个重删域配置权重,在写入数据片时,按照算法计算的结果进行分配,以达到负载均衡。

步骤S203,写入分片、更新指纹库、按照域规则执行重删。

针对每个数据分片,查询分配给该数据分片的重删域的类型。

在该重删域(即当前重删域)的类型为实时重删域的情况下,按照域规则,执行实时重删。例如,将待写入的数据片A的特征值与所分配的重删域中的各个数据片的特征值进行比较,如果数据片A的特征值与所分配的重删域中的数据片B的特征值相同,表明数据片A和数据片B是相同的数据片,则数据片A无需写入到该重删域,只需要将存储数据片B的逻辑存储地址作为数据片A的逻辑存储地址即可,即将元数据中的数据片A的指针修改为指向数据片B。如果该重删域中不存在与数据片A的特征值相同的数据片,则将数据片A写入到该重删域,并更新指纹库,将数据片A的特征值(即指纹)存储到指纹库中。

在该重删域的类型为离线重删域的情况下,按照域规则,将数据片写入到该重删域中,同时更新指纹库。例如,将数据片A先写入到该重删域中,并将数据片A的特征值更新到指纹库中。在之后的离线重删时间,开始执行离线重删。具体地,以已写入的数据片A为例,将已写入的数据片A的特征值与重删域中的各个数据片的特征值进行比较。如果数据片A的特征值与所分配的重删域中的数据片B的特征值相同,表明数据片A和数据片B是相同的数据片,则从该重删域中删除已存储的数据片A,同时,从指纹库中删除对应于该数据片A的指纹,并将存储数据片B的逻辑存储地址作为数据片A的逻辑存储地址。如果该重删域中不存在与数据片A的特征值相同的数据片,则无需删除该数据片。

在该重删域的类型为无重删域的情况下,按照域规则,不执行数据重删,直接将数据片写入到该重删域中,并将该数据片的特征值更新到指纹库中。

步骤S204、查找父域。

在基于域规则执行完当前域的数据重删操作之后,查找该域的父域,其中,各个域之间的嵌套关系是预先配置的。

步骤S205、父域等级更高?

在查找到当前域的父域之后,获取该父域的级别,比较该父域的级别和当前域的级别。

以图1为例,假设为数据片分配的当前重删域为区域A。区域A的类型为实时重删域,级别为1。基于预先配置的域之间的嵌套关系,查找出其父域,即区域E,区域E的类型为离线重删域,级别为2,高于区域A的级别。

在父域的级别高于当前域的级别的情况下,执行步骤S206,否则终止该流程。

步骤S206、将父域设置为当前重删域。

将父域设置为当前重删域,并返回到步骤203执行其中的子步骤:按照域规则执行重删,但不需要执行其它两个子步骤:写入分片和更新指纹库。

继续以图1为例,区域A的父域为区域E,区域E的类型为离线重删域,级别为2。

针对区域E,在离线重删时间,开始执行离线重删。具体地,将已写入的数据片A的特征值与区域E中的各个数据片的特征值进行比较。如果数据片A的特征值与区域E中的数据片B的特征值相同,表明数据片A和数据片B是相同的数据片,则从该区域A中删除已存储的数据片A,同时,从指纹库中删除对应于该数据片A的指纹,并将存储数据片B的逻辑存储地址作为数据片A的逻辑存储地址。如果该区域E中不存在与数据片A的特征值相同的数据片,则无需删除该数据片。

在区域E中执行数据重删之后,进一步判断区域E的父域为区域F,区域F的类型为无重删域,级别为3。按照无重删域的规则,该区域F不需要进行重删。

与常规的重删流程相比,本公开的实施例中增加了重删域的概念,需要按照重删域的层级关系,执行多次重删过程。对于实时重删域,重删需要立即完成;对于离线重删域,重删会异步执行。其中,层级关系是预先配置的。

实施例3

根据本公开实施例,提供了另一种基于重删域的数据重删方法,如图3所示,该方法包括:

步骤S301,预先配置重删域。

按照预定的配置,将数据存储区域划分为复数个重删域,使得该复数个重删域中的至少两个重删域具有嵌套关系,并为复数个重删域中的每一个重删域设置类型和级别。

具体地,例如,以图7为例。图7是根据本公开实施例的针对超大规模重删系统的重删域配置示意图。如图7所示,数据存储区域被划分为多个区域L1和一个区域L2,其中,区域L2是多个区域L1的父域。每个区域L1的类型设置为实时重删域,级别设置为1,区域L2的类型设置为离线重删域,级别设置为2。多个区域L1中的每一个都可以由多个存储节点组成,例如,如图7所示,多个区域L1中的一个区域由用于存储数据的节点1、节点2和节点3组成。

步骤S302,接收待写入的数据,并为其分配重删域。

接收待写入的数据,按照相应的算法对待写入的数据进行分片,并为各数据分片计算相应的特征值;按照预设的分配规则或者按照算法,为各数据分片分配相应的重删域。在本公开中,将待写入当前数据片的重删域作为当前重删域。

例如,在按照预设的分配规则为各数据分片分配相应的重删域的情况下,可以将各数据分片中添加有相应的标签,分配规则中定义了相应的标签与相应的重删域之间的映射关系。在按照算法为各数据分片分配相应的重删域的情况下,基于复数个重删域中的每一个重删域的权重,为各数据分片分配相应的重删域。

步骤S303,按照域重删规则,依次对当前重删域以及与当前重删域具有嵌套关系的一个或多个重删域执行数据重删。

将当前重删域作为子域,按照子域的类型,对子域进行数据重删。例如,在当前重删域的类型为实时重删域时,对当前重删域进行实时数据重删;在当前重删域的类型为离线重删域时,在之后的离线重删的时间,对当前重删域进行离线数据重删;在当前重删域的类型为无重删域时,对当前重删域不进行数据重删。

在对作为子域的当前重删域执行完数据重删之后,通过预先配置的嵌套关系,查找该子域的父域,即,将具有嵌套关系的一个或多个重删域中的与该子域直接相邻的外层区域作为该子域的父域,然后对该父域进行数据重删。在对父域进行完数据重删之后,将该父域作为子域,循环执行数据重删,直到嵌套关系的最外层,即当前重删域没有父域。

在对该父域进行数据重删时是基于父域和子域的级别以及父域的类型进行的。具体地,获取子域的级别以及父域的级别,并进行比较。在父域的级别高于子域的级别的情况下,基于父域的类型,对父域执行数据重删。即,在父域的类型为实时重删域时,执行实时数据重删;在父域的类型为离线重删域时,执行离线数据重删;在父域的类型为无重删域时,不执行数据重删。在父域的级别不高于子域的级别的情况下,不对父域进行数据重删。

以图7为例,假设当前重删域为图中具有三个用于存储数据的节点的L1区域。具有三个节点的L1区域的类型预先被配置为实时重删域,级别被配置为1。因此,对该L1区域执行数据实时数据重删。

在对作为子域的该L1区域执行完数据重删之后,基于嵌套关系,查找到父域为区域L2。区域L2(父域)的类型为离线重删域,级别为2。区域L2的级别高于该区域L1的级别,因此,需要对区域L2执行数据重删。区域L2的类型为离线重删域,因此,在之后的离线重删时间,对该区域L2执行数据重删。

在对区域L2执行完数据重删之后,查找区域L2的父域,由于区域L2是嵌套的最外层,即表示区域L2没有父域,因此,结束数据重删。

其中,上述步骤S303如图4所示,可以包括以下步骤:

步骤S3031,对当前重删域执行数据重删。

将当前重删域作为子域,基于子域的类型对该子域进行数据重删。

在该子域的类型为实时重删域的情况下,基于当前待写入的数据分片的特征值,判断在子域中是否存在与当前待写入的数据分片相同的数据分片;在存在相同的数据分片的情况下,不将当前待写入的数据分片写入到子域中,而只在元数据中将当前待写入的数据分片的指针指向相同的数据分片;在不存在相同的数据分片的情况下,将当前待写入的数据分片写入到子域中,并在元数据中将当前待写入的数据分片的指针指向所写入的位置;

在子域的类型为离线重删域的情况下,将当前待写入的数据分片写入到当前重删域中,并在之后的离线重删的时段,基于当前数据分片的特征值,判断在子域中是否存在与当前数据分片相同的数据分片;在存在相同的数据分片的情况下,从子域中删除当前数据分片,并更新指纹库,同时将元数据中的当前数据分片的指针修改为指向相同的数据分片;在不存在相同的数据分片的情况下,不需额外的操作。

在子域的类型为无重删域的情况下,将当前待写入的数据分片写入到子域中,并且不进行数据重删。

步骤S3032,查找父域。

基于当前重删域的标识符,查找当前重删域的父域的标识符,其中,父域为包含当前重删域且与当前重删域直接相邻的外层区域。

如果查找到父域,则执行步骤S3033,否则,则结束数据重删过程。

步骤S3033,父域等级更高?

比较父域和子域的级别,在父域的级别大于子域的级别的情况下,基于父域的类型执行数据重删,否则,不对父域执行数据重删,结束该流程。

在父域的类型为离线重删域的情况下,在之后的离线重删的时段,基于当前数据分片的特征值,判断在父域中是否存在与当前数据分片相同的数据分片;在存在相同的数据分片的情况下,从父域中删除当前数据分片,并更新指纹库,同时将元数据中的当前数据片的指针修改为指向相同的数据分片;在不存在相同的数据分片的情况下,不进行额外的操作。

在父域的类型为无重删域的情况下,不进行数据重删。

步骤S3034,将父域设置为当前重删域。

在对父域执行完数据重删后,将该父域作为当前重删域,跳到步骤S3031,循环对嵌套关系所涉及到的区域进行数据重删。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本公开所必须的。

通过以上的实施例的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施例。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。

实施例4

图5是根据本公开实施例的数据重删装置的结构示意图,如图5所示,该数据重删装置包括域确定模块52、嵌套确定模块54、重删模块56。

域确定模块52,被配置为从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域。嵌套确定模块54,被配置为基于预定的配置,确定当前重删域在复数个重删域中的嵌套关系。重删模块56,被配置为按照域重删规则,依次对当前重删域以及与当前重删域具有嵌套关系的一个或多个重删域执行数据重删。

可选地,在本实施例中,上述数据重删方法的可以应用于如图5所示的重删装置中执行,因此,此处,不再赘述数据重删装置的具体结构和功能。

实施例5

图6是根据本公开实施例的数据重删系统的结构示意图。如图6所示,数据重删系统600包括数据重删装置62、存储设备64和文件系统66。本实施例中的重删装置62可以是实施例4中的数据重删装置。

本实施例中的数据重删装置62也可以是包括分片器620、去重器622和指纹计算器624的装置。

分片器620被配置为对进入数据重删系统600中的、待写入存储设备64的数据进行分片。在分片时,首先确定分片的边界。计算与分片的候选边界相关联的多个值。基于两个或多个计算值之间的比较来选择候选边界,进而确定分片的边界。在一些实施例中,可以通过确定与最小片段长度相对应的第一位置并确定与最大长度相对应的第二位置来确定分片,其中,分片是从第一位置到第二位置的片段。

指纹计算器624被配置为计算与给定片段相关联的一个或多个特征值。一个或多个特征值可以用来唯一地标识一个片段,有效地确定片段之间的相似性,定位一个片段,或者在某些情况下比较片段。在各种实施例中,特征值可以通过哈希函数计算。例如,可以将片段中的所有数据值、一些数据值、片段中的数据值的采样集合和/或片段中的掩码的数据值的采样集合输入到哈希函数中,来计算特征值。

去重器622使用由指纹计算器624计算的特征值来有效地确定当前分片是否已经被预先存储。

以将数据写入如图7所示的存储区域为例,去重器622基于上文描述的规则分配或算法分配,例如,假定将图7中多个区域L1中的具有三个用于存储数据的节点的区域确定为数据待存入的数据区域,即,当前重删域。

去重器622获取该当前重删域的类型和级别,图7中,该当前重删域为实时重删域,级别为1,因此,去重器622确定应该执行实时重删。

去重器622确定当前的数据分片是否先前已被存储。去重器622搜索先前存储的分片的特征值以确定是否存在与当前分片的特征值相匹配的特征值,在存在匹配的情况下,确定当前分片先前已被存储在当前重删域中,否则,则确定当前分片没有存储在当前重删域中。

如果存储设备64的当前重删域中不存在该数据片,确定应该存储该数据片,并将该数据片存储在存储设备64的当前重删域中。分片器620将关于如何从数据分片重建原始数据(例如原始文件)的信息传递给文件系统66。文件系统66存储指向存储在存储设备64中的数据片的相关信息,该信息是关于如何从所存储的数据片重建原始数据(例如,文件)的信息。

如果存储设备64的当前重删域中存在该数据片,则不需要存储该数据片,仅需在文件系统66中更新当前数据片的指针指向相同的数据片。

在对当前重删域(即具有三个节点的区域L1)执行完数据重删后,去重器622查找具有三个节点的区域L1的父域,在图7中为区域L2,区域L2的类型假定预先配置为离线重删域,级别为2,高于具有三个节点的区域L1的级别,因此,针对区域L2执行离线重删。

本实施例中的存储设备64还可以实现为以下实施例中的存储设备的配置。

实施例6

本实施例提供了一种存储设备,具有包括复数个重删域的数据存储区域,复数个重删域中的部分或者全部重删域具有嵌套关系,使得在数据重删时,能够基于嵌套关系进行数据重删。

其中,复数个重删域中的每一个重删域配置有类型和级别。

其中,重删域的类型可以包括:实时重删域,表示对对应的重删域进行实时数据重删;离线重删域,表示对对应的重删域进行离线数据重删;和无重删域,表示对对应的重删域不进行数据重删。

其中,重删域的级别可以包括:低级别,表示级别为低,对应的重删域的类型为实时重删域;中级别,表示级别为中,对应的重删域的类型为离线重删域;和高级别,表示级别为高,对应的重删域的类型为无重删域。

本实施中的存储设备中的数据存储区域中重删域的划分可以基于数据存储区域的应用场景、通过以不同的组合方式配置嵌套关系而进行划分得到的,应用场景包括以下至少之一:超大规模重删系统的应用场景、租户隔离的应用场景和重要数据保护的应用场景。

通过引入重删域,可以通过不同的配置形式来解决不同的问题,以下通过几个典型的应用场景来进一步描述。

实施例7

本实施例针对应用场景为超大规模重删系统的应用场景下的数据存储区域的划分。

例如,如上所述,图7示出了根据本公开实施例的针对超大规模重删系统的重删域配置示意图。在应用场景为超大规模重删系统的应用场景下,数据存储区域被划分为一个区域L2和彼此独立的多个区域L1,区域L2以嵌套的形式包含多个区域L1,多个区域L1的类型分别被配置为实时重删域,级别分别被配置为低,区域L2的类型被配置为离线重删域,级别被配置为中,其中,多个区域L1中的部分或者所有区域L1分别包括一个或多个存储节点。例如,在图7中,其中一个区域L1包括用于存储数据的节点1、节点2和节点3。

在本实施例中,在超大规模存储的场景下,整个存储系统是分布式的,由多个节点构成。进行全局范围的实时数据重删存在很大的性能瓶颈,因此把少量节点归到一个实时重删域,再把所有的实时重删域归到一个离线重删域。从而结合了两种重删形式的特点,在小范围内进行实时重删,即时性强,性能影响可控;在大范围内进行离线重删,提高空间利用率。

实施例8

图8是根据本公开实施例的针对租户隔离系统的重删域配置示意图。

在应用场景为租户隔离的应用场景下,数据存储区域划被分为一个区域L3和彼此独立的多个区域L1,区域L3以嵌套的形式包含多个区域L1,多个区域L1的类型分别被配置为实时重删域,级别分别被配置为低,区域L3的类型被配置为无重删域,级别被配置为高。

在多租户的应用场景下,客户可能要求租户之间的数据相互隔离,一个租户的数据故障不影响另外一个租户,那么各个租户之间的数据就不能存在重删关系。为每个租户分配一个独立的实时重删域,然后再归到一个全局的无重删域中,即可满足需求。

实施例9

图9是根据本公开实施例的针对重要数据保护系统的重删域配置示意图。

在应用场景为重要数据保护的应用场景下,数据存储区域被划分为一个区域L2、一个或多个彼此独立的区域L3和彼此独立的多个区域L1,区域L2以嵌套的形式包含多个区域L1和一个或多个区域L3,多个区域L1的类型分别被配置为实时重删域,级别分别被配置为低,区域L2的类型被配置为离线重删域,级别被配置为中,一个或多个区域L3的类型被配置为无重删域,级别被配置为高。

如前所述,重删会降低数据的可靠性,也会降低存储的性能。对于某些比较重要的数据,可以使用高性能、高可靠性的专用设备来存储,并且将这部分划为一个无重删域。其余部分的数据划分为一些实时重删域,然后全部归到一个离线重删域。

这么设计的好处在于:所有指定到L3的数据,一定会写入到高性能、高可靠的设备上,不受重删的影响(L3本身不重删,且L3>L2);而指定到其它L1的数据,在自身完成重删(L1规则)之后,依然可以通过离线重删来引用L3中的分片(L1

实施例10

本公开的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的基于重删域的数据重删方法。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述数据重删方法。

实施例11

本公开的实施例还提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现如上所述的基于重删域的数据重删方法。

本公开还可以配置为以下的实施方式:

1.一种基于重删域的数据重删方法,其特征在于,包括:

从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域;

基于预定的配置,确定所述当前重删域在所述复数个重删域中的嵌套关系;

按照域重删规则,依次对所述当前重删域以及与所述当前重删域具有嵌套关系的一个或多个重删域执行数据重删。

2.根据项1所述的方法,其特征在于,按照域重删规则,依次对所述当前重删域以及与所述当前重删域具有嵌套关系的一个或多个重删域执行数据重删包括:

将所述当前重删域作为子域,按照所述子域的类型,对所述子域进行数据重删;

执行以下循环过程,直至满足预设循环终止条件:

将所述具有嵌套关系的一个或多个重删域中的与所述子域直接相邻的外层区域作为所述子域的父域;

基于所述父域和所述子域的级别和所述父域的类型,对所述父域执行数据重删;

将所述父域作为新的所述子域;

其中,所述预设循环终止条件为:所述父域为所述具有嵌套关系的一个或多个重删域中的最外层区域,或者,所述父域的级别低于所述子域的级别。

3.根据项2所述的方法,其特征在于,基于所述父域和所述子域的级别和所述父域的类型,对所述父域执行数据重删包括:

获取并比较所述子域的级别以及所述父域的级别;

在所述父域的级别高于所述子域的级别的情况下,基于所述父域的类型,对所述父域执行数据重删。

4.根据项2至3中任一项所述的方法,其特征在于,所述类型包括:

实时重删域,表示对对应的重删域进行实时数据重删;

离线重删域,表示对对应的重删域进行离线数据重删;和

无重删域,表示对对应的重删域不进行数据重删。

5.根据项2至3中任一项所述的方法,其特征在于,所述级别包括:

低级别,表示级别为低,对应的重删域的类型为实时重删域;

中级别,表示级别为中,对应的重删域的类型为离线重删域;和

高级别,表示级别为高,对应的重删域的类型为无重删域。

6.根据项3所述的方法,其特征在于,在从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域之前,所述方法还包括:

接收待写入的数据;

按照相应的算法对所述待写入的数据进行分片,并为各数据分片计算相应的特征值;

按照预设的分配规则或者按照算法,为各数据分片分配相应的重删域;

其中,所述当前重删域为所分配的重删域中的、当前待进行数据删除的一个重删域。

7.根据项6所述的方法,其特征在于,按照所述子域的类型,对所述子域进行数据重删包括:

在所述子域的类型为实时重删域的情况下,基于当前待写入的数据分片的特征值,判断在所述子域中是否存在与所述当前待写入的数据分片相同的数据分片;在存在相同的数据分片的情况下,不将所述当前待写入的数据分片写入到所述子域中,而只在元数据中将当前待写入的数据分片的指针指向所述相同的数据分片;在不存在相同的数据分片的情况下,将所述当前待写入的数据分片写入到所述子域中,并在元数据中将所述当前待写入的数据分片的指针指向所述相同的数据分片;

在所述子域的类型为离线重删域的情况下,将当前待写入的数据分片写入到所述当前重删域中,并在之后的离线重删的时段,基于当前数据分片的特征值,判断在所述子域中是否存在与所述当前数据分片相同的数据分片;在存在相同的数据分片的情况下,从所述子域中删除所述当前数据分片,并更新指纹库,同时将元数据中的所述当前数据分片的指针修改为指向所述相同的数据分片;

在所述子域的类型为无重删域的情况下,将当前待写入的数据分片写入到所述子域中,并且不进行数据重删。

8.根据项7所述的方法,其特征在于,基于所述父域的类型,对所述父域执行数据重删包括:

在所述父域的类型为离线重删域的情况下,在之后的离线重删的时段,基于当前数据分片的特征值,判断在所述父域中是否存在与所述当前数据分片相同的数据分片;在存在相同的数据分片的情况下,从所述父域中删除所述当前数据分片,并更新指纹库,同时将元数据中的所述当前数据片的指针修改为指向所述相同的数据分片;

在所述父域的类型为无重删域的情况下,不进行数据重删。

9.根据项6至8中任一项所述的方法,其特征在于,按照预设的分配规则或者按照算法,为各数据分片分配相应的重删域包括:

按照预设的分配规则,为各数据分片分配相应的重删域,其中,所述各数据分片中添加有相应的标签,所述分配规则中定义了相应的标签与相应的重删域之间的映射关系;或

按照算法,基于所述复数个重删域中的每一个重删域的权重,为各数据分片分配相应的重删域。

10.根据项1至9中任一项所述的方法,其特征在于,在从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域之前,所述方法还包括:按照预定的配置,将所述数据存储区域划分为所述复数个重删域,使得所述复数个重删域中的至少两个重删域具有嵌套关系,并为所述复数个重删域中的每一个重删域设置类型和级别。

11.根据项10所述的方法,其特征在于,将所述数据存储区域划分为所述复数个重删域包括:基于所述数据存储区域的应用场景,通过以不同的组合方式配置所述嵌套关系来将所述数据存储区域划分为所述复数个重删域,所述应用场景包括以下至少之一:超大规模重删系统的应用场景、租户隔离的应用场景和重要数据保护的应用场景。

12.根据项11所述的方法,其特征在于,

在所述应用场景为所述超大规模重删系统的应用场景下,基于所述数据存储区域的应用场景,将所述数据存储区域划分为所述复数个重删域包括:将所述数据存储区域划分为一个第二区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为离线重删域,级别被配置为中级别,其中,所述多个第一区域中的部分或者所有第一区域分别包括一个或多个存储节点;

在所述应用场景为所述租户隔离的应用场景下,基于所述数据存储区域的应用场景,将所述数据存储区域划分为所述复数个重删域包括:将所述数据存储区域划分为一个第二区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为无重删域,级别被配置为高级别;

在所述应用场景为所述重要数据保护的应用场景下,基于所述数据存储区域的应用场景,将所述数据存储区域划分为所述复数个重删域包括:将所述数据存储区域划分为一个第二区域、一个或多个彼此独立的第三区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域和所述一个或多个第三区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为离线重删域,级别被配置为中级,所述一个或多个第三区域的类型被配置为无重删域,级别被配置为高级别。

13.根据项1所述的方法,其特征在于,从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域包括:从所述数据存储区域中的复数个重删域中选择具有嵌套关系的一个或多个重删域中的最内层区域作为所述当前重删域。

14.根据项1所述的方法,其特征在于,基于预定的配置,确定所述当前重删域在所述复数个重删域中的嵌套关系包括:

执行以下循环过程,直至满足预设循环终止条件:

基于所述当前重删域的标识符,查找所述当前重删域的父域的标识符,其中,所述父域为包含所述当前重删域且与所述当前重删域直接相邻的外层区域;

将查找到的所述父域作为与所述当前重删域具有嵌套关系的重删域;

将所述父域作为新的所述当前重删域;

其中,所述预设循环终止条件为所述当前重删域不存在所述父域。15.一种基于重删域的数据重删装置,其特征在于,包括:

域确定模块,被配置为从数据存储区域中的复数个重删域中确定待进行数据重删的当前重删域;

嵌套确定模块,被配置为基于预定的配置,确定所述当前重删域在所述复数个重删域中的嵌套关系;

重删模块,被配置为按照域重删规则,依次对所述当前重删域以及与所述当前重删域具有嵌套关系的一个或多个重删域执行数据重删。

16.根据项15所述的装置,其特征在于,所述重删模块还被配置为:

将所述当前重删域作为子域,按照所述子域的类型,对所述子域进行数据重删;

执行以下循环过程,直至满足预设循环终止条件:

将所述具有嵌套关系的一个或多个重删域中的与所述子域直接相邻的外层区域作为所述子域的父域;

基于所述父域和所述子域的级别和所述父域的类型,对所述父域执行数据重删;

将所述父域作为新的所述子域;

其中,所述预设循环终止条件为:所述父域为所述具有嵌套关系的一个或多个重删域中的最外层区域,或者,所述父域的级别低于所述子域的级别。

17.根据项16所述的装置,其特征在于,所述重删模块还被配置为:

获取并比较所述子域的级别以及所述父域的级别;

在所述父域的级别高于所述子域的级别的情况下,基于所述父域的类型,对所述父域执行数据重删。

18.根据项16至17中任一项所述的装置,其特征在于,所述类型包括:

实时重删域,表示对对应的重删域进行实时数据重删;

离线重删域,表示对对应的重删域进行离线数据重删;和

无重删域,表示对对应的重删域不进行数据重删。

19.根据项16至17中任一项所述的装置,其特征在于,所述级别包括:

低级别,表示级别为低,对应的重删域的类型为实时重删域;

中级别,表示级别为中,对应的重删域的类型为离线重删域;和

高级别,表示级别为高,对应的重删域的类型为无重删域。

20.根据项17所述的装置,其特征在于,所述装置还包括配置模块,所述配置模块被配置为:

接收待写入的数据;

按照相应的算法对所述待写入的数据进行分片,并为各数据分片计算相应的特征值;

按照预设的分配规则或者按照算法,为各数据分片分配相应的重删域;

其中,所述当前重删域为所分配的重删域中的、当前待进行数据删除的一个重删域。

21.根据项20所述的装置,其特征在于,所述重删模块还被配置为:

在所述子域的类型为实时重删域的情况下,基于当前待写入的数据分片的特征值,判断在所述子域中是否存在与所述当前待写入的数据分片相同的数据分片;在存在相同的数据分片的情况下,不将所述当前待写入的数据分片写入到所述子域中,而只在元数据中将当前待写入的数据分片的指针指向所述相同的数据分片;在不存在相同的数据分片的情况下,将所述当前待写入的数据分片写入到所述子域中,并在元数据中将所述当前待写入的数据分片的指针指向所述相同的数据分片;

在所述子域的类型为离线重删域的情况下,将当前待写入的数据分片写入到所述当前重删域中,并在之后的离线重删的时段,基于当前数据分片的特征值,判断在所述子域中是否存在与所述当前数据分片相同的数据分片;在存在相同的数据分片的情况下,从所述子域中删除所述当前数据分片,并更新指纹库,同时将元数据中的所述当前数据分片的指针修改为指向所述相同的数据分片;

在所述子域的类型为无重删域的情况下,将当前待写入的数据分片写入到所述子域中,并且不进行数据重删。

22.根据项21所述的装置,其特征在于,所述重删模块还被配置为:

在所述父域的类型为离线重删域的情况下,在之后的离线重删的时段,基于当前数据分片的特征值,判断在所述父域中是否存在与所述当前数据分片相同的数据分片;在存在相同的数据分片的情况下,从所述父域中删除所述当前数据分片,并更新指纹库,同时将元数据中的所述当前数据片的指针修改为指向所述相同的数据分片;

在所述父域的类型为无重删域的情况下,不进行数据重删。

23.根据项20至22中任一项所述的装置,其特征在于,所述配置模块还被配置为:

按照预设的分配规则,为各数据分片分配相应的重删域,其中,所述各数据分片中添加有相应的标签,所述分配规则中定义了相应的标签与相应的重删域之间的映射关系;或

按照算法,基于所述复数个重删域中的每一个重删域的权重,为各数据分片分配相应的重删域。

24.根据项15至23中任一项所述的装置,其特征在于,所述配置模块还被配置为:按照预定的配置,将所述数据存储区域划分为所述复数个重删域,使得所述复数个重删域中的至少两个重删域具有嵌套关系,并为所述复数个重删域中的每一个重删域设置类型和级别。

25.根据项24所述的装置,其特征在于,所述配置模块还被配置为还被配置为:基于所述数据存储区域的应用场景,通过以不同的组合方式配置所述嵌套关系来将所述数据存储区域划分为所述复数个重删域,所述应用场景包括以下至少之一:超大规模重删系统的应用场景、租户隔离的应用场景和重要数据保护的应用场景。

26.根据项25所述的装置,其特征在于,

在所述应用场景为所述超大规模重删系统的应用场景下,所述配置模块还被配置为:将所述数据存储区域划分为一个第二区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为离线重删域,级别被配置为中级别,其中,所述多个第一区域中的部分或者所有第一区域分别包括一个或多个存储节点;

在所述应用场景为所述租户隔离的应用场景下,所述配置模块还被配置为:将所述数据存储区域划分为一个第二区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为无重删域,级别被配置为高级别;

在所述应用场景为所述重要数据保护的应用场景下,所述配置模块还被配置为:将所述数据存储区域划分为一个第二区域、一个或多个彼此独立的第三区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域和所述一个或多个第三区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为离线重删域,级别被配置为中级,所述一个或多个第三区域的类型被配置为无重删域,级别被配置为高级别。

27.根据项15所述的装置,其特征在于,所述域确定模块还被配置为:从所述数据存储区域中的复数个重删域中选择具有嵌套关系的一个或多个重删域中的最内层区域作为所述当前重删域。

28.根据项15所述的装置,其特征在于,所述嵌套确定模块还被配置为:

执行以下循环过程,直至满足预设循环终止条件:

基于所述当前重删域的标识符,查找所述当前重删域的父域的标识符,其中,所述父域为包含所述当前重删域且与所述当前重删域直接相邻的外层区域;

将查找到的所述父域作为与所述当前重删域具有嵌套关系的重删域;

将所述父域作为新的所述当前重删域;

其中,所述预设循环终止条件为所述当前重删域不存在所述父域。29.一种存储设备,其特征在于,具有包括复数个重删域的数据存储区域,所述复数个重删域中的部分或者全部重删域具有嵌套关系,使得在数据重删时,能够基于所述嵌套关系进行数据重删。

30.根据项29所述的存储设备,其特征在于,所述复数个重删域中的每一个重删域配置有类型和级别。

31.根据项30所述的存储设备,其特征在于,所述类型包括:

实时重删域,表示对对应的重删域进行实时数据重删;

离线重删域,表示对对应的重删域进行离线数据重删;和

无重删域,表示对对应的重删域不进行数据重删。

32.根据项30所述的存储设备,其特征在于,所述级别包括:

低级别,表示级别为低,对应的重删域的类型为实时重删域;

中级别,表示级别为中,对应的重删域的类型为离线重删域;和

高级别,表示级别为高,对应的重删域的类型为无重删域。

33.根据项29至32任一项所述的存储设备,其特征在于,所述复数个重删域是基于所述数据存储区域的应用场景、通过以不同的组合方式配置所述嵌套关系而进行划分得到的,所述应用场景包括以下至少之一:超大规模重删系统的应用场景、租户隔离的应用场景和重要数据保护的应用场景。

34.根据项33所述的存储设备,其特征在于,

在所述应用场景为所述超大规模重删系统的应用场景下,所述数据存储区域被划分为一个第二区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为离线重删域,级别被配置为中级别,其中,所述多个第一区域中的部分或者所有第一区域分别包括一个或多个存储节点;

在所述应用场景为所述租户隔离的应用场景下,所述数据存储区域划被分为一个第二区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为无重删域,级别被配置为高级别;

在所述应用场景为所述重要数据保护的应用场景下,所述数据存储区域被划分为一个第二区域、一个或多个彼此独立的第三区域和彼此独立的多个第一区域,所述第二区域以嵌套的形式包含所述多个第一区域和所述一个或多个第三区域,所述多个第一区域的类型分别被配置为实时重删域,级别分别被配置为低级别,所述第二区域的类型被配置为离线重删域,级别被配置为中级,所述一个或多个第三区域的类型被配置为无重删域,级别被配置为高级别。

35.一种基于重删域的数据重删系统,其特征在于,包括如项15-28任一项所述的数据重删装置和项29至34任一项所述的存储设备。

36.一种计算机设备,其特征在于,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现如项1-14任一项所述的方法。

37.一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如项1-14任一项所述的方法。

上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。

在本公开的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

以上所述仅是本公开的优选实施例,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本公开的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号