表示可内容寻址存储系统的目录结构的制作方法_2

文档序号:8457291阅读:来源:国知局
0的叶对象块对应于文件系统卷的文件或者空目录。例如,如文件系统层次结构200所指示的,文件“FILE I”至“FILE N”(对应于对象块212至216)存储在目录“PPTS” (对应于目录对象块208)下。目录“PPTS”是目录“D0CS”(对应于目录对象块204)的子代,其反之是文件系统卷200的根目录的目录“JACK” (对应于目录对象块202)的子代。对象块202是对应于卷200的层次结构的根对象块。使用根对象块202的哈希值可访问整个文件系统卷。
[0042]在文件系统中,目录可包含作为子对象的文件以及目录。例如,目录“D0CS”(对应于目录对象块204)包括文件夹“PPTS” (对应于目录对象块208)和文件“TEXT” (对应于对象块218)。
[0043]当使用块存储器实现文件系统层次结构时,单个文件的添加、更改、或者移除必然改变位于层次结构中的该文件以上的每个文件。具体地,因为通过基于内容进行访问的对象块实现文件,所以对单个文件的更改致使对位于文件系统层次结构中的该文件以上的每个目录创建新的目录对象块,所以必须更新祖代目录对象块中所提及的相应哈希值。
[0044]例如,假设文件系统卷的授权用户更改“FILE I”(对应于对象块212)。因为对“FILE I ”的更改改变了对象块的内容,并且基于可内容寻址存储系统中的内容可寻址各个块,所以不是通过对象块212 (对应于之前版本的“FILE I”)简单地存储更改数据。而是,在可内容寻址存储系统中生成并且存储对应于更改版本“FILE I”的新对象块250。新对象块250与对象块212分开存储。
[0045]因为当前版本的“FILE I”对应于新对象块250,所以目录对象块208(对应于父代目录“PPTS”)必须被更新至使新对象块254指向当前版本的“FILE I”。为了更新文件系统层次结构200中的目录“PPTS”,生成并且存储新目录对象块252。新目录对象块252 (对应于更新版本的目录“PPTS”)指向对象块254(对应于更新版本的“FILE I”)并且并不指向对象块212 (对应于之前版本的“FILE I”)。同样,原始目录对象块204(对应于目录“DOCS”)则必须也被更新至指向用于“PPTS”目录的新块。为了更新目录“DOCS”,生成并且存储新目录对象块254用于目录“DOCS”。出于同样原因,存储新目录对象块256用于根目录“JACK”,即,“DOCS”的父代。在“FILE I”更改之后,使用新目录对象块256访问整个文件系统卷。
[0046]由于对“FILE I”的更改,若干个块变得“过时”。过时块是其数据不再反映文件系统的当前状态的块。在给定的上述实施例中,对“FILE I”的更新致使对象块212、208、204、以及202变得过时。执行的更新次数越多,各个块则变得越过时。
[0047]可内容寻址存储系统中也可能生成并且存储对应于单独文件和目录的额外块,这些块在图2中被省略。图3A至图3D中提供了其他各块的实施例。例如,可将层次结构数据和/或索引数据存储为独立块。当通过更改而影响这些额外块时,则其也可能变得过时。
[0048]目录对象块
[0049]文件系统的目录结构包括布置成对象层次结构的一组对象。通常,对象层次结构包括根目录和根目录中所包含的子对象。子对象可以是文件对象或者其他目录对象。其他目录对象自身可具有子对象。因此,对目录结构中的目录的层次数目没有固定限制。
[0050]目录对象块存储在可内容寻址存储系统中以表示文件系统的目录。图3A是描述根据一种实施方式的目录对象块300的框图。出于说明性之目的,假设目录对象块300表示文件系统中的目录X。根据一种实施方式,目录对象块包括:
[0051].元数据块的哈希值
[0052].哈希集块的哈希值;以及
[0053]?名称索引块的哈希值
[0054]在下文中,将更为详细地描述各个哈希值和哈希值所对应的各个块。
[0055]对象块
[0056]图3C是描述对象块的实施方式的框图。对象块360存储在可内容寻址存储系统中。对象块360对应于诸如文件等非目录对象。对象块360可包括元数据块的哈希值362。对应于文件的元数据可作为独立的元数据块被存储在可内容寻址存储系统中。哈希值362是元数据块的哈希值。对象块360中包括哈希值362使对象块360与对应于文件的独立元数据块相关联。对应于与该文件相关联的其他元数据块的额外哈希值可被存储在对象块360或者元数据块362中。
[0057]对应于文件的其他数据可作为独立数据块被存储在可内容寻址存储系统中。哈希值364是与对象块360相关联的数据块的哈希值。对象块360包括哈希值364使对象块360与对应于该文件的独立数据块相关联。对应于与该文件相关联的其他数据块的额外哈希值可被存储在对象块360或者数据块364中。在一种实施方式中,将大型文件分割成多个数据块,这些数据块可以对象块360或中间块类型导引和/或索引。
[0058]在可替代实施方式中,可以将用于文件的数据和/或任何元数据直接存储在对象块360中ο
[0059]元数据块
[0060]对应于目录X的元数据可被存储在可内容寻址存储系统的独立元数据块中。在所示出的实施方式中,目录对象块300包括对应元数据块的哈希值302。哈希值302是与目录对象块300相关联的元数据块的哈希值。对应于与该目录相关联的其他元数据块的额外哈希值可被存储在目录对象块300或者对应于哈希值302的元数据块中。
[0061]哈希集块
[0062]文件系统的目录X可包括诸如文件和/或目录等零个或者多个子对象。子对象被存储为可内容寻址存储系统中的一组子对象块。
[0063]目录X下的该组子对象块与目录X下的目录对象块300相关联。具体地,使用子对象块的哈希值可使子对象块与目录对象块300相关联。在一种实施方式中,一个或者多个子对象块的哈希值被存储在一个或者多个哈希集块中。图3B中描述了哈希集块的实施方式。
[0064]在图3A中所示的实施方式中,目录对象块300包括主哈希集块(其自身可能是哈希集块的层次结构的根)的哈希值304。根哈希集块是该哈希集块的层次结构中所有其他哈希集块的祖代。在可替代实施方式中,目录对象块300可直接包括根哈希集而非根哈希集块的哈希值304。
[0065]如上所述,图3B是描述哈希集块的实施方式的框图。对于特定目录,至少一个哈希集块包含与相应目录的子对象对应的该组子对象块中的对象块的哈希值。主哈希集块320和任何额外的哈希集块330被存储在可内容寻址存储系统中。
[0066]当仅将一个哈希集块存储在目录下时,则对应的目录对象块可包括主哈希集块320的主哈希集块哈希值304,其中,主哈希集块320包含哈希集322。哈希集322包括与该目录下子对象对应的各个子对象块332的哈希值324至328。当目录为空时,哈希集322不包括任何哈希值。通过下列操作可获得目录访问或者访问该目录下的对象。
[0067].使用目录对象块300的哈希值检索目录对象块300 ;
[0068].使用主哈希集块哈希值304检索主哈希集块320 ;并且
[0069].使用主哈希集块320的哈希值324至328检索对应于该组子对象的数据。
[0070]当目录并不包含任何子对象时,主哈希集块320可具有空哈希集322或者可另行指示特定目录并不包含任何子对象。可替代地,对应于空目录的目录对象块300可存储空值用于主哈希集块哈希值304或者可另行表示任何主哈希集块均不与空目录相关联。
[0071]哈希集块的层次结构
[0072]当将一个以上哈希集块存储在在目录下时,该一个或者多个哈希集块可被布置成哈希集块的层次结构,其中,主哈希集块320是该哈希集块的层次结构的根哈希集块。根哈希集块是该哈希集块的层次结构中所有其他哈希集块的祖代。在一种实施方式中,该哈希集块的层次结构中的各个哈希集块包括一组哈希值,其中,每个哈希值均可用于下列块中的任一个:
[0073].该组子对象块中的对象块332 ;或者
[0074].该哈希集块的层次结构中的另一哈希集块330。
[0075]在一种实施方式中,该层次结构中的各个哈希集块可包含多至阈值数目的哈希值。如果在插入哈希值时超过阈值,则可重新配置哈希集块的层次结构。在下面题为“层次结构”的部分中将进一步详细对此情况进行说明。
[0076]更改哈希集块以反映目录变化
[0077]当通过诸如添加子对象、更改子对象、或者移除子对象而对目录进行更改时,目录块中子对象块的该组哈希值将发生变化。例如:
[0078].当将子对象添加到目录下时,添加哈希值;
[0079].当对子对象进行更改时,添加哈希值并且移除另一哈希值;并且
[0080].当从目录中移除子对象时,移除哈希值。
[0081]当该组哈希值变化时,与该目录相关联的一个或者多个哈希集块也将发生变化,以反映子对象块中该组哈希值的任何变化。通过生成包含所选择哈希值的新版本的指定(specific)哈希集块,可将所选择的哈希值添加到指定哈希集块中。通过生成不包含所选择哈希值的新版本的指定哈希集块,可从指定哈希集块中移除所选择的哈希值。
[0082]当仅将一个哈希集块存储在目录下时,主哈希集块320是指定的哈希集块,并且针对每个目录更改(例如,添加子对象、更改子对象、或者移除子对象)而生成并且存储新版本的主哈希集块320。在这种情况下,该新版本的主哈希集块320将包含该组子对象块的各个哈希值。将针对每个目录更改复制子对象块中所有的哈希值数据。
[0083]当将一个以上哈希集块存储在目录下时,诸如,存储在哈希集块的层次结构中,可针对每个目录更改生成并且存储新版本的一个以上哈希集块。除在其中添加或者移除哈希值的新版本的指定哈希集块之外,针对该哈希集块的层次结构中的任一祖代哈希块生成并且存储新版本。因为根哈希集块是该哈希集块的层次结构中的每个其他哈希集块的祖代,所以也生成被视为主哈希集块的新的根哈希集块。相应的目录对象块将导引从其中可访问该层次结构的所有其他哈希集块的根哈希集块。在这种情况下,将生成并且存储更多哈希集块的新版本,但是,针对每次目录更改则复制较少的哈希值。更具体地,不需要再生成该哈希集块的层次结构中的任何非祖代哈希集块,因此,不复制其中所包含的哈希值。
[0084]在这两种情况下,在可内容寻址存储系统中生成并且存储新的主哈希集块。新的主哈希集块的哈希值不同于原始主哈希集块的哈希值。因为目录对象块300包括主哈希集块哈希值304,所以在可内容寻址存储系统中也生成并且存储新的目录对象块。新的目录对象块包括对应于新主哈希集块的新的主哈希集块哈希值。使用新目录块的哈希值可访问该目录。
[0085]名称索引块
[0086]名称索引使目录下子对象的名称与可内容寻址存储系统中的相应对象块相关联。名称索引是可以加速可内容寻址存储系统内的目录寻址操作的可选组件。名称索引可被存储为可内容寻址存储系统中的一个或者多个名称索引块。图3D中描述了名称索引块的实施方式。<
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1