去重系统中小对象表示的存储技术方案

技术编号:35331244 阅读:17 留言:0更新日期:2022-10-26 11:48
示例可以包括在去重系统中存储小对象表示。示例可以基于确定对象小于阈值大小,将对象的小对象表示存储在去重系统中。在示例中,小对象表示可以包括从顶层数据结构到小对象表示的底层数据结构中的小对象元数据的直接引用。引用。引用。

【技术实现步骤摘要】
去重系统中小对象表示的存储

技术介绍

[0001]客户端计算设备(诸如服务器等)可以将数据存储在主存储阵列中,并且可以针对存储在主存储阵列中的数据执行工作负载。在一些示例中,出于诸如冗余和数据保护的目的,存储在主存储阵列中的数据可以被备份在与客户端计算设备和主存储阵列两者分离的计算系统中。在一些示例中,这个计算系统可以以去重的形式存储数据,以便更紧凑地存储数据。
附图说明
[0002]以下详细描述参考了附图,其中:
[0003]图1是存储对象的小对象表示的示例去重系统的框图;
[0004]图2是包括可执行来存储对象的小对象表示的指令的示例计算设备的框图;
[0005]图3是包括存储对象的小对象表示的示例方法的流程图;
[0006]图4是示例去重系统的框图,其中小对象表示包括清单;以及
[0007]图5是对清单进行去重的示例去重系统的框图。
具体实施方式
[0008]客户端计算设备(诸如服务器、存储阵列等)可以通过将数据存储在能够对数据执行去重以便以比未去重的形式更紧凑的去重形式存储数据的计算系统中来备份数据。能够对数据执行这种去重的这种计算系统在本文中可以被称为去重系统,并且可以由备份设施来实现。在本文描述的示例中,去重系统可以对对象执行去重过程,该对象是本文描述的示例中的数据的集。去重系统可以接收对象作为数据流以便进行去重式存储。
[0009]提供给去重系统用于进行去重式存储的各个对象可以由向去重系统提供对象以便进行存储的客户端系统来定义,因此所提供的对象可以在大小和内容类型上变化。例如,对象可以表示单个文件、整个文件系统(或其一部分)、一个或多个虚拟卷等,并且给定客户端可以向去重系统提供各种大小的对象。但是,以相同的方式存储大对象和小对象的去重式表示可能是低效率的。为了解决这些问题,本文描述的示例可以利用去重系统中的用于大对象的大对象表示和去重系统中的用于小对象的小对象表示。
[0010]图1是存储对象的小对象表示的示例去重系统100的框图。去重系统100可以由诸如至少一个存储阵列、备份设施等计算设备来实施。去重系统100可以包括至少一个处理资源110和至少一个机器可读存储介质120,该至少一个机器可读存储介质包括(例如编码有)至少指令122,这些指令可由至少一个处理资源110执行,以实施本文关于指令122描述的功能性。本文描述为由去重系统100执行(或能够由去重系统100执行)的功能性可以由执行去重系统100的指令122的(多个)处理资源110来实施,并且也可以被描述为指令122的功能性(即当执行指令122时由(多个)处理资源110执行的功能性)。
[0011]去重系统100可以使用多个数据结构来存储对象的去重表示。多个数据结构可以包括(多个)容器数据结构(例如(多个)文件),用于存储(多个)对象的数据内容的固定或可
变大小的组块(chunk)。容器数据结构在本文中也可以称为容器。在图1的示例中,去重系统100使用容器250、252、254和256中的每一个来存储经由去重表示存储在去重系统100中的对象的相应组块260。例如,容器250可以存储至少组块261至264,容器252可以存储至少组块261至269,容器254可以存储至少组块206至209,并且容器250可以存储至少组块201至204。尽管为了清楚起见,在图中的每个容器中示出了相对较小数量的组块260,但是在本文描述的示例中的任何容器可以包括更多或更少的组块。
[0012]去重系统100可以在不同类型的数据结构的层级290中存储用于对象的去重表示的元数据。层级290可以包括顶层(top

level)数据结构、底层(bottom

level)数据结构以及与层级290中的顶层和底层数据结构分离并在它们之间的中间层(intermediate

level)数据结构。在图1的示例中,层级290可以包括顶层数据结构210、中间层数据结构212、214和216以及底层数据结构220、222、224和226。
[0013]每个底层数据结构包括相对应的容器数据结构中的每个组块260的组块元数据150的相应实例。在图1的示例中,底层数据结构220、222、224和226各自分别包括用于相对应的容器数据结构250、252、254和256的组块260的组块元数据150的实例。存储组块元数据150的(多个)实例的底层数据结构在本文中可以被称为容器索引或容器索引数据结构。
[0014]组块元数据150的每个实例与存储在容器数据结构中的一个中的相应组块260相关联,并且包括与相应组块相关联的元数据。元数据可以包括组块签名(表示相关联组块的内容)、对相关联组块的引用(reference)计数、以及指示相关联组块本身的存储位置(例如,它存储在其中的容器数据结构内的位置)的位置标识符。组块元数据150还可以包括标识组块元数据150本身的实例的数据标识符(例如到达号)。
[0015]在图1的示例中,底层数据结构220对应于容器数据结构250,并且包含存储在容器数据结构250中的组块260中的每一个的组块元数据150的相应实例。例如,底层数据结构220包括用于容器250的组块261的组块元数据150的实例(图1中示出)。用于组块261的组块元数据150包括数据标识符230(以标识组块元数据150本身的这个实例)、up玫瑰组块261的组块签名SIG

