CN104778192A - 表示可内容寻址存储系统的目录结构 - Google Patents

表示可内容寻址存储系统的目录结构 Download PDF

Info

Publication number
CN104778192A
CN104778192A CN201410676825.5A CN201410676825A CN104778192A CN 104778192 A CN104778192 A CN 104778192A CN 201410676825 A CN201410676825 A CN 201410676825A CN 104778192 A CN104778192 A CN 104778192A
Authority
CN
China
Prior art keywords
hash
glomeration
block
new
cryptographic hash
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410676825.5A
Other languages
English (en)
Other versions
CN104778192B (zh
CN104778192B9 (zh
Inventor
伯特兰·塞尔勒特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
UP THERE Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/086,197 external-priority patent/US9183212B2/en
Application filed by UP THERE Inc filed Critical UP THERE Inc
Publication of CN104778192A publication Critical patent/CN104778192A/zh
Publication of CN104778192B publication Critical patent/CN104778192B/zh
Application granted granted Critical
Publication of CN104778192B9 publication Critical patent/CN104778192B9/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks

Abstract

提供用于表示可内容寻址存储系统的目录结构的技术。使用可内容寻址存储系统中的多个块表示文件系统的目录结构。目录结构包括布置在对象层次结构中的一组对象。该组对象包括对象层次结构内具有一组子对象的特定目录。该多个块包括特定目录的目录对象块。该多个块进一步包括一特定组的子对象块。该特定组的子对象块是该组子对象中各个子对象的对象块。该多个块进一步包括该特定组子对象块中具有对象块哈希值的至少一个哈希集块。

Description

表示可内容寻址存储系统的目录结构
相关申请的交叉引用
本申请要求于2012年9月18日提交的美国专利申请第13/622,026号的部分继续申请案的优先权,即,2012年1月26日提交的美国专利申请第13/358,742号的部分继续申请案,通过引用将其全部内容结合在此,如同其在本文中阐述的那样。
技术领域
本发明涉及存储系统,更具体地,涉及用于表示层次结构的可内容寻址存储系统中的目录结构。
背景技术
在典型的文件系统中,基于(a)各个项所存储的位置和(b)各个项的名称或者标识符检索所存储的各个项。例如,如果名称为“foo.txt”的文件位于名称为“c:\myfiles\text”的目录下,则应用程序可以使用路径名称“c:\myfiles\text\foo.txt”作为访问密钥而从文件系统中检索文件。
因为常规访问密钥基于所检索的各个项的位置,所以当在文件系统的目录结构中移动各个项时,则访问密钥改变。此外,一个项的每个副本均具有不同的访问密钥,因为每个副本均存储在不同的位置处。另一方面,当该项的内容改变时,访问密钥保持不变。
与常规文件系统相比,可内容寻址存储系统允许应用程序基于从各项内容所生成的数据(诸如,用于内容的哈希值)而从存储器中检索各项。因为可内容寻址存储系统基于针对各项生成的哈希值对各项执行存储相关操作,并且哈希值基于各项内容而非各项所存储的位置,在未获知各项的存储副本的数目或者位置的情况下,请求该操作的应用程序可执行这样的操作。例如,可内容寻址存储系统可将项X的多个副本存储在位置A、B、以及C处。希望检索项X的应用程序将基于项X的内容通过利用哈希值发送请求可执行此操作。基于该哈希值,可内容寻址存储系统将提供给应用程序一份从位置A、B、以及C中的一个所检索的项X的副本。因此,在不获知项X实际存储的位置、项X的存在的副本数目、获知实际获得的检索副本的具体位置的情况下,应用程序可获得项X。
块(chunk)存储系统是一种在不了解数字信息本身的格式或者内容的情况下执行存储操作的存储系统。因为系统处理所有形式的数字项,如同这些项仅是不透明块的数据,所以该存储系统被称之为块存储系统。例如,通过文字处理应用程序、图像管理应用程序、以及日历系统,可使用相同的块存储系统来分别存储文件、图像、以及约会。然而,就块存储系统而言,仅存储一种类型的项:不透明块的数字信息。
块存储系统可被实现为可内容寻址存储系统。例如,块存储系统可通过将加密哈希函数(例如,MD5、SHA-1或者SHA2)应用于块而生成一个块的哈希值。然后,块存储器可存储该块,并且保持使哈希值与该块所存储的位置相关联的索引数据。
当应用程序随后请求对该块的检索时,应用程序将哈希值提供给块存储系统。块存储系统使用索引数据来定位与该哈希值相关联的块,并且提供由此被定位至所请求应用程序的块。
当由可内容寻址存储系统中的一个或者多个块表示一个项时,则当该项被更改时,必须将额外的块添加到可内容寻址存储系统中。因为访问密钥基于内容,所以对应于更改项的任一块的访问密钥不同于对应于原始项的块的访问密钥。而且,对于原始项的导引(reference),例如哈希值或者其他访问密钥等将仅有可用于访问原始项。
该部分中所描述的解决方案是可以探索的解决方案,但不一定必须是之前构思或者探索的解决方案。因此,除非另有规定,否则,不应仅凭借其在该部分中的内容而假设该部分中所描述的任一种解决方案作为现有技术。
附图说明
图1是描述了用于表示可内容寻址存储系统中的目录结构的系统的实施方式的框图;
图2是描述对应于文件系统卷的对象块的实施方式的框图;
图3A是描述目录对象块的实施方式的框图;
图3B是描述哈希集块的层次结构的实施方式的框图;
图3C是描述对象块的实施方式的框图;
图3D是描述名称索引块的实施方式的框图;
图4是描述对应于文件系统卷的特定目录的哈希集块的实施方式的框图;
图5是示出了用于访问目录的方法的实施方式的流程图;
图6是示出了用于将新对象添加到目录中的方法的实施方式的流程图;
图7示出了可以实现一种或者多种实施方式的计算机系统。
具体实施方式
在下列描述中,出于说明性之目的,设定了无数种具体细节,以提供对本发明的完全理解。然而,显而易见,在不具备这些具体细节的情况下可以实现本发明。在其他情况下,以框图形式示出了所熟知的结构和设备,以避免使本发明变得不清楚。
概述
以反映文件系统目录结构的方式提供用于构造可内容寻址存储系统的技术。可内容寻址存储系统中的块实现文件系统的对象(例如,文件和目录)。对于包含一组子对象的特定目录,可内容寻址存储系统包括对应于该目录的目录对象块、对应于目录内所包含的子对象的一组子对象块、以及包含子对象块的哈希值的至少一个哈希集块。使用目录对象块的哈希值可访问目录。
更改目录(诸如,通过添加子对象、更改子对象、或者移除子对象)致使该目录下子对象块的该组哈希值发生变化。当更改目录时,生成包括新的或者经更改的子对象的新哈希值的一个或多个新哈希集块,或者省略所移除子对象的哈希值的一个或者多个新哈希集块
在一种实施方式中,哈希集块布置在层次结构中。根哈希集块是该哈希集块的层次结构中所有其他哈希集块的祖代(ancestor)。当从目录中添加、更改、或者移除子对象时,这种变化影响导引(reference)子对象的哈希集块以及受影响哈希集块的祖代。
块存储服务器
图1是描述用于表示可内容寻址存储系统中的目录结构的系统的实施方式的框图。
块存储服务器112是被配置为存储多个块的可内容寻址存储系统。尽管示出了单个块,然而,块存储服务器112可包括任意数目的服务器、数据存储器、网络、或者用于实现数据存储系统的任何其他部件。例如,块存储服务器112可以是云存储服务器。在图1中所示的实施方式中,块存储服务器112被配置为通过诸如云网络等一个或者多个网络与一个或者多个文件系统客户端102至106通信。
块存储服务器112被配置为存储使用基于块内容的访问密钥可进行访问的块。访问密钥可以是用于块数据的哈希值。在一种实施方式中,哈希函数是不变哈希函数。即,给定块的哈希函数的应用程序始终产生相同的访问密钥。可用于生成访问密钥的哈希函数的实施例包括但不限于MD5、SHA-1、以及SHA-2。尽管描述了使用哈希值作为访问密钥的细节实施方式,然而,可以使用用于表示可内容寻址存储系统中的目录结构的细节实施方式中的任何其他内容类访问密钥。
文件系统客户端
通常,文件系统客户端102至106代表被配置为存储和访问使用块存储服务器112所实现的文件系统的文件的实体。因此,文件系统客户端102至106可对应于应用程序、系统、服务、或者使用文件系统的任何其他类型的实体。块存储服务器112可存储用于一个或者多个文件系统客户端102至106的多个文件系统卷。而且,文件系统客户端102至106中的每个均可访问一个或者多个文件系统卷,并且每个文件系统卷均可被一个或者多个文件系统客户端102至106访问。
在一种实施方式中,文件系统客户端106包括文件夹和文档层108以及块系统客户端110。文件系统客户端106可通过文件夹和文档层108访问由块存储服务器112所存储的一个或者多个文件系统卷。在一种实施方式中,文件夹和文档层108允许文件系统客户端106的用户和应用程序以与传统文件系统相似的方式远程访问所存储的文件系统卷。例如,文件夹和文档层108可代表作为传统层次结构文件系统中的一组文件夹和文档而存储在块存储服务器112中的文件系统卷。
文件夹和文档层108与块系统客户端110通信以访问与块存储服务器112中所存储的文件系统卷有关的数据。块系统客户端110被配置为与块存储服务器112通信以访问由块存储服务器112所存储的块数据。在一种实施方式中,块系统客户端110被配置为通过诸如云网络等一个或者多个网络与块存储服务器112通信。在一种实施方式中,块系统客户端110被进一步配置为基于从块存储服务器112所检索的块来构造文件系统卷的一个或者多个目录的目录结构。
出于说明之目的,详细示出了文件系统客户端106的内部功能单元。尽管未独立示出,然而,文件系统客户端102和104可具有与文件系统客户端106相同或者相似的部件。
文件系统卷
块可以用来表示卷的文件系统层次结构,其中,一些块对应于文件系统层次结构的文件夹/目录,而其他块对应于存储在文件夹/目录中的文件。可内容寻址存储系统通常不可变。一旦数据块被存储为与访问密钥相关联,诸如,该块的哈希值,则不可直接更改访问密钥位置处的数据块。更确切地,创建该块的新版本,并且该新版本与该块的原始副本分开存储。此外,数据被存储为将新块位置与新访问密钥相关联,其中,新访问密钥基于更改块的内容。为表示通常可变文件系统的目录结构,必须考虑访问密钥的变化。
图2是描述对应于文件系统卷中诸如文件和目录等对象的对象块202至256的框图。对象块202至256包括对应于目录的目录对象块202至208和252至256以及对应于文件的文件对象块210至218和250。如本发明中所使用的,术语“文件”指与典型文件系统中诸如路径名称等访问密钥相关联的任何非目录数据。
尽管文件系统层次结构200中的对象块的布置反映了对象块所对应的目录与文件之间的层次结构关系,然而,块存储器内对象块的实际布置与该层次结构没有任何关系。例如,对象块可被分布在诸如云存储系统中等多个存储设备上。
文件系统层次结构200表示文件系统卷内的目录结构。如图2中所示,文件系统层次结构200是没有重叠结构的一颗树。如此处所使用的,术语“层次结构”包括但不限于树。例如,任何给定的对象块或者对象块的分层次结构还可以属于文件系统层次结构200内的多个分层次结构。任何对象块或者对象块的分层次结构还可以属于用于不同文件系统卷的不同文件系统层次结构。而且,通常,文件系统层次结构200可以是有向非循环图。有向非循环图还可表示潜在共享一个或者多个对象块的多个文件系统层次结构。本发明中所描述的技术同样适用于表示该层次结构的块存储器,作为表示非重叠树层次结构的块存储器。
文件系统层次结构200包括以反映文件系统卷中所存储的对象之间的层次结构关系的方式而布置的对象块202至218。文件系统层次结构200中的非叶(non-leaf)对象块对应于文件系统卷的非空目录。文件系统层次结构200的叶对象块对应于文件系统卷的文件或者空目录。例如,如文件系统层次结构200所指示的,文件“FILE 1”至“FILE N”(对应于对象块212至216)存储在目录“PPTS”(对应于目录对象块208)下。目录“PPTS”是目录“DOCS”(对应于目录对象块204)的子代,其反之是文件系统卷200的根目录的目录“JACK”(对应于目录对象块202)的子代。对象块202是对应于卷200的层次结构的根对象块。使用根对象块202的哈希值可访问整个文件系统卷。
在文件系统中,目录可包含作为子对象的文件以及目录。例如,目录“DOCS”(对应于目录对象块204)包括文件夹“PPTS”(对应于目录对象块208)和文件“TEXT”(对应于对象块218)。
当使用块存储器实现文件系统层次结构时,单个文件的添加、更改、或者移除必然改变位于层次结构中的该文件以上的每个文件。具体地,因为通过基于内容进行访问的对象块实现文件,所以对单个文件的更改致使对位于文件系统层次结构中的该文件以上的每个目录创建新的目录对象块,所以必须更新祖代目录对象块中所提及的相应哈希值。
例如,假设文件系统卷的授权用户更改“FILE 1”(对应于对象块212)。因为对“FILE 1”的更改改变了对象块的内容,并且基于可内容寻址存储系统中的内容可寻址各个块,所以不是通过对象块212(对应于之前版本的“FILE 1”)简单地存储更改数据。而是,在可内容寻址存储系统中生成并且存储对应于更改版本“FILE 1”的新对象块250。新对象块250与对象块212分开存储。
因为当前版本的“FILE 1”对应于新对象块250,所以目录对象块208(对应于父代目录“PPTS”)必须被更新至使新对象块254指向当前版本的“FILE 1”。为了更新文件系统层次结构200中的目录“PPTS”,生成并且存储新目录对象块252。新目录对象块252(对应于更新版本的目录“PPTS”)指向对象块254(对应于更新版本的“FILE 1”)并且并不指向对象块212(对应于之前版本的“FILE 1”)。同样,原始目录对象块204(对应于目录“DOCS”)则必须也被更新至指向用于“PPTS”目录的新块。为了更新目录“DOCS”,生成并且存储新目录对象块254用于目录“DOCS”。出于同样原因,存储新目录对象块256用于根目录“JACK”,即,“DOCS”的父代。在“FILE 1”更改之后,使用新目录对象块256访问整个文件系统卷。
由于对“FILE 1”的更改,若干个块变得“过时”。过时块是其数据不再反映文件系统的当前状态的块。在给定的上述实施例中,对“FILE 1”的更新致使对象块212、208、204、以及202变得过时。执行的更新次数越多,各个块则变得越过时。
可内容寻址存储系统中也可能生成并且存储对应于单独文件和目录的额外块,这些块在图2中被省略。图3A至图3D中提供了其他各块的实施例。例如,可将层次结构数据和/或索引数据存储为独立块。当通过更改而影响这些额外块时,则其也可能变得过时。
目录对象块
文件系统的目录结构包括布置成对象层次结构的一组对象。通常,对象层次结构包括根目录和根目录中所包含的子对象。子对象可以是文件对象或者其他目录对象。其他目录对象自身可具有子对象。因此,对目录结构中的目录的层次数目没有固定限制。
目录对象块存储在可内容寻址存储系统中以表示文件系统的目录。图3A是描述根据一种实施方式的目录对象块300的框图。出于说明性之目的,假设目录对象块300表示文件系统中的目录X。根据一种实施方式,目录对象块包括:
·元数据块的哈希值
·哈希集块的哈希值;以及
·名称索引块的哈希值
在下文中,将更为详细地描述各个哈希值和哈希值所对应的各个块。
对象块
图3C是描述对象块的实施方式的框图。对象块360存储在可内容寻址存储系统中。对象块360对应于诸如文件等非目录对象。对象块360可包括元数据块的哈希值362。对应于文件的元数据可作为独立的元数据块被存储在可内容寻址存储系统中。哈希值362是元数据块的哈希值。对象块360中包括哈希值362使对象块360与对应于文件的独立元数据块相关联。对应于与该文件相关联的其他元数据块的额外哈希值可被存储在对象块360或者元数据块362中。
对应于文件的其他数据可作为独立数据块被存储在可内容寻址存储系统中。哈希值364是与对象块360相关联的数据块的哈希值。对象块360包括哈希值364使对象块360与对应于该文件的独立数据块相关联。对应于与该文件相关联的其他数据块的额外哈希值可被存储在对象块360或者数据块364中。在一种实施方式中,将大型文件分割成多个数据块,这些数据块可以对象块360或中间块类型导引和/或索引。
在可替代实施方式中,可以将用于文件的数据和/或任何元数据直接存储在对象块360中。
元数据块
对应于目录X的元数据可被存储在可内容寻址存储系统的独立元数据块中。在所示出的实施方式中,目录对象块300包括对应元数据块的哈希值302。哈希值302是与目录对象块300相关联的元数据块的哈希值。对应于与该目录相关联的其他元数据块的额外哈希值可被存储在目录对象块300或者对应于哈希值302的元数据块中。
哈希集块
文件系统的目录X可包括诸如文件和/或目录等零个或者多个子对象。子对象被存储为可内容寻址存储系统中的一组子对象块。
目录X下的该组子对象块与目录X下的目录对象块300相关联。具体地,使用子对象块的哈希值可使子对象块与目录对象块300相关联。在一种实施方式中,一个或者多个子对象块的哈希值被存储在一个或者多个哈希集块中。图3B中描述了哈希集块的实施方式。
在图3A中所示的实施方式中,目录对象块300包括主哈希集块(其自身可能是哈希集块的层次结构的根)的哈希值304。根哈希集块是该哈希集块的层次结构中所有其他哈希集块的祖代。在可替代实施方式中,目录对象块300可直接包括根哈希集而非根哈希集块的哈希值304。
如上所述,图3B是描述哈希集块的实施方式的框图。对于特定目录,至少一个哈希集块包含与相应目录的子对象对应的该组子对象块中的对象块的哈希值。主哈希集块320和任何额外的哈希集块330被存储在可内容寻址存储系统中。
当仅将一个哈希集块存储在目录下时,则对应的目录对象块可包括主哈希集块320的主哈希集块哈希值304,其中,主哈希集块320包含哈希集322。哈希集322包括与该目录下子对象对应的各个子对象块332的哈希值324至328。当目录为空时,哈希集322不包括任何哈希值。通过下列操作可获得目录访问或者访问该目录下的对象。
·使用目录对象块300的哈希值检索目录对象块300;
·使用主哈希集块哈希值304检索主哈希集块320;并且
·使用主哈希集块320的哈希值324至328检索对应于该组子对象的数据。
当目录并不包含任何子对象时,主哈希集块320可具有空哈希集322或者可另行指示特定目录并不包含任何子对象。可替代地,对应于空目录的目录对象块300可存储空值用于主哈希集块哈希值304或者可另行表示任何主哈希集块均不与空目录相关联。
哈希集块的层次结构
当将一个以上哈希集块存储在在目录下时,该一个或者多个哈希集块可被布置成哈希集块的层次结构,其中,主哈希集块320是该哈希集块的层次结构的根哈希集块。根哈希集块是该哈希集块的层次结构中所有其他哈希集块的祖代。在一种实施方式中,该哈希集块的层次结构中的各个哈希集块包括一组哈希值,其中,每个哈希值均可用于下列块中的任一个:
·该组子对象块中的对象块332;或者
·该哈希集块的层次结构中的另一哈希集块330。
在一种实施方式中,该层次结构中的各个哈希集块可包含多至阈值数目的哈希值。如果在插入哈希值时超过阈值,则可重新配置哈希集块的层次结构。在下面题为“层次结构”的部分中将进一步详细对此情况进行说明。
更改哈希集块以反映目录变化
当通过诸如添加子对象、更改子对象、或者移除子对象而对目录进行更改时,目录块中子对象块的该组哈希值将发生变化。例如:
·当将子对象添加到目录下时,添加哈希值;
·当对子对象进行更改时,添加哈希值并且移除另一哈希值;并且
·当从目录中移除子对象时,移除哈希值。
当该组哈希值变化时,与该目录相关联的一个或者多个哈希集块也将发生变化,以反映子对象块中该组哈希值的任何变化。通过生成包含所选择哈希值的新版本的指定(specific)哈希集块,可将所选择的哈希值添加到指定哈希集块中。通过生成不包含所选择哈希值的新版本的指定哈希集块,可从指定哈希集块中移除所选择的哈希值。
当仅将一个哈希集块存储在目录下时,主哈希集块320是指定的哈希集块,并且针对每个目录更改(例如,添加子对象、更改子对象、或者移除子对象)而生成并且存储新版本的主哈希集块320。在这种情况下,该新版本的主哈希集块320将包含该组子对象块的各个哈希值。将针对每个目录更改复制子对象块中所有的哈希值数据。
当将一个以上哈希集块存储在目录下时,诸如,存储在哈希集块的层次结构中,可针对每个目录更改生成并且存储新版本的一个以上哈希集块。除在其中添加或者移除哈希值的新版本的指定哈希集块之外,针对该哈希集块的层次结构中的任一祖代哈希块生成并且存储新版本。因为根哈希集块是该哈希集块的层次结构中的每个其他哈希集块的祖代,所以也生成被视为主哈希集块的新的根哈希集块。相应的目录对象块将导引从其中可访问该层次结构的所有其他哈希集块的根哈希集块。在这种情况下,将生成并且存储更多哈希集块的新版本,但是,针对每次目录更改则复制较少的哈希值。更具体地,不需要再生成该哈希集块的层次结构中的任何非祖代哈希集块,因此,不复制其中所包含的哈希值。
在这两种情况下,在可内容寻址存储系统中生成并且存储新的主哈希集块。新的主哈希集块的哈希值不同于原始主哈希集块的哈希值。因为目录对象块300包括主哈希集块哈希值304,所以在可内容寻址存储系统中也生成并且存储新的目录对象块。新的目录对象块包括对应于新主哈希集块的新的主哈希集块哈希值。使用新目录块的哈希值可访问该目录。
名称索引块
名称索引使目录下子对象的名称与可内容寻址存储系统中的相应对象块相关联。名称索引是可以加速可内容寻址存储系统内的目录寻址操作的可选组件。名称索引可被存储为可内容寻址存储系统中的一个或者多个名称索引块。图3D中描述了名称索引块的实施方式。
目录对象块300可包括名称索引块的哈希值306。哈希值306使目录对象块300与一个或者多个名称索引块相关联。例如,一个或者多个名称索引块可被布置成名称索引块的层次结构,其中,主名称索引块是根名称索引块。根名称索引块是该名称索引块的层次结构中所有其他名称索引块的祖代。在可替代实施方式中,目录对象块300可直接包括根名称索引而非根哈希集块的哈希值。
如上所述,图3D是描述名称索引块的实施方式的框图。名称索引块380存储在可内容寻址存储系统中。名称索引使目录下子对象的名称与可内容寻址存储系统中的对应对象块相关联。例如,名称索引块380可包括一个或者多个名称映射382至384。每个名称映射均使目录下子对象的名称与相应对象块相关联。
在一种实施方式中,每个名称映射382至384均将对象名称哈希值386映射至对象块哈希值388。在给定包含子对象的目录下的子对象名称和目录对象块300时,名称映射382至384能够快速访问对象块390.通过下列操作可进行访问:
·使用目录对象块300的名称索引块哈希值306检索名称索引块380;
·生成子对象名称的哈希值386;
·使用对象名称哈希值386和相关联的名称映射382获得对象块哈希值388;并且
·使用对象块哈希值388检索对象块390。
名称索引块的层次结构
尽管关于对应于目录的哈希集块的层次结构详细描述了层次结构,然而,层次结构同样适用于对应于该目录的名称索引块的层次结构。
在一种实施方式中,存储在一个或者多个名称索引块中的名称索引可被布置成名称索引块的层次结构,其中,主名称索引块是根名称索引块。根名称索引块是该名称索引块的层次结构中所有其他名称索引块的祖代。例如,目录对象块300的名称索引块哈希值306可以是主名称索引块的哈希值,即,该名称索引块的层次结构中的根名称索引块。
根名称索引块是该名称索引块的层次结构中所有其他名称索引块的祖代。在一种实施方式中,该名称索引块的层次结构中的名称索引块380可包括该名称索引块的层次结构中其他名称索引块392的哈希值386。
更改名称索引块以反映目录变化
当诸如通过添加子对象、更改子对象、或者移除子对象更改目录时,在该名称索引中的映射组将发生变化。例如,当将子对象添加到目录下时,使子对象名称与新对象块的哈希值相关联的新映射被添加到名称索引。当从目录下移除子对象时,则移除使子对象名称与相关联对象块的哈希值相关联的映射。当更改目录下的子对象时,则添加了新的映射,并且移除之前的映射。
当目录下仅存储一个名称索引块时,则针对每次目录更改生成和存储新版本的名称索引块382。在这种情况下,新版本的名称索引块将包含用于该组子对象块的每个映射。对于每次目录更改,将复制用于子对象块的所有映射数据。
当目录下存储一个以上名称索引块时,诸如,存储在名称索引块的层次结构中,则针对每次目录更改,可生成并且存储新版本的一个以上名称索引块。除了从其中添加或者移除映射的新版本的指定名称索引块之外,针对该名称索引块的层次结构中的任一祖代名称索引块生成并且存储新版本。因为根名称索引块是该名称索引块的层次结构中每个其他名称索引块的祖代,所以也生成被视为主名称索引块的新的根名称索引块。对应的目录对象块将导引从其中可以访问该层次结构的所有其他名称索引块的根名称索引块。在这种情况下,生成并且存储多个名称索引块的新版本,但是,对于每次目录更改,将复制更少的映射。更具体地,不需要再生成该名称索引块的层次结构中的非祖代名称索引块,因此,不复制其中所包含的映射。
在这两种情况下,在可内容寻址存储系统中生成并且存储包括新名称索引块哈希值306的目录对象块300。使用新目录块的哈希值可访问该目录。在一种实施方式中,在同时使用哈希集块的层次结构和名称索引块的层次结构的可内容寻址存储系统中实现了目录结构,并且新目录对象块被生成一次,其中,新的目录对象块包含新的主哈希集块哈希值304和新的主名称索引块哈希值306。
层次结构
层次结构中的每个哈希集块均可包含多至阈值数目的哈希值,即,阈值t。当插入哈希值时,如果超过阈值t,则可以重新平衡或者另行重新配置哈希集块的层次结构。哈希块的层次结构的重新配置可以是部分或者全部。重新配置涉及针对该层次结构中每个受影响的哈希集块生成新的哈希集块,从而复制存储在可内容寻址存储系统中的哈希值数据。一种或者多种实施方式可最小化或者避免对哈希集块层次结构的完全重新配置。例如,可使用完美或者准完美哈希函数来生成对象块的哈希值。假设哈希值均匀分布,从而减少或者消除重新配置该哈希集块的层次结构的需求。
在一种实施方式中,当该组对象的大小高达至tn时,哈希集块的层次结构被配置成使得层次结构的高度为n,其中,t是阈值,并且其中,n是大于或者等于1的整数。阈值t越大,该层次结构的高度越小。例如,当阈值t为256时:
当该组对象的大小高达至255时,层次结构的高度为1;
当该组对象的大小高达至65535时,层次结构的高度为2;
当该组对象的大小高达至16777215时,层次结构的高度为3。
在一种实施方式中,层次结构的高度n等于logt(N),向上取整至下一个整数,其中,N是层次结构中所存储的哈希值的数目。层次结构的高度与针对目录的每次更改而需要改变的哈希集块的数目有关。通常,需要改变的哈希集块的数目是n。例如,当阈值t是256时,希望:
当该组对象的大小高达至255时,生成并且存储一个哈希集块;
当该组对象的大小高达至65535时,生成并且存储两个新的哈希集块;
当该组对象的大小高达至16777215时,生成并且存储三个哈希集块,以此类推。
当可内容寻址存储系统中使用准完美哈希函数时,这些边界是可靠和精确的。从而允许在不变时间内完成文件系统操作。
除哈希集块的数目需要改变之外,所改变的每个哈希集块的大小也是考虑因素。例如,如果层次结构的高度是一,则即使仅复制一个哈希集块,该哈希集块也包含相关目录中每个子对象的每个哈希集值。对于每个哈希集块,由阈值t限制哈希集块的大小。更具体地,哈希集块中所包含的哈希值的大小将高达至(每个哈希值的大小)x t。例如,如果每个哈希值的大小为32字节,并且阈值t是256,则每个哈希集块均存储高达至256字节*32字节=8KB的哈希值。
层次结构可被配置成使得在有效的不变时间内执行一个或者多个目录操作。例如,为了访问目录下的对象(即,获得相应对象块的哈希值),处理时间与logtN近似,其中,t是阈值,并且N是用于目录的哈希值的总数目。如上所述,层次结构可被配置成使得logtN是较小的常数。而且,为了更改目录下的对象(即,生成包含已更新哈希值的新块),处理时间也与logtN近似,对于非常大的N,其可以是较小的常数。
在一种实施方式中,可以使用哈希值的位值确定层次结构。当阈值t是256时,可以使用哈希值的指定字节来分割层次结构中各个层级的哈希值。例如,可以使用哈希值的第一字节的位值来分割层次结构中第一层级的哈希值,可以使用哈希值的第二字节的位值来分割层次结构中第二层级的哈希值等。
在一种实施方式中,当指定哈希集块中的哈希值的数目超过阈值t时,执行局部重新配置。例如,当将哈希值添加到指定哈希集时,在不从同一哈希集块中移除哈希值的情况下,阈值可能被超过。例如,通过扩展层次结构可执行局部重新配置。新的哈希值被添加到接收哈希集块中,该接收哈希集块为替换层次结构中指定哈希集块的新的直接父代哈希集块的子代。新的直接父代哈希集块也是接收哈希集块中至少一个同级哈希集块的祖代。对于未更改的子对象,新的直接父代哈希集块的子块包括原始指定哈希集块中所包含的所有子对象哈希值。
尽管关于哈希集块详细描述了层次结构,然而,这些概念同样适用于对应于目录的名称索引块的层次结构。
更新哈希集块层次结构
图4是描述对应于文件系统卷的特定目录的哈希集块的实施方式的框图。哈希集块层次结构400对应于文件系统层次结构中的特定目录。在该实施例中,哈希集块层次结构400对应于文件系统层次结构200中的目录“PPTS”。这种相关性可存储在目录对象块300的哈希集块哈希值304中。在这种情况下,目录对象块208(对应于目录“PPTS”)包括主哈希集块402的哈希值。
哈希集块层次结构400包括一组哈希集块402至414,该组哈希集块402至414包含对应于相应目录的子对象的对象块的哈希值。主哈希集块402是哈希集块层次结构400的根哈希集块并且是哈希集块层次结构400中所有其他哈希集块的祖代。每个哈希集块402至414均包括一组哈希值,其中,每个哈希值均用于哈希集块层次结构400中的另一哈希集块或者对应于目录“PPTS”下的文件“FILE1”至“FILE N”的对象块212至216。
当更改目录“PPTS”时,诸如,添加子对象,更改子对象,或者移除子对象,目录块中子对象块的该组哈希值将改变,并且更新哈希集块层次结构400以反映这种变化。为了更新哈希集块层次结构400,必须生成一个或者多个新哈希集块450至454来反映相关联目录中所包含的子对象块的该组哈希值的任何变化。例如,图2中所示的目录“PPTS”下“FILE 1”的更改使得对象块250生成并且被存储由。必须将哈希集块层次结构400中所存储的“FILE 1”的哈希值从对象块212的哈希值更新至对象块250的哈希值。在该实施例中,在哈希集块408中存储对象块212的哈希值(对应于之前版本的“FILE 1”)。在“FILE 1”更改之后,哈希集块层次结构400不再被称之为对象块212,而是被称之为对象块250。
在所示出的实施例中,对象块212的哈希值存储在哈希集块408中。生成新的哈希集块450来替换哈希集块层次结构400中的哈希集块408。新的哈希集块450包括对象块250的哈希值并且忽略对象块212的哈希值。此时,哈希集块408被视为过时。在一种实施方式中,通过复制哈希集块408中的哈希值、添加对象块250的哈希值、和忽略对象块212的哈希值而生成新的哈希集块450。在其他实施方式中,以另一种方式可重新分配哈希集块层次结构400中所包含的哈希值。而且,尽管从同一新的哈希集块450中添加并且移除相应的哈希值通常减少可内容寻址存储系统的数据复制,然而,其并不是每种实施方式或者实施方式中每种情况的必备条件。
过时哈希集块408具有祖代哈希集块402至404。因为祖代哈希集块404包括过时哈希集块408的哈希值,所以生成包括新哈希集块450的哈希值并且省略过时哈希集块408的哈希值的新哈希集块452。同样,生成包括新哈希集块452的哈希值并且省略过时哈希集块404的哈希值的新的主哈希集块454。新的主哈希集块454的哈希值不同于原始主哈希集块402的哈希值。因为目录对象块208包括主哈希集块402的主哈希集块哈希值,所以之前版本的目录对象块208(对应于目录“PPTS”)也是过时的。用于“PPTS”目录的新目录对象块252包括新的主哈希集块454的主哈希集块哈希值。在所示出的实施方式中,即使哈希集块层次结构400包含非常多的哈希值和/或非常多的哈希集块(例如,在一种实施方式中,高达至约1700万个哈希值和约7万个哈希集块),也生成和存储三个新的哈希集块。
尽管参考图4中的哈希集块详细描述了层次结构,然而,所示出的层次结构同样适用于对应于该目录的名称索引块的层次结构。
访问目录
图5是示出了用于访问目录的方法的实施方式的流程图。可以从诸如块存储服务器112等服务器端执行该方法。还可从诸如块系统客户端110等客户端执行该方法。
在块502,接收对访问目录的请求。该请求可包括与目录相关联的目录对象块(诸如,目录对象块300)的哈希值。可替代地和/或此外,该请求可包括目录名称、与该目录相关联的文件系统卷、文件系统层次结构中父代对象块的哈希值、或者用于获得相关联目录对象块的哈希值或目录的任何其他访问密钥的任何其他数据。
处理继续进行至块504,其中,从可内容寻址存储系统检索目录对象块。使用目录对象块的哈希值检索目录对象块。
处理继续进行至块506,其中,从可内容寻址存储系统检索诸如主哈希集块320等主哈希集块。使用存储在目录对象块中的主哈希集块的哈希值(例如,哈希集块哈希值304)检索主哈希集块。
处理继续进行至块506,其中,检索对应于目录的一组子对象的数据。使用存储在主哈希集块中的哈希值(诸如,哈希值324至328)检索对应于该组子对象的数据。哈希值还可存储在哈希集块的层次结构(例如,层次结构400)中,其中,主哈希集块是目录下的根哈希集块。
将对象添加到目录
图6是示出了用于将新的子对象添加到目录中的方法的实施方式的流程图。可以从诸如块存储服务器112等服务器端执行该方法。还可以从诸如块系统客户端110等客户端执行该方法。
在块602,新的对象块被添加到可内容寻址存储系统中。新的对象块对应于相关联目录的新的子对象。
处理继续进行至块604,其中,确定用于存储新对象块的哈希值的指定哈希集块。从存储目录的子对象块的哈希值的至少一个哈希集块中选择指定的哈希集块。例如,可从哈希集块的层次结构中选择指定的哈希集块。
处理继续进行至块606,其中,生成新接收哈希集块。新接收哈希集块包括新对象块的哈希值。新接收的哈希集块还可包括指定哈希集块中所包含的哈希值。例如,如果哈希值的总数目不超过阈值,则新接收哈希集块可包括指定哈希集块中所包含的所有哈希值。
处理继续进行至决策块608,其中,通过将新的哈希值添加到接收哈希集块中确定是否超过阈值。如果超过阈值,则处理继续进行至块610。否则,处理继续进行至块614。
在块610,生成至少一个新的同级哈希集块。该至少一个新的同级哈希集块包括指定哈希集块中所包含的至少一个哈希值。新接收的哈希集块和该至少一个新的同级哈希集块位于在哈希集块层次结构的同一层级中。
处理继续进行至块612,其中,生成新的直接父代哈希集块。新的直接父代哈希集块包括该至少一个同级哈希集块和该新接收哈希集块的哈希值。
处理继续进行至块614,其中,针对接收哈希集块的任何祖代生成新的祖代哈希集块。如果指定哈希块是主哈希集块,则不需要生成任何新的祖代哈希集块。新的祖代哈希集块每个均包括新接收哈希集块或者其祖代的哈希值。
硬件概述
根据一种实施方式,通过一个或者多个特殊用途的计算设备实现本发明中所描述的技术。特殊用途的计算设备可以是硬接线以执行各种技术,或者可包括诸如持久稳固编程的一个或者多个专用集成电路(ASIC)或者现场可编程门阵列(FPGA)等数字电子设备以执行各种技术,或者可包括被编程为执行有关固件、记忆体、其他存储器、或者组合中的程序指令的技术的一个或者多个通用硬件处理器。特殊用途的计算设备还可将自定义硬接线逻辑、ASIC、或者FPGA与自定义编程组合以实现各种技术。特殊用途的计算设备可以是桌面计算机系统、便携式计算机系统、手持式设备、网络设备或者将硬接线和/或程序逻辑进行整合以实现各种技术的任何其他设备。
例如,图7是示出了可实现本发明的实施方式的计算机系统700的框图。计算机系统700包括总线702或者用于通信信息的其他通信机构、以及与总线702耦接以用于处理信息的硬件处理器704。例如,硬件处理器704可以是通用微处理器。
计算机系统700还包括耦接至总线702的诸如随机存取存储器(RAM)或者其他动态存储设备等主存储器706,以用于存储由处理器704所执行的信息和指令。主存储器706在执行由处理器704所执行的指令过程中还可用于存储临时变量或者其他中间信息。当被存储在可访问处理器705的非易失性存储介质中时,该指令使计算机系统700变成自定义执行指令中所规定的操作的特殊用途机器。
计算机系统700进一步包括耦接至总线702的只读存储器(ROM)708或者其他静态存储设备,以用于存储处理器704的静态信息和指令。诸如磁盘、光盘、或者固态驱动等存储设备710被设置成耦接至总线702以用于存储信息和指令。
经由总线702可将计算机系统700耦接至显示器712,诸如,阴极射线管(CRT),以用于将信息显示给计算机用户。包括字母数字和其他键的输入设备714耦接至总线702以将信息和命令选择通信给处理器704。另一类型的用户输入设备是光标控制716,诸如,鼠标、轨迹球、或者光标方向键,以用于将方向信息和命令选择通信给处理器704并且用于控制光标在显示器712上的移动。通常,输入设备在两轴之间具有二度自由度,第一轴(例如,x)和第二轴(例如,y),以允许设备移动至平面内的指定位置。
计算机系统700可使用自定义硬接线逻辑、一个或者多个ASIC或者FPGA、固件和/或程序逻辑实现本发明中所描述的技术,以使计算机系统成为或者将计算机系统700编程为特殊用途机器。根据一种实施方式,响应执行主存储器706中所包含的一个或者多个序列的一个或者多个指令的处理器704,由计算机700执行本发明中的技术。从诸如存储设备710等另一存储介质中可将该等指令读入主存储器706。执行主存储器706中所包含的指令的序列以使处理器704执行本发明中所描述的过程步骤。在可替代实施方式中,可以使用硬接线电路替换软件指令或者可以使用与软件指令组合的硬接线电路。
本发明中所使用的术语“存储介质”指存储使机器以具体方式操作的数据和/或指令的任何非临时(non-transitory)介质。该存储介质可包括非易失性介质和/或易失性介质。例如,非易失性介质包括诸如光盘、磁盘、或者固态驱动等存储设备710。易失性介质包括诸如主存储器706等动态记忆体。例如,常见形式的存储介质包括软盘、软磁盘、硬盘、固态驱动、磁带、或者任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM、以及EPROM、FLASH-EPROM、NVRAM、任何其他记忆体芯片或者磁带盒。
存储介质与传输介质不同,但可与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴光缆、铜线以及纤维光学,其中包括包含总线702的布线。传输介质还可以是诸如在无线电波和红外数据通信过程中产生的声波或者光波形式。
在将一个或者多个指令的一个或者多个序列携带至用于执行的处理器704时可涉及各种形式的介质。例如,初始时,可以在远程计算机的磁盘或者固态驱动中携带指令。远程计算机可将指令加载至其动态记忆体中并且通过使用调制解调器的电话线发送指令。计算机系统700的本机调制解调器可接收电话线中的数据并且使用红外发送器将数据转换成红外信号。红外检测器可接收红外信号中所携带的数据并且适当的电路可将数据放置在总线702中。总线702将数据携带至处理器704从其中检索并且执行指令的主存储器706。在处理器704执行之前或者之后,由主存储器706所接收的指令可选地被存储在存储设备710上。
计算机系统700还包括耦接至总线702的通信接口718。通信接口718提供耦接至网络线路720(即,连接至局部网络722)的双向数据通信。例如,通信接口718可以是集成式服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器、或者将数据通信连接提供给相应类型的电话线的调制解调器。又例如,通信接口718可以是局域网(LAN)卡以将数据通信连接提供给兼容的LAN。还可实现无线线路。在任何实施方式中,通信接口718均发送并且接收携带表示各种类型信息的数字数据流的电信号、电磁信号、或者光学信号。
通常,网络链路720通过一个或者多个网络将数据通信提供给其他数据设备。例如,网络链路720可通过本地网络722给主机724或者由因特网服务供应商(ISP)726所运营的数据设备提供连接。ISP 726反之通过现在通常被称之为“因特网”728的全球数据包通信网络提供数据通信服务。本地网络722和因特网728使用携带数字数据流的电信号、电磁信号、或者光学信号。将数字数据携带至计算机网络700并且从计算机网络700携带数字数据的各种网络中的信号以及网络线路720和通信结构718中的信号时传输介质的示例性形式。
计算机系统700通过网络、网络线路720、以及通信接口718可发送消息和接收数据(包括程序代码)。在因特网实施例中,服务器730可通过因特网728、ISP 726、本地网络722、以及通信接口718传输用于应用程序的请求代码。
在所接收的代码被接收和/或存储在存储设备710中、或者用于后期执行的其他非易失性存储器中时,可由处理器704执行所接收的代码。
扩展和替代
在上述说明书中,已经参考每个实现方式可能均不同的多种具体细节描述了本发明的实施方式。因此,本说明书和附图被视为具有说明性而非限制性的意义。本发明范围的独有和排他性指示符以及申请人旨在保护的本发明的范围是本申请以发布权利要求的具体形式所发布的权利要求书的字面和等同范围(其中包括任何后续的修正)。

Claims (24)

1.一种方法,包括:
使用可内容寻址存储系统中的多个块表示文件系统的目录结构;
所述目录结构包括布置在对象层次结构中的对象组,其中,所述对象组包括在所述对象层次结构内具有子对象组的特定目录;
所述多个块包括:
目录对象块,所述目录对象块用于所述特定目录;
特定的子对象块组,其中,所述特定的子对象块组是所述子对象组中各个子对象的对象块;以及
至少一个哈希集块,所述至少一个哈希集块包括所述特定的子对象块组中对象块的哈希值;
其中,所述目录对象块包括所述至少一个哈希集块的主哈希集块的哈希值。
2.根据权利要求1所述的方法,进一步包括:
使用所述目录对象块的哈希值从所述可内容寻址存储系统检索所述目录对象块;
使用存储在所述目录对象块中的所述主哈希集块的哈希值检索所述主哈希集块;
使用存储在所述主哈希集块中的哈希值检索对应于所述对象组的数据。
3.根据权利要求1所述的方法,进一步包括:
将新对象块添加到所述可内容寻址存储系统,所述新对象块对应于所述目录的新子对象;
确定所述至少一个哈希集块的指定哈希集块;
生成包括所述新对象块的哈希值和所述指定哈希集块的未更改哈希值的新接收哈希集块;
如果所述指定哈希集块不是所述主哈希集块,则生成包括所述新接收哈希集块或其祖代的哈希值的至少一个新祖代哈希集块,其中,所述至少一个新祖代哈希集块包括新的主哈希集块;
生成包括所述新的主哈希集块的哈希值的新目录块;
其中,使用所述新目录块的哈希值可访问所述目录。
4.根据权利要求3所述的方法,其中:
如果所述接收哈希集块的多个哈希值将超过阈值:
生成包括所述指定哈希集块中所包含的至少一个哈希值的新同级哈希集块;
生成包括所述新同级哈希集块的哈希值和所述新接收哈希集块的哈希值的新的直接父代哈希集块;
其中,所述新接收哈希集块进一步包括所述指定哈希集块中所包含的至少一个剩余哈希值。
5.根据权利要求4所述的方法,其中,所述阈值至少是16。
6.根据权利要求1所述的方法,
其中,所述至少一个哈希集块包括哈希集块的层次结构;
其中,所述主哈希集块是根哈希集块,该根哈希集块是所述哈希集块的层次结构中的所有其他哈希集块的祖代;
所述哈希集块的层次结构的每个哈希集块包括哈希值组,其中,所述哈希值组中的每个哈希值是:
所述特定的子对象块组中的对象块的哈希值;或
所述哈希集块的层次结构中的另一哈希集块的哈希值。
7.根据权利要求6所述的方法,进一步包括:
使用所述目录对象块的哈希值从所述可内容寻址存储系统检索所述目录对象块;
使用所述目录对象块中所述主哈希块的所述哈希值检索所述根哈希集块;
基于存储在所述至少一个哈希集块中的至少一组哈希值,通过遍历所述哈希集块的层次结构检索对应于所述对象组的数据。
8.根据权利要求6所述的方法,进一步包括:
将新对象块添加到所述可内容寻址存储系统,所述新对象块对应于所述新对象;
确定所述至少一个哈希集块的指定哈希集块;
生成包括所述新对象块的哈希值的新的指定哈希集块,并且对于所述指定哈希集块的任一祖代哈希集块,生成包括所述新的指定哈希集块或者其祖代的哈希值的新祖代哈希集块,其中,生成新的根哈希集块;
生成包括所述新的根哈希集块的哈希值的新目录对象块;
其中,使用所述新目录块的哈希值可访问所述目录。
9.根据权利要求8所述的方法,其中:
如果所述指定哈希集块中的多个哈希值超过阈值:
生成包括所述指定哈希集块中所包含的至少一个哈希值的新同级哈希集块;
生成包括所述新同级哈希集块的哈希值和所述新的指定哈希集块的哈希值的新的直接父代哈希集块;
其中,所述新的指定哈希集块进一步包括所述主哈希集块中所包含的至少一个剩余哈希值。
10.根据权利要求1所述的方法,其中:
所述对象组进一步包括在所述对象层次结构内具有包括第二子对象组的第二对象组的第二目录;
其中,所述特定的子对象块组包括所述第二目录的第二目录对象块;
所述多个块进一步包括:
所述第二子对象组中各个子对象的第二子对象块组;和
与所述第二目录相关联的哈希集块的层次结构,包括特定的根哈希集块,该特定的根哈希集块是所述哈希集块的层次结构的所有其他哈希集块的祖代;
所述哈希集块的层次结构的每个哈希集块包括哈希值组,其中,所述哈希值组中的每个哈希值是:
所述第二子对象块组中的对象块的哈希值;或者
所述哈希集块的层次结构中的另一哈希集块的哈希值;
其中,所述第二目录对象块包括所述特定的根哈希集块的哈希值。
11.根据权利要求1所述的方法,
其中,所述多个块进一步包括包含名称映射组的至少一个名称索引块,其中,各个名称映射将与所述可内容寻址存储系统的特定块相关联的名称的哈希值映射到所述特定块的哈希值;
其中,所述名称映射组包括对所述对象组中的每个对象的映射;
其中,所述目录块进一步包括所述至少一个名称索引块中所选择的名称索引块的哈希值。
12.根据权利要求11所述的方法,
其中,所述至少一个名称索引块包括名称索引块的层次结构;
其中,所选择的名称索引块是根名称索引块,该根名称索引块是所述名称索引块的层次结构中的所有其他名称索引块的祖代。
13.一种存储指令的非易失性计算机可读介质,所述指令在由一个或者多个处理器执行时致使执行下列方法,包括:
使用可内容寻址存储系统中的多个块表示文件系统的目录结构;
所述目录结构包括布置在对象层次结构中的对象组,其中,所述对象组包括在所述对象层次结构内具有子对象组的特定目录;
所述多个块,包括:
目录对象块,所述目录对象块用于所述特定目录;
特定的子对象块组,其中,所述特定的子对象块组是所述子对象组中各个子对象的对象块;以及
至少一个哈希集块,所述至少一个哈希集块包括所述特定的子对象块组中的对象块的哈希值。
14.根据权利要求13所述的非易失性计算机可读介质,所述方法进一步包括:
使用所述目录对象块的哈希值从所述可内容寻址存储系统检索所述目录对象块;
使用存储在所述目录对象块中的所述主哈希集块的哈希值检索所述主哈希集块;
使用存储在所述主哈希集块中的哈希值检索对应于所述对象组的数据。
15.根据权利要求13所述的非易失性计算机可读介质,所述方法进一步包括:
将新对象块添加到所述可内容寻址存储系统,所述新对象块对应于所述目录的新子对象;
确定所述至少一个哈希集块的指定哈希集块;
生成包括所述新对象块的哈希值和所述指定哈希集块的未更改哈希值的新接收哈希集块;
如果所述指定哈希集块不是所述主哈希集块,则生成包括所述新接收哈希集块或者其祖代的哈希值的至少一个新祖代哈希集块,其中,所述至少一个新祖代哈希集块包括新的主哈希集块;
生成包括所述新的主哈希集块的哈希值的新目录块;
其中,使用所述新目录块的哈希值可访问所述目录。
16.根据权利要求15所述的非易失性计算机可读介质,其中:
如果所述接收哈希集块的多个哈希值将超过阈值;
生成包括所述指定哈希集块中所包含的至少一个哈希值的新同级哈希集块;
生成包括所述新同级哈希集块的哈希值和所述新接收哈希集块的哈希值的新的直接父代哈希集块;
其中,所述新接收哈希集块进一步包括所述指定哈希集块中所包含的至少一个剩余哈希值。
17.根据权利要求16所述的非易失性计算机可读介质,其中,所述阈值至少是16。
18.根据权利要求13所述的非易失性计算机可读介质,
其中,所述至少一个哈希集块包括哈希集块的层次结构;
其中,所述主哈希集块是根哈希集块,该根哈希集块是所述哈希集块的层次结构中的所有其他哈希集块中的祖代;
所述哈希集块的层次结构中的每个哈希集块包括哈希值组,其中,所述哈希值组中的每个哈希值是:
所述特定组子对象块中的对象块的哈希值;或者
所述哈希集块的层次结构中的另一哈希集块的哈希值。
19.根据权利要求18所述的非易失性计算机可读介质,所述方法进一步包括:
使用所述目录对象块的哈希值从所述可内容寻址存储系统检索所述目录对象块;
使用所述目录对象块中的所述主哈希集块的哈希值检索所述根哈希集块;
基于存储在所述至少一个哈希集块中的至少一组哈希值,通过遍历所述哈希集块的层次结构检索对应于所述对象组的数据。
20.根据权利要求18所述的非易失性计算机可读介质,所述方法进一步包括:
将新对象块添加到所述可内容寻址存储系统,所述新对象块对应于所述新对象;
确定所述至少一个哈希集块的指定哈希集块;
生成包括所述新对象块的哈希值的新指定哈希集块,并且对于所述指定哈希集块的任一祖代哈希集块,生成包括所述新指定哈希集块或者其祖代的哈希值的新祖代哈希集块,其中,生成新的根哈希集块;
生成包括所述新的根哈希集块的哈希值的新的目录对象块;
其中,使用所述新目录块的哈希值可访问所述目录。
21.根据权利要求20中所述的非易失性计算机可读介质,其中:
如果所述指定哈希集块中的多个哈希值超过阈值:
生成包括所述指定哈希集块中所包含的至少一个哈希值的新同级哈希集块;
生成包括所述新同级哈希集块的哈希值和所述新指定哈希集块的哈希值的新的直接父代哈希集块;
其中,所述新指定哈希集块进一步包括所述主哈希集块中所包含的至少一个剩余哈希值。
22.根据权利要求13所述的非易失性计算机可读介质,其中:
所述对象组进一步包括在所述对象层次结构内具有包括第二子对象组的第二对象组的第二目录;
其中,所述特定的子对象块组包括所述第二目录的第二目录对象块;
所述多个块进一步包括:
第二子对象块组,所述第二子对象块组用于所述第二子对象组的各个子对象;和
与所述第二目录相关联的哈希集块的层次结构,包括特定的根哈希集块,该特定的根哈希集块是所述哈希集块的层次结构中的所有其他哈希集块的祖代;
所述哈希集块的层次结构中的每个哈希集块包括哈希值组,其中,所述哈希值组中的每个哈希值是:
所述第二子对象块组中的对象块的哈希值;或者
所述哈希集块的层次结构中的另一哈希集块的哈希值;
其中,所述第二目录对象块包括所述特定的根哈希集块的哈希值。
23.根据权利要求13所述的非易失性计算机可读介质,
其中,所述多个块进一步包括包含名称映射组的至少一个名称索引块,其中,每个名称映射将与所述可内容寻址存储系统的特定块相关联的名称的哈希值映射到所述特定块的哈希值;
其中,所述名称映射组包括对所述对象组中的每个对象的映射;
其中,所述目录块进一步包括所述至少一个名称索引块中的所选择的名称索引块的哈希值。
24.根据权利要求23所述的非易失性计算机可读介质,
其中,所述至少一个名称索引块包括名称索引块的层次结构;
其中,所选择的名称索引块是根名称索引块,该根名称索引块是所述名称索引块的层次结构中所有其他名称索引块的祖代。
CN201410676825.5A 2013-11-21 2014-11-21 表示可内容寻址存储系统的目录结构 Active CN104778192B9 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/086,197 US9183212B2 (en) 2012-01-26 2013-11-21 Representing directory structure in content-addressable storage systems
US14/086,197 2013-11-21

Publications (3)

Publication Number Publication Date
CN104778192A true CN104778192A (zh) 2015-07-15
CN104778192B CN104778192B (zh) 2018-05-22
CN104778192B9 CN104778192B9 (zh) 2018-07-20

Family

ID=53619658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410676825.5A Active CN104778192B9 (zh) 2013-11-21 2014-11-21 表示可内容寻址存储系统的目录结构

Country Status (3)

Country Link
US (1) US9659023B2 (zh)
CN (1) CN104778192B9 (zh)
HK (2) HK1208933A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9483481B2 (en) * 2013-12-06 2016-11-01 International Business Machines Corporation Files having unallocated portions within content addressable storage
US9495373B2 (en) * 2013-12-06 2016-11-15 International Business Machines Corporation File versions within content addressable storage
US20160191508A1 (en) * 2014-12-31 2016-06-30 Nexenta Systems, Inc. Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System
US10191914B2 (en) 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US9916458B2 (en) * 2015-03-31 2018-03-13 EMC IP Holding Company LLC Secure cloud-based storage of data shared across file system objects and clients
CN107526691B (zh) * 2016-06-21 2020-06-02 深圳市中兴微电子技术有限公司 一种缓存管理方法及装置
US10802925B2 (en) * 2017-01-05 2020-10-13 Druva Inc. Synthetic full backup storage over object storage
US10642878B2 (en) 2017-01-06 2020-05-05 Oracle International Corporation File system hierarchies and functionality with cloud object storage
US11157447B2 (en) * 2018-08-05 2021-10-26 Rapid7, Inc. File system search proxying

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004074968A3 (en) * 2003-02-21 2004-12-29 Hypertrust Nv Additional hash functions in content-based addressing
CN101410783A (zh) * 2006-01-26 2009-04-15 网络装置公司 内容可寻址存储阵列元件
CN102016852A (zh) * 2008-03-05 2011-04-13 美国日本电气实验室公司 内容可寻址存储系统和方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807632B1 (en) 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
US8806154B1 (en) * 2011-05-06 2014-08-12 Chelsio Communications, Inc. Thin provisioning row snapshot with reference count map
EP2754053A4 (en) 2011-09-07 2015-12-23 Nec Corp STORAGE SYSTEM
US9183212B2 (en) 2012-01-26 2015-11-10 Upthere, Inc. Representing directory structure in content-addressable storage systems
US9052824B2 (en) 2012-01-26 2015-06-09 Upthere, Inc. Content addressable stores based on sibling groups

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004074968A3 (en) * 2003-02-21 2004-12-29 Hypertrust Nv Additional hash functions in content-based addressing
CN101410783A (zh) * 2006-01-26 2009-04-15 网络装置公司 内容可寻址存储阵列元件
CN102016852A (zh) * 2008-03-05 2011-04-13 美国日本电气实验室公司 内容可寻址存储系统和方法

Also Published As

Publication number Publication date
CN104778192B (zh) 2018-05-22
US9659023B2 (en) 2017-05-23
HK1208933A1 (zh) 2016-03-18
CN104778192B9 (zh) 2018-07-20
HK1212491A1 (zh) 2016-06-10
US20150261798A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
CN104778192A (zh) 表示可内容寻址存储系统的目录结构
US9043540B2 (en) Systems and methods for tracking block ownership
US20150302111A1 (en) Method and Apparatus for Constructing File System in Key-Value Storage System, and Electronic Device
CN103023982B (zh) 一种云存储客户端的低延迟元数据访问方法
US9195666B2 (en) Location independent files
US9183212B2 (en) Representing directory structure in content-addressable storage systems
CN103038767B (zh) 用于文件克隆的数据共享的方法和系统
JP2017504924A (ja) ファイルシステムのコンテンツベースの編成
CN101178726B (zh) 数据文件解归档的方法和系统
KR101689782B1 (ko) 메타 데이터에 따라 파일 시스템의 파일들을 액세스하는 방법 및 상기 방법을 구현하는 디바이스
EP3814930B1 (en) System and method for bulk removal of records in a database
AU2018290753B2 (en) Systems and methods of creation and deletion of tenants within a database
WO2014008856A1 (en) Method and apparatus for file storage
KR101099802B1 (ko) 하나의 디렉토리로부터 또 다른 디렉토리로의 파일 복사
WO2023201002A1 (en) Implementing graph search with in-structure metadata of a graph-organized file system
US9292523B1 (en) Managing data storage
CN105046162A (zh) 在内容可寻址存储系统中维护并使用子对父映射的缓存
US20230334093A1 (en) Graph-organized file system
CN117076413B (zh) 一种支持多协议互通的对象多版本存储系统
CN110019073A (zh) 使用kv存储设备提供文件系统的方法及其文件系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1208933

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20171106

Address after: American California

Applicant after: Western Digital Technologies, Inc.

Address before: American California

Applicant before: Up There Inc.

GR01 Patent grant
GR01 Patent grant
CI03 Correction of invention patent
CI03 Correction of invention patent

Correction item: Claims

Correct: Zheng Que

False: Cuo Wu

Number: 21-01

Page: Quan Wen

Volume: 34

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1208933

Country of ref document: HK