在内容可寻址存储系统中维护并使用子对父映射的缓存技术方案

技术编号:12301610 阅读:83 留言:0更新日期:2015-11-11 11:44
本发明专利技术提供了一种在内容可寻址存储系统中维护并使用子对父映射的缓存。提供一种用于在内容可寻址存储系统中保持和使用缓存的子到父的映射的技术。保持子到父映射的缓存。每个子到父映射对应于存储在内容可寻址存储系统中的块的层级结构中的具体块,并将具体块映射至块的层级结构中的父块。块的层级结构包括与文件系统卷相关联的第一根块。响应于文件系统卷的使新根块与文件系统卷相关联的改变,基于从新根块遍历当前文件系统层级结构的至少一部分通过添加一个或多个第一子到父映射来更新缓存,并且基于从第一根块遍历先前文件系统层级结构的至少一部分来移除一个或多个第二子到父映射。

【技术实现步骤摘要】
相关申请的交叉引用本申请涉及于2013年11月21日提交的美国专利申请第14/086,197号,通过引用将其阐述的全部内容结合于本文中。
本专利技术涉及一种存储系统,并且更具体地,涉及用于维护并使用内容可寻址存储系统(content-addressablestoragesystem)中的子对父映射(child-to-parentmapping)的缓存(cache)。
技术介绍
本部分中所描述的方法可能被实现,但其并非一定是先前已经构思或实现的方法。因此,除非在本文中明确指出并非如此,否则在本部分中所描述的方法对于本申请中的权利要求来说并非现有技术并且不应因被包含在本部分中而被视为现有技术。在典型的文件系统中,基于项所存储的位置和项的名称或标识符来对所存储的项进行检索。例如,如果名为“foo.txt”的文件位于名为“C:\\myfiles\ext”的目录下,那么应用程序可以使用路径名“C:\\myfiles\ext\\foo.txt”作为访问密钥(accesskey)以从文件系统中检索文件。因为传统的访问密钥是基于正被检索的项的位置,因此,当项在文件系统的目录结构中被移动时访问密钥改变。另外,因为项的各副本被存储于不同的位置,因此,各副本具有不同的访问密钥。另一方面,当项的内容被改变时,访问密钥保持不变。与传统的文件系统相比,内容可寻址存储系统允许基于从项的内容生成的数据(诸如,用于该项的哈希值)来对项进行检索。由于内容可寻址存储系统是基于项的内容而不是基于针对与特定文件名相关的特定项的静态位置来对项执行存储相关的操作,因此,请求该操作的应用程序可以在不知道所存储的项的副本的数量或位置的情况下执行这样的操作。块存储系统(chunkstoragesystem)是一种在不了解数字信息本身的格式或内容的情况下执行存储操作的存储系统。因为该系统将所有形式的数字项都视为好像那些项仅仅是数据的不透明块,故这样的存储系统被称为块存储系统。例如,同一块存储系统可以由文字处理应用程序、图像管理应用程序和日历系统所使用,以分别存储文档、图像和日程。然而,从块存储系统的角度来看,仅存储一种类型的项:数字信息的不透明块。块存储系统可以被实施为内容可寻址存储系统。例如,块存储系统可以基于块的内容(诸如通过将密码哈希函数(例如,MD5、SHA-1或SHA2)应用于块)生成用于块的访问密钥。然后,块储存器可以存储该块并且维护索引数据(indexingdata),其中,该索引数据使哈希值与该块所存储的位置相关。当应用程序随后请求对该块进行检索时,该应用程序将哈希值提供给块存储系统。块存储系统使用该索引数据以对与哈希值相关的块进行定位,并且将这样定位的块提供给请求(requesting)应用程序。当通过内容可寻址存储系统中的一个或多个块来表示项时,在项被修改的情况下,额外的一个或多个块需要添加至该内容可寻址存储系统。因为访问密钥是基于内容的,故用于与修改后的项相对应的任意块的访问密钥将不同于与用于与原始项相对应的块的访问密钥。此外,对于原始项的参照,诸如哈希值或其他访问密钥,仅可用于访问原始项而不能访问修改后的项。文件系统卷(filesystemvolume)可包括按照文件夹层级布置的一个或多个文件。为了将这样的文件系统卷作为块存储在内容可寻址存储系统中,可以在一个或多个存储的块来反映文件夹层级本身。例如,假设块A表示文件夹A,并且块B和块C表示文件夹A中的文件。在这种情况下,表示文件夹A的块A可以包括用于块B和块C的访问密钥,从而反映了文件夹A与文件B和C之间的层级关系。这样的访问密钥可被用于向下导航(navigate)文件夹层级。然而,如果在没有导航通过文件夹层级的情况下获得了特定块(诸如响应于索引搜索),则在确定文件夹层级中的特定块的位置时出现了问题。不同于具有基于位置的访问密钥(诸如路径名“C:\\myfiles\ext\\foo.txt”)的典型的文件系统,块的访问密钥不包括任何文件夹层级中的块的位置。此外,在内容可寻址存储系统中,当特定的文件的内容被修改时,必须基于所修改的内容将该文件的新版本存储于不同的地址,导致用于新文件的访问密钥发生改变。当在一个或多个块中表示文件系统层级时,包含原始文件的访问密钥的块(即,在层级中与所修改的块相对应的项上方的项相对应的块)也必须被改变至新文件的访问密钥,导致依次生成额外的新块。因此,修改单个文件可能导致反映文件系统的层级化结构的多个块发生改变。一个或多个索引可被维护用于存储在内容可寻址存储系统中的文件系统卷的块。该索引可以通过访问密钥来识别文件系统卷的块。当块的新版本被存储在内容可寻址存储系统中时,还必须更新任何这样的索引。对索引进行更新的未使用过的()实施方式包括通过从根块(rootchunk)迭代通过层级来对每一个块改变做出响应,以及重建用于文件系统卷中的所有块的索引。因为它涉及在任何文件被修改时迭代通过文件系统层级中每一个块,故这不是可升级的解决方案。
技术实现思路
根据本专利技术的一个方面,公开了一种方法,包括:维持子到父映射的缓存;其中,每个子到父映射对应于存储在内容可寻址存储系统中的块的层级结构中的具体块,并将所述具体块映射至所述块的层级结构中的父块;其中,所述块的层级结构包括与文件系统卷相关的第一根块;响应于对于所述文件系统卷的、使新根块与所述文件系统卷相关联的改变,通过基于从所述新根块遍历当前文件系统层级结构的至少一部分添加一个或多个第一子到父映射来更新所述缓存,并且基于从所述第一根块遍历先前文件系统层级结构的至少一部分来移除一个或多个第二子到父映射。根据本专利技术的另一方面,公开了一种非暂存性计算机可读介质,所述非暂存性计算机可读介质存储的指令在由一个或多个处理器执行时,使所述一个或多个处理器执行:维持子到父映射的缓存;其中,每个子到父映射对应于存储在内容可寻址存储系统中的块的层级结构中的具体块,并将所述具体块映射至所述块的层级结构中的父块;其中,所述块的层级结构包括与文件系统卷相关的第一根块;响应于对于所述文件系统卷的、使新根块与所述文件系统卷相关联的改变,通过基于从所述新根块遍历当前文件系统层级结构的至少一部分添加一个或多个第一子到父映射来更新所述缓存,并且基于从所述第一根块遍历先前文件系统层级结构的至少一部分来移除一个或多个第二子到父映射。本文档来自技高网
...