1、用于组块261的引用计数2以及指示组块261的位置(例如容器数据结构250内的偏移)的位置80。
[0016]同样在图1中示出,与容器252相关联的底层数据结构222包括用于容器252的组块266的组块元数据150。用于组块266的组块元数据150包括数据标识符242、组块签名SIG

5、引用计数3和位置82。与容器254相关联的底层数据结构224包括用于容器254的组块206的组块元数据150。用于组块206的组块元数据150包括数据标识符236、组块签名SIG

3、引用计数1和位置84。图1中还示出了包括在与容器256相关联的底层数据结构226中的组块元数据150的几个实例,包括:用于组块201的组块元数据150(包括标识符249、签名SIG

2、引用计数4和位置85);用于组块203的组块元数据150(包括标识符270、签名SIG

4、引用计数2和位置86);以及用于组块204的组块元数据150(包括标识符272、签名SIG

7、引用计数“7”和位置87)。尽管为了清楚起见,在图中的每个底层数据结构中示出了相对较小数量的组块元数据150实例,但是本文描述的示例中的任何底层数据结构可以包括更多的组块元数据150实例。
[0017]层级290的中间层数据结构当存在时与层级290中的顶层和底层数据结构分离,并在它们之间。层级290中的顶层数据结构210可以存储各自与(以去本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种方法,包括:在去重系统中存储大于阈值大小的第一对象的大对象表示,其中所述大对象表示包括以数据结构的层级组织的元数据,所述层级包括:顶层数据结构;一个或多个底层数据结构,每个底层数据结构包括组块元数据,所述组块元数据包括所述第一对象的相应组块的存储位置;以及一个或多个中间层数据结构,所述一个或多个中间层数据结构与所述层级中的所述顶层数据结构和底层数据结构分离并在所述顶层数据结构和底层数据结构之间,所述一个或多个中间层数据结构包括通过对所述一个或多个底层数据结构的所述组块元数据的引用来表示所述第一对象的组块的重构顺序的清单;确定第二对象小于所述阈值大小;以及基于所述确定,在所述去重系统中存储所述第二对象的小对象表示,所述小对象表示包括:从所述顶层数据结构到所述小对象表示的底层数据结构中的小对象元数据的直接引用,所述直接引用省略了与所述小对象表示的所述顶层数据结构和底层数据结构分离的并且在所述顶层数据结构和底层数据结构之间的任何中间层数据结构,其中所述小对象表示的底层数据结构包括所述第二对象的包含所述第二对象的每个组块的相应存储位置的组块元数据。2.根据权利要求1所述的方法,其中:所述第二对象的内容被包含在单个组块中;所述小对象元数据包括所述第二对象的单个组块的组块元数据;以及所述直接引用包括存储在所述顶层数据结构中的对所述第二对象的单个组块的组块元数据的引用。3.根据权利要求1所述的方法,其中:所述第二对象的内容被包含在多个组块中;所述小对象元数据包括存储在所述小对象表示的底层数据结构中的所述第二对象的清单;以及所述第二对象的清单经由对所述第二对象的相应多个组块的组块元数据的引用,表示用于重构所述第二对象的所述多个组块的顺序。4.根据权利要求3所述的方法,其中:所述去重系统的去重域包括多个底层数据结构,所述底层数据结构包括所述大对象表示的一个或多个底层数据结构;以及将所述第二对象的小对象表示存储在所述去重系统中包括:选择所述多个底层数据结构中的给定底层数据结构作为所述小对象表示的底层数据结构,并基于所述清单与所述给定底层数据结构之间的相关度来存储所述清单。5.根据权利要求4所述的方法,其中对于所述第二对象的每个组块,相应的组块元数据包括表示所述组块的内容的组块签名,所述方法还包括:基于由所述第二对象的清单引用的所述组块元数据的组块签名中的每一个,生成所述第二对象的清单签名;以及
将所述清单签名存储在所述小对象表示的底层数据结构中。6.根据权利要求5所述的方法,还包括:生成所述第三对象的清单,所述清单对于所述第三对象的每个组块包括对包含表示所述组块的内容的组块签名的相应组块元数据的引用;以及基于确定第三对象低于所述阈值大小并且包括要由第二多个组块表示的内容:基于由所述第三对象的清单所引用的所述组块元数据的组块签名中的每一个,生成所述第三对象的清单签名。7.根据权利要求6所述的方法,还包括:将所述第三对象的清单签名与所述第二对象的清单签名进行比较;以及基于确定所述第二和第三对象的清单签名是等效的,在所述去重系统中存储所述第三对象的小对象表示,所述小对象表示包括从所述顶层数据结构到所述底层数据结构中的所述第二对象的清单的直接引用。8.一种包括非暂时性机器可读存储介质的物品,所述存储介质包括能够由至少一个处理资源执行以进行以下操作的指令:基于确定第一对象大于阈值大小,在去重系统中存储所述第一对象的大对象表示,所述大对象表示包括以数据结构的层级组织的元数据,所述层级包括:顶层数据结构;一个或多个底层数据结构,每个底层数据结构包括组块元数据,所述组块元数据包括所述第一对象的各个组块的存储位置;一个或多个中间层数据结构,所述一个或多个中间层数据结构与所述层级中的所述顶层数据结构和底层数据结构分离并在所述顶层数据结构和底层数据结构之间,所述一个或多个中间层数据结构包括通过对所述一个或多个底层数据结构的所述组块元数据的引用来表示所述第一对象的组块的重构顺序的清单;以及其中在数据结构层级中,所述一个或多个中间层数据结构与所述顶层数据结构和底层数据结构分离并且位于所述顶层数据结构和底层数据结构之间;以及基于确定第二对象小于所述阈值大小,在所述去重系统中存储所述第二对象的小对象表示,所述小对象表示包括:从所述顶层数据结构到所述小对象表示的底层数据结构中的小对象元数据的直接引用,所述直接引用省略了与所述小对象表示的所述顶层和底层数据结构分离的并且在所述顶层数据结构和底层数据结构之间的任何中间层数据结构,其中所述小对象表示的底层数据结构包括所述第二对象的每个组块的组块元数据,所述组块元数据包括所述第二对象的每个组块的相应存储位置。9.根据权利要求8所述的物品,所述指令能够执行以:基于确定所述第二对象的内容小到足以在所述去重系统中由单个组块表示:在所述顶层数据结构中存储对所述第二对象的单个组块的组块元数据的引用,其中所述单个组块的组块元数据被存储在所述小对象表示的底层数据结构中;其中所述直接引用包括对所述单个组块的组块元数据的引用。10.根据权利要求9所述的物品,所述指令能够执行以:在所述去重系统中存储所述第二对象的小对象表示之后,确定附加内容要被存储到所
述去重系统中的所述第二对象的去重表示;基于确定具有所述附加内容的所述第二对象的内容太大而不能存储在一个组块中并且小于所述阈值大小:将具有所述附加内容的第二对象的清单存储在所述小对象表示的底层数据结构中,其中所述第二对象的清单经由对组块元数据的引用来表示包含所述第二对象的内容的第一多个...

【专利技术属性】
技术研发人员:D
申请(专利权)人:慧与发展有限责任合伙企业
类型:发明
国别省市:

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

1