【技术保护点】
一种方法,包括:维持子到父映射的缓存;其中,每个子到父映射对应于存储在内容可寻址存储系统中的块的层级结构中的具体块,并将所述具体块映射至所述块的层级结构中的父块;其中,所述块的层级结构包括与文件系统卷相关的第一根块;响应于对于所述文件系统卷的、使新根块与所述文件系统卷相关联的改变,通过基于从所述新根块遍历当前文件系统层级结构的至少一部分添加一个或多个第一子到父映射来更新所述缓存,并且基于从所述第一根块遍历先前文件系统层级结构的至少一部分来移除一个或多个第二子到父映射。

【技术特征摘要】
2014.03.12 US 14/205,9821.一种方法,包括:
维持子到父映射的缓存;
其中,每个子到父映射对应于存储在内容可寻址存储系统中的
块的层级结构中的具体块,并将所述具体块映射至所述块的层级结
构中的父块;
其中,所述块的层级结构包括与文件系统卷相关的第一根块;
响应于对于所述文件系统卷的、使新根块与所述文件系统卷相
关联的改变,通过基于从所述新根块遍历当前文件系统层级结构的
至少一部分添加一个或多个第一子到父映射来更新所述缓存,并且
基于从所述第一根块遍历先前文件系统层级结构的至少一部分来移
除一个或多个第二子到父映射。
2.根据权利要求1所述的方法,其中,更新所述缓存包括:
(a)建立所述新根块作为当前父块;
(b)针对所述当前父块的每个子块,执行以下步骤:
(b1)如果所述缓存不包含将所述子块映射至所述当前父
块的子到父映射,将该子到父映射添加到所述缓存;
(b2)如果在步骤(b1)之前,所述缓存不包含将所述子
块映射至任何块的任何子到父映射,则在将所述子块建立为所
述当前父块的情况下执行步骤(b);
(c)建立所述第一根块作为所述当前父块;
(d)针对所述当前父块的每个子块,执行以下步骤:
(d1)从所述缓存移除将所述子块映射至所述当前父块的
子到父映射;以及
(d2)如果所述缓存不再包含将所述子块映射至任何块的
任何子到父映射,则在将所述子块建立为所述当前父块的情况
下执行步骤(d)。
3.根据权利要求1所述的方法,进一步包括:
接收特定哈希值;
基于所述特定哈希值获得特定块,其中,所述特定块对应于文
件;
当所述文件被修改时,使修改后的所述文件保存在所述文件系
统中,其中,将修改后的所述文件保存在所述文件系统卷包括:
基于修改后的所述文件将至少一个新块存储在内容可寻
址块存储器中;
基于子到父映射的所述缓存确定包含所述第一根块的至
少一个祖先块;
基于所述至少一个祖先块和所述新块产生至少一个新父
块,其中,所述至少一个新父块包括所述新根块。
4.根据权利要求3所述的方法,其中,基于存储在所述内容可寻址存
储系统中的一个或多个块的索引的搜索来接收所述特定哈希值。
5.根据权利要求1所述的方法,其中,针对与子到父映射的所述缓存
中的多子到父映射对应的特定子块,将所述多子到父映射存储为一
个哈希到哈希集合条目。
6.根据权利要求1所述的方法,其中,所述缓存作为至少一个块存储
在所述内容可寻址存储系统中。
7.根据权利要求1所述的方法,进一步包括:
基于添加的一个或多个所述第一子到父映射,产生被添加到块
的所述层级结构的添加块列表;
基于移除的一个或多个所述第二子到父映射,产生从块的所述
层级结构移除的移除块列表。
8.根据权利要求7所述的方法,进一步包括:
基于所述添加块列表和所述移除块列表来更新所述文件系统卷
的文件系统大小。
9.根据权利要求7所述的方法,进一步包括:基于所述添加块列表和
所述移除块列表来更新所述文件系统卷的非有效载荷块的本地缓
存。
10.根据权利要求7所述的方法,进一步包括:基于所述添加块列表和
所述移除块列表来更新所述内容可寻址存储系统中存储的一个或多
个块的索引。
11.一种非暂存性计算机可读介质,所述非暂存性计算机可读介质存储
的指令在由一个或多个处理器执行时,使所述一个或多个处理器执
行:
维持子到父映射的缓存;
其中,每个子到父映射对应于存储在内容可寻址存储系统中...

【专利技术属性】
技术研发人员:伯特兰·塞尔勒特
申请(专利权)人:阿普赛尔有限公司
类型:发明
国别省市:美国;US

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

1