跨文件系统对象和客户端共享的数据的安全的基于云的存储的制作方法

文档序号:13518702阅读:147来源:国知局
跨文件系统对象和客户端共享的数据的安全的基于云的存储的制作方法



背景技术:

已经提供了分布式文件系统、文件共享服务等等。在一种方法中,文件系统客户端、应用程序和/或在客户端系统上运行的代理可接收由在客户端系统上运行的应用程序进行的文件系统调用,并且可被配置成对远程文件系统服务器(例如元数据服务器)进行对应调用。例如,为了存储或更新文件,文件系统客户端可生成写入请求并将其发送给文件系统元数据服务器。该写入请求可标识期望被写入到文件的多个数据区块。元数据服务器可被配置成提供例如在基于云的对象存储装置中指示数据应该被客户端写入到的一个或多个位置的响应。

在一些分布式文件系统中,例如作为删除重复或其他处理的结果,可跨多个文件和/或跨多个文件系统客户端来共享被文件系统存储的数据区块。在一些实施例中,可跨文件和/或客户端共享的文件系统数据的区块可能需要被存储和管理以便在也不用向任何用户提供对用户无权访问的数据的访问的情况下确保文件系统的每个用户安全访问用户被授权访问的文件。

附图说明

在下面的详细描述和附图中公开本发明的各种实施例。

图1是图示分布式文件系统和环境的一个实施例的框图。

图2是图示客户端系统的一个实施例的框图。

图3是图示分布式文件系统的一个实施例的框图。

图4是图示用来将文件或其他文件系统对象存储在分布式文件系统中的过程的一个实施例的流程图。

图5是图示用来处理将文件或其他文件系统对象存储在分布式文件系统中的请求的过程的一个实施例的流程图。

图6是图示用来存储与分布式文件系统相关联的文件区段或“区块”数据的过程的一个实施例的流程图。

图7是图示用来访问存储在分布式文件系统中的文件或其他文件系统对象的过程的一个实施例的流程图。

图8是图示用来处理访问存储在分布式文件系统中的文件或其他文件系统对象的请求的过程的一个实施例的流程图。

图9是图示在分布式文件系统的一个实施例中使用的文件系统元数据表的一个示例集合的框图。

图10是图示分布式文件系统的一个实施例中的处于不同粒度级别的文件区段的一个示例的框图。

图11是图示用来将分布式文件系统配置成存储文件数据的过程的一个实施例的流程图。

图12是图示在分布式文件系统的一个实施例中被用来存储文件数据的元数据表的一个示例的框图。

图13是图示用来将文件存储在分布式文件系统中的过程的一个实施例的流程图。

图14是图示用来提供对分布式文件系统中存储的文件的访问的过程的一个实施例的流程图。

具体实施方式

可以以许多方式来实施本发明,包括作为一种过程;一种装置;一种系统;一种物质组成;一种体现在计算机可读存储介质上的计算机程序产品;以及/或者一种处理器(诸如被配置成执行存储在耦合至处理器的存储器上的和/或由该存储器提供的指令的处理器)。在此说明书中,这些实施方式或者本发明可采用的任何其他形式可被称为技术。一般来说,在本发明的范围内所公开的过程的步骤的顺序可改变。除非另有说明,组件(诸如被描述为被配置成执行任务的处理器或存储器)可被实施为被临时配置为在给定时间执行该任务的通用组件或者被制造来执行该任务的专用组件。如本文中所使用的,术语‘处理器’指的是被配置成处理数据(诸如计算机程序指令)的一个或多个设备、电路和/或处理核。

下面连同图示本发明的原理的附图来提供本发明的一个或多个实施例的详细描述。结合此类实施例来描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求来限制并且本发明包含许多备选、修改和等同物。在下面的描述中陈述许多具体细节以便提供对本发明的透彻理解。提供这些细节以便达到示例的目的并且可在没有这些具体细节中的一些或所有的情况下根据权利要求来实践本发明。为了清晰的目的,在与本发明有关的技术领域中已知的技术材料尚未被详细描述以使得不会不必要地使本发明模糊。

公开了一种删除重复的分布式文件系统,其为了达到删除重复的目的将文件分段成第一尺寸的区块但将文件数据存储在大得多的对象中以便利用典型的基于云的对象存储装置的性能特性。在各种实施例中,在客户端设备上运行的文件系统客户端对要被存储在第一尺寸的“区块”中的文件进行分段。表示区块的数据(诸如散列或相应区块的其他表示)被发送到远程文件系统元数据服务器。该服务器执行删除重复处理来确定各区块中的哪些(如果有的话)可能已经被文件系统存储。对于还没有被文件系统存储的那些区块,服务器利用用来将多个区块组合到组合对象中并且例如经由httpupt或其他请求将该组合对象存储在由服务器例如使用统一资源标识符(uri)或由服务器提供的其他定位符而指定的位置处的基于云的对象存储装置中的指令而对客户端作出响应。

在各种实施例中,来自不同文件和/或文件系统客户端的区块可被存储在相同存储对象中。在各种实施例中,通过以特定于每个相应区块的方式对较大的存储对象内的每个相应区块的数据加密、使得能够基于逐个区块来控制访问(例如通过向文件系统客户端提供解密该文件系统客户端已检索的、例如客户端提供对具体文件的访问所需要的存储对象内的那些区块所需的仅(一个或多个)加密密钥)来保持跨用户和/或文件系统客户端的安全性。

图1是图示分布式文件系统和环境的一个实施例的框图。在所示的示例中,该分布式文件系统环境100包括在图1中由客户端102、104和106表示的多个客户端系统和/或设备。在所示的示例中,客户端连接(无线或以其他方式)到网络108,例如局域网(lan)、广域网(wan)、因特网、和/或一个或多个其他公用和/或私用网中的一个或多个。客户端经由网络108访问文件系统元数据服务器110。相应客户端(诸如客户端102、104和106)上的应用程序进行文件系统调用,在各种实施例中这导致对文件系统元数据服务器110进行对应的远程调用。例如,文件系统客户端、代理或客户端上的其他实体可拦截或以其他方式接收由应用程序对本地(例如本机)文件系统的调用,并且可将此类调用重新指引到被配置成对文件系统元数据服务器110进行对应远程调用的代理(例如对应用程序来说透明地)。

在所示的示例中,包括存储在文件系统中的对象的数据(诸如文件)被存储在基于云的对象存储装置112中。在一些实施例中,文件可被分段成多个区段或“区块”,它们中的每一个都被存储在基于云的对象存储装置中的对应位置中。对文件系统元数据服务器110进行文件系统调用,这将文件系统元数据存储在文件系统元数据存储114中(例如数据库或其他数据存储装置中)。文件系统元数据服务器110可将例如对于每个文件或文件系统中所存储和表示的其他对象的区段或“区块”映射存储在文件系统元数据存储装置114中。例如,对于每个文件名称(例如路径名称),文件系统元数据服务器110可将每个区段的散列或其他表示以及对于每一个的使区段被存储(或要被存储)在基于云的对象存储装置112中的对应位置存储在对应区段映射中。其他文件系统元数据(诸如通常由文件系统存储的元数据)可被文件系统元数据服务器110存储在文件系统元数据存储装置114中。示例包括但不限于目录、文件或其他节点/对象名称;父和/或子节点的标识;创建时间;创建和/或拥有对象的用户;最后修改的时间和/或其他时间;文件结束符(eof)或指示对象大小的其他值;安全属性(诸如分类、访问控制列表、等等);和/或其他文件系统元数据。

尽管在图1中所示的示例中,文件系统元数据服务器110和基于云的对象存储装置112被示出为位于不同网络和/或物理位置中的单独系统,但是在其他实施例中该文件系统元数据和文件系统内容数据可被存储在一起,例如二者都在基于云的资源上和/或二者都在企业或其他网络服务器上,等等。

图2是图示客户端系统的一个实施例的框图。在所示的示例中,图1的客户端系统/设备102被示为包括在由操作系统204提供的环境中运行的应用程序202。该操作系统204包括内核(未被示出)和被配置成向应用程序(诸如应用程序202)提供服务和/或功能的其他组件。例如,操作系统204可包括和/或被配置成提供对客户端系统102的本地文件系统(未被示出)的访问。应用程序202可被配置成对本地文件系统进行文件系统调用,例如以存储文件或由应用程序202创建的/使用应用程序202的其他对象,以修改、移动或删除此类对象,等等。在所示的示例中,由应用程序202进行的文件系统调用(在图2中由源于标记“应用程序”(202)的框的向下箭头来表示)被内核模块(或其他组件)206拦截并且被重新指引到文件系统客户端(或其他文件系统代理)208。在一些实施例中,文件系统代理208包括在用户空间中运行的客户端应用程序。在一些实施例中,文件系统代理208包括内核或者其他操作系统组件或模块。文件系统客户端208在该示例中已使其与本地缓存210相关联。在各种实施例中,缓存210可被用来在文件数据被发送到远程存储(例如图1的基于云的对象存储装置112)之前将该文件数据缓冲和/或以其他方式分级,和/或促进对先前存储但可能随后才会请求对其访问的数据的访问。

客户端系统102包括网络通信接口212,其提供例如到网络(诸如图1的网络108)的网络连通性。例如,在各种实施例中来自应用程序202的访问远程存储的文件的请求可导致文件系统客户端208经由网络通信接口212进行例如到文件系统元数据服务器(诸如图1的服务器110)的远程调用。

在各种实施例中,文件系统客户端208可被配置成将一个或多个文件系统操作和/或请求存储在包括文件系统客户端208和/或缓存210或者以其他方式与该文件系统客户端208和/或缓存210相关联的元数据写入缓冲器中,该一个或多个文件系统操作和/或请求影响包括被文件系统客户端208持有的关于其的文件系统元数据写入租约的文件系统元数据的一部分的文件系统元数据。例如,当例如作为通过应用程序(诸如图2的应用程序202)的本地文件系统调用的结果而被接收到时,影响元数据的文件系统操作可被缓冲,并且可被异步地和/或在事件发生时(例如已接收到和/或已发生的元数据写入租约“中断”事件的指示的收到)传达给远程文件系统元数据服务器。例如,第二客户端系统可指示执行影响第一客户端系统关于其持有租约的文件系统元数据的一部分的操作的期望和需要,导致“中断”通信被发送给第一客户端系统,这进而“冲掉”缓冲器中的影响已关于其而持有租约的元数据的该部分的至少那些操作。

图3是图示分布式文件系统的一个实施例的框图。在所示的示例中,客户端102经由基于安全会话的连接302与文件系统元数据服务器110通信。此外,客户端102经由tcp/ip或使得客户端102能够经由http“put”请求存储对象(例如文件区段或“区块”)并且经由http“get”请求检索区段(“区块”)的其他连接与基于云的对象存储装置112通信。在各种实施例中,客户端102(例如文件系统客户端或在客户端102上运行的其他代理)经由安全连接302(例如改变或要求文件系统元数据的处理和/或使用的文件系统操作)发送和接收分布式文件系统“控制面板”通信,然而经由连接304发送的通信可被认为包括可经由其来存储和/或检索文件系统对象数据(即区段或“区块”)的“数据面板”。在所示的示例中,文件系统元数据服务器110访问活动目录306,在各种实施例中该活动目录306可包括可用来认证客户端(诸如客户端102)的用户的信息。

在各种实施例中,可由其上已安装分布式文件系统客户端或其他代理的客户端来存储文件系统对象(诸如文件)。在各种实施例中,在接收到存储(或修改)文件系统对象的请求时,文件系统客户端将该对象分段成一个或多个区段或“区块”并为每一个计算参考(例如散列)。该参考被包括在例如经由安全连接(诸如图3的连接302)发送给文件系统元数据服务器的文件系统请求中。该文件系统元数据服务器例如经由put请求(其是经由诸如图3的连接304的连接而发送的)返回要被文件系统客户端使用的信息以通过将区段数据直接发送给基于云的对象存储装置来将(非副本)区段/区块存储在基于云的对象存储装置中。

图4是图示用来将文件或其他文件系统对象存储在分布式文件系统中的过程的一个实施例的流程图。在各种实施例中,图4的过程可在客户端系统或设备上例如由文件系统客户端或客户端系统/设备上运行的其他代理(诸如图2的文件系统客户端208)来执行。在所示的示例中,例如从应用程序接收存储文件的请求(402)。该文件被分段成一个或多个区段(404)。对于每个区段,计算区段参考(例如散列)(406)。将包括区段参考的文件写入请求发送到文件系统元数据服务器(408)。从文件系统元数据服务器接收统一资源指示符(uri)或其他指针的集合(410)。在各种实施例中,该指针集合可包括仅用于尚未被分布式文件系统存储的那些区段的指针。接收到的指针被用来例如经由直接发送给基于云的对象存储装置的http“put”请求来存储区段(412)。

图5是图示用来处理将文件或其他文件系统对象存储在分布式文件系统中的请求的过程的一个实施例的流程图。在各种实施例中,图5的过程可由文件系统元数据服务器(诸如图1的文件系统元数据服务器110)来执行。在所示的示例中,接收存储文件的请求(502)。创建使文件系统对象名称和/或其他标识符(例如文件名称、路径名称)与一个或多个区段参考(例如散列值)的集合相关联的区段(“区块”)映射(504)。例如基于区段参考来标识已经被分布式文件系统存储的不是区段的副本的区段(506)。对于不是副本的每个区段,(例如至少部分基于所有区段参考或其一部分)计算存储位置并且生成uri或可以用来将该区段直接存储在基于云的数据存储装置中的其他指针(508)。在各种实施例中,uri或其他指针被文件系统元数据服务器加密签名。uri可具有到期时间,在该到期时间之前uri必须被用于存储区段。uri被发送给从其接收到存储文件的请求的文件系统客户端(510)。

图6是图示用来存储与分布式文件系统相关联的文件区段或“区块”数据的过程的一个实施例的流程图。在各种实施例中,图6的过程可由基于云的对象存储装置(诸如图1的对象存储装置112)来执行。在所示的示例中,接收与请求中指定的uri相关联的“put”请求(602)。检查与uri和在uri中编码的到期时间相关联的加密签名(604)。例如,基于云的对象存储装置可被规定成检查uri已被信任文件系统元数据服务器签名和/或uri的到期时间还没有过去。如果uri被确定成当前有效(606),则与put请求相关联的有效载荷数据(例如文件系统对象区段或“区块”数据)被存储在与uri相关联的位置中(608)。如果uri被确定成不是有效的(606),则put请求失败(610),并且文件系统客户端接收指示它必须从文件系统元数据服务器获得新的uri的响应。

在各种实施例中,可通过其上已安装分布式文件系统客户端或其他代理的客户端来检索文件系统对象(诸如文件)。在各种实施例中,在接收到访问文件系统对象的请求时,文件系统客户端例如经由安全连接(诸如图3的连接302)向文件系统元数据服务器发送文件访问请求。该文件系统元数据服务器例如经由get请求(其是经由诸如图3的连接304的连接而发送的)返回要被文件系统客户端使用的信息(例如一个或多个uri或其他指针)以直接从基于云的对象存储装置检索区段/区块。

图7是图示用来访问存储在分布式文件系统中的文件或其他文件系统对象的过程的一个实施例的流程图。在各种实施例中,图4的过程可在客户端系统或设备上例如由文件系统客户端或客户端系统/设备上运行的其他代理(诸如图2的文件系统客户端208)来执行。在所示的示例中,从应用程序接收访问文件系统对象(例如由文件名称标识的文件)的请求(702)。将请求发送到文件系统元数据服务器以检索该文件(704)。从文件系统元数据服务器并且对于每一个的对应uri和加密密钥接收区段参考的集合(706)。检查本地缓存以确定任何所需的区段是否存在于缓存中(708)。对于缓存中不存在的所有区段,相关联的uri被用来发送get请求以从基于云的对象存储装置检索该区段,并且相关联的密钥被用来一旦已从对象存储装置接收到处于加密形式的该区段就将其解密(710)。该区段被用来重建文件并且提供对从其接收到访问请求的应用程序的文件的访问(712)。

图8是图示用来处理访问存储在分布式文件系统中的文件或其他文件系统对象的请求的过程的一个实施例的流程图。在各种实施例中,图5的过程可由文件系统元数据服务器(诸如图1的文件系统元数据服务器110)来执行。在所示的示例中,接收访问命名文件的请求(802)。与该文件相关联的区段映射被检索并且被用来确定区段参考(例如散列)的集合,以及对于每一个的指示该区段被存储在基于云的区段存储装置中的哪里的对应uri和可用来解密该区段的加密密钥(804)。区段参考、uri、以及密钥被返回到从其接收到文件访问请求的文件系统客户端(806)。

图9是图示在分布式文件系统的一个实施例中使用的文件系统元数据表的一个示例集合的框图。在各种实施例中,图9的表902、904和906可被创建并且由文件系统元数据服务器(诸如图1和图3的文件系统元数据服务器110)来维护。在所示的示例中,索引节点表902被用来存储将每个命名的文件系统对象(例如目录、文件或其他对象)与对应索引节点或其他的唯一编号或标识符相关联的数据。在各种实施例中,区块映射表904被用来存储对于每个文件的以及对于该文件已经被分成的一个或多个区段(区块)中要被存储的每一个的文件内的区块的偏移量、区块标识符(区块id)以及其他元数据。例如,已经被存储为三个区块的文件在表904中将具有三个条目(行),每一个用于一个区块。在各种实施例中,区块id是单调递增的值,其中每个相继存储的区块都被按字母数字顺序给予下一区块id。在各种实施例中,一旦被存储区块就是不可改变的。如果文件数据被修改,则受到影响的数据被存储为新的区块并且被按顺序被分配下一区块id。因此,通过定义的具有更高区块id的区块被存储在具有更低区块id的区块的后面,并且可以假定自从被创建和存储之后没有一个被修改。

进一步参考图9,区块元数据表906包括:对于由区块id(在所示的示例中列908)标识的每个区块以及对于指示区块的尺寸的每个区块元数据的行;其他元数据;指示当前有多少活动文件(或其他文件系统对象)引用该区块的引用计数(列910);以及指示区块的状态(即它已被验证还是被删除)的元数据(列912)。

在各种实施例中,当一个区块被第一个存储时,该区块被视为最初处于“未经验证的”状态,并且反映该区块的未经验证的状态的元数据最初可被存储在表906的列912中。验证可由文件系统元数据服务器来执行并且可包括读取如被存储在基于云的对象存储装置中的区块,验证该区块数据对应于文件系统预期的那个(例如计算如被服务器读取的区块的散列并将该散列与该区块的先前存储的散列(例如从存储该区块的文件系统客户端接收的一个散列)相比较),以及更新表906中的状态元数据912以便一旦该区块已被验证就反映其的“已验证”状态。

公开了一种删除重复的分布式文件系统,其为了达到删除重复的目的将文件分段成第一尺寸的区块但将文件数据存储在大得多的对象中以便利用典型的基于云的对象存储装置的性能特性。在各种实施例中,客户端设备上运行的文件系统客户端对要被存储在第一尺寸的“区块”中的文件进行分段。表示区块的数据(诸如散列)或相应区块的其他表示被发送到远程文件系统元数据服务器。该服务器执行删除重复处理来确定各区块中的哪些(如果有的话)可能已经被文件系统存储。对于还没有被文件系统存储的那些区块,服务器利用用来将多个区块组合到组合对象中并且例如经由httpupt或其他请求将该组合对象存储在由服务器例如使用统一资源标识符(uri)或由服务器提供的其他定位符而指定的位置处的基于云的对象存储装置中的指令而对客户端作出响应。

图10是图示分布式文件系统的一个实施例中的处于不同粒度级别的文件区段的一个示例的框图。在所示的示例中,第一文件1002包括所示的数据,在该示例中为数据“abcdef”。在被存储的第一文件后面存储的第二文件1004包括数据“cdabeg”,其中相应文件1002和1004中的大写字母表示在每个文件中数据的字节的相同顺序,例如在第一文件1002的开始的“a”是与由第二文件1004中的相同大写字母“a”所表示的数据相同的数据。

在图10中,例如为了删除重复的目的示出可被使用的两个可能的区段或“区块”尺寸。在第一示例中,示出各区块1006,每一个区块都具有对应于表示分别包括文件1002和1004的数据的三个大写字母的尺寸。在该示例中,将文件1002和1004分段成所示的尺寸的区块1006将导致如在第一文件1002和第二文件1004之间没有发现副本区块。通过比较,通过以更细粒度(即更小区块尺寸)将文件1002和1004分段而创建的区块集合1008将导致显著改进的删除重复。在该示例中,文件1004的区块1014将被确定成文件1002的先前存储的区块1012的副本,并且文件1004的区块1018将被确定成文件1002的先前存储的区块1016的副本。在该示例中,文件1004的区块1022将不会被确定成文件1002的任何先前存储的区块的副本,在这种情况下归因于文件1004的区块1022和文件1002的区块1020(以及文件1002的其他区块)之间的差异。在所示的示例中,可以通过将文件分段成对应于如图10中所表示的个体大写字母的尺寸的区块来实现甚至更高程度的删除重复,因为如果使用该尺寸的区块,仅对应于大写字母“g”的区块,则将发现文件1004不是文件1002中的任何区块的副本。

图10中的示例说明一般来说更小尺寸的区块可产生比更大尺寸的区块更高的删除重复的益处。然而,如果使用太小的区块,则与计算和存储区块数据的散列以检测副本等等相关联的开销可能变得成本太高。因此,通常在通过相对更小区块尺寸实现删除重复的更多益处以及与处理区块相关联的开销之间冲击平衡。

在分布式文件的各种实施例中,进一步的考虑是将区块存储在基于云的对象存储装置(诸如图1的基于云的对象存储装置112)的效率。通常来说,此类基于云的对象存储装置被优化成存储相对于为了达到删除重复和相关开销的目的可能是最佳的区块尺寸而言非常大的对象。例如,对于典型的基于云的对象存储装置,与存储对象相关联的延时以及其他开销可能随着尺寸直到某一尺寸而线性增大,但是然后对于超过某一尺寸(例如与为了达到其他目的(诸如删除重复)可能是最佳的区块尺寸相比而言相对更大的尺寸)的对象趋向平稳。为了利用该特性,在如本文中公开的各种实施例或分布式文件系统中,为了文件系统操作的目的文件被分段成有利于达到删除重复和/或其他文件系统处理的目的的区块尺寸,但是文件数据被存储在就尺寸而言比区块尺寸相对大得多的对象(在本文中有时被称为“二进制大型对象(blob)”,以清楚地区分它们和“文件”或“区块”)中的(一个或多个)基于云的对象存储装置(诸如图1的对象存储装置112)中。在各种实施例中,文件系统客户端可被配置和/或指示成将各区块组合成更大的组合对象,并且然后将该组合对象(或“二进制大型对象”)存储在基于云的对象存储装置中。

图11是图示用来将分布式文件系统配置成存储文件数据的过程的一个实施例的流程图。在各种实施例中,图1的过程可被用来开发和配置分布式文件系统组件,诸如图2的文件系统客户端以及图1和/或图6的文件系统元数据服务器104。在所示的示例中,确定实现关于删除重复的期望性能和/或一个或多个其他文件系统目标的区块尺寸(1102)。在各种实施例中,可整体或部分基于域知识、所有文件集合或文件集合的一部分的静态分析、在使用不同尺寸的区块执行的测试中观测到的删除重复性能、等等来进行该确定。确定要被用来以利用基于云的或其他对象存储装置的与对象尺寸有关的特性的方式来存储文件系统数据的对象或“二进制大型对象”尺寸(1104)。例如,可生成性能图表或通过对象尺寸的对象存储装置性能和/或成本(例如延时、开销)的其他表示并且将其用于选择通过对象存储装置来实现期望级别的性能的对象(“二进制大型对象”)尺寸。分布式文件系统被配置成将文件分段成为了文件系统操作的目的(例如删除重复)而确定的区块尺寸的区块,并且将多个区块组合成所确定的对象尺寸的更大对象(“二进制大型对象”)(1106)以用于基于云的对象存储装置中的存储。

在一些实施例中,可被组合以形成被存储在基于云的对象存储装置中的更大对象(“二进制大型对象”)的区块的数目可能是可变的。例如,区块的数目可基于被存储的文件或文件集合的尺寸而变化。在一些实施例中,文件系统客户端可被配置成确定要被组合以形成被存储在基于云的对象存储装置中的更大对象的区块的数目。在一些实施例中,可在文件系统服务器(诸如图1和/或图6的文件系统元数据服务器104)处作出关于要被组合的区块的数目和/或哪些区块要被包括在哪些对象(“二进制大型对象”)中的确定。在一些实施例中,文件系统客户端可被配置成从服务器接收关于哪些区块要被组合在哪些对象中的指示,并且基于此类指令来创建和存储对象。

在一些实施例中,与两个或更多不同文件相关联的区块可被包括在要被存储在基于云的对象存储装置中的相同对象中。在一些实施例中,与文件(其同两个或更多不同文件系统客户端相关联)相关联的区块可被包括在如存储在基于云的对象存储装置中的对象中。例如,在一些实施例中,可跨文件系统客户端来执行删除重复,在某一情况下这可能导致包括存储对象(“二进制大型对象”)的一个或多个区块被与不同文件系统客户端相关联的文件引用。

图12是图示在分布式文件系统的一个实施例中被用来存储文件数据的元数据表的一个示例的框图。在各种实施例中,诸如图12的表1202和1210之类的元数据表可被创建并由分布式文件系统元数据服务器(诸如图1和/或6的文件系统元数据服务器104)来维护。在所示的示例中,区块元数据表1202包括:区块标识符列1203(在其中存储单调递增的区块标识符);区块散列列1204(在其中存储对于每个区块的基于区块的数据的所有或一部分而计算的对应散列)。对于每个区块,在“blob_id”列1206中列出标识在其中包括区块数据的更大的存储对象(二进制大型对象)的“二进制大型对象id”。在“偏移量”列1208中列出每个区块在它被包括在其中的对应存储对象(“二进制大型对象”)内的位置。对于给定区块,表1202可被用来找到如被存储在例如基于云的对象存储装置中的区块的数据被包括在其内的存储对象,以及在该对象内指示区块的数据被定位在对象的数据内的哪里的偏移量。

如由在表1202的第一、第二和第四行中为“1”的二进制大型对象id值到与二进制大型对象元数据表1210中的相同二进制大型对象id“1”相关联的条目(行)之间示出的箭头所指示的,如存储在区块元数据散列表1202中的对于给定区块散列值的二进制大型对象id可被用来在二进制大型对象元数据表1210中确定包括二进制大型对象元数据的对应条目(参见二进制大型对象id列1212)的位置、例如在基于云的对象存储装置中二进制大型对象被存储的位置(uri列1216)、以及与当前活动的和/或以其他方式经历被保留的文件系统对象相关联的区块的数目的指示(区块引用计数列1218),所述二进制大型对象元数据诸如加密密钥或用来加密包括二进制大型对象的数据的其他机密数据(二进制大型对象加密密钥列1214)。例如,关于后面的列,在对于blob_id=1的条目(行)中,区块引用计数列1218中的对应值指示当前活动(或以其他方式经历被保留,例如凭借与仍然被存储的快照相关联)的3个区块引用该二进制大型对象。在各种实施例中,如下面结合图15更完全描述的,区块引用计数列可被用来确定包括多个区块的二进制大型对象可能何时经历例如从其中存储二进制大型对象的基于云的对象存储装置被删除。

在各种实施例中,由文件系统(例如由文件系统元数据服务器,诸如图1和/或图6的文件系统元数据服务器104)来执行如本文中公开的所存储的文件系统数据的验证。在各种实施例中,验证能够实现要跨客户端提供的文件系统对象的无污染的删除重复的存储的保证,甚至在存在错误配置和/或出故障的(例如“有问题的”)或恶意的客户端的情况下。

在一些实施例中,从基于云的对象存储装置中检索包括用于文件数据的多个区块的存储对象(“二进制大型对象”)。被检索到的对象可被本地存储在例如缓存中,并且被用来验证包括该对象的组成区块。各种技术可被用来确定给定对象(“二进制大型对象”)的缓存拷贝应该保留在缓存中多久以促进验证。

在各种实施例中,更大存储对象(“二进制大型对象”)内的个体区块被加密,每个都使用与该区块相关联的加密密钥并且在相同存储对象中不具有一个或多个其他区块。在各种实施例中,该方法通过向需要并授权访问包括在更大存储对象中的区块的仅一个子集的文件系统客户端提供仅与区块的该子集相关联的加密密钥来实现基于逐个区块来控制访问。

图13是图示用来将文件存储在分布式文件系统中的过程的一个实施例的流程图。在各种实施例中,图13的过程可由文件系统元数据服务器(诸如图1的文件系统元数据服务器110)来执行。在所示的示例中,接收存储包括多个数据区块的文件的请求(1302)。例如,可从文件系统客户端接收用来存储包括在请求中标识的多个区块的文件的请求,诸如通过对于每个区块都包括对应区块散列或包含从该区块导出的和/或以其他方式表示该区块的其他数据。为了达到被与文件系统相关联的基于云的对象存储装置中的文件系统客户端存储的目的,关于各区块的至少一个子集来确定它们不是已经被文件系统存储的其他区块的副本,以及不是被标识为被包括在单个更大的存储对象的副本的区块的至少一个子集(1304)。生成要被用来加密包括区块要被包括在其中的存储对象的数据的主密钥,有时被称为“二进制大型对象”密钥(1306)。在一些实施例中,二进制大型对象密钥是单调递增的值。在一些实施例中,该密钥可例如由数据库自动生成。在一些实施例中,该密钥可由文件系统过程和/或相关联的应用程序生成和/或管理。在各种实施例中,至少部分基于包括要被包括在二进制大型对象中的多个区块的数据(例如二进制大型对象数据的所有或一部分的散列、基于包括在请求中的区块散列生成的散列或其他值、等等)来计算二进制大型对象密钥。在一些实施例中,二进制大型对象密钥被存储在文件系统元数据服务器处并且不与(一个或多个)文件系统客户端共享。

进一步参考图13,对于要被包括在更大存储对象(“二进制大型对象”)中的每个区块,例如在文件系统元数据服务器处使用二进制大型对象密钥,以计算从二进制大型对象密钥导出的且与该区块相关联的加密密钥(1308)。在各种实施例中,可至少部分基于该区块的区块散列和二进制大型对象密钥来计算特定于区块的密钥。在一些实施例中,二进制大型对象密钥被存储在文件系统元数据服务器处,但是个体区块密钥没有。反而,当需要区块密钥来例如在服务器处解密区块数据以执行如所存储或要被提供给文件系统客户端的区块的验证以使得客户端能够解密区块数据时,使用存储的二进制大型对象密钥和被用来生成密钥的区块数据(例如区块散列)来重新计算区块密钥。

指示区块要被包括在更大存储对象中的响应(例如对存储文件的请求的响应)以及对于每一个的要被用来加密该区块的对应区块密钥被发送给从其接收到请求的文件系统客户端(1310)。在各种实施例中,文件系统客户端被配置成处理该响应(包括通过使用与每个相应区块相关联的区块密钥来加密该区块),以及组合如在响应中所指示的单独加密的区块以形成更大的对象(“二进制大型对象”)并例如使用uri或包括在响应中的其他定位符将其存储在基于云的对象存储装置中。

图14是图示用来提供对分布式文件系统中存储的文件的访问的过程的一个实施例的流程图。在各种实施例中,图14的过程可由文件系统元数据服务器(诸如图1的文件系统元数据服务器110)来执行。在所示的示例中,例如从文件系统客户端接收访问包括多个区块的文件的请求(1402)。例如,可接收访问在请求中通过文件名称和/或路径标识的文件的请求,并且文件系统元数据表902和904可被用来标识包括该文件的多个区块。对于每个区块,(例如使用诸如图12的表1202之类的表)确定区块被包括在其中的对应的更大存储对象(“二进制大型对象”),并且对于包含与该文件相关联的一个或多个区块的每个二进制大型对象(例如使用诸如图12的表1202之类的表)检索对应二进制大型对象密钥并且将其连同相应区块散列(或其他区块数据和/或元数据)一起用来计算对应区块密钥(1404)。将用于对应于重建该文件所需的区块的二进制大型对象的uri的集合、在其相应二进制大型对象内的每个区块的二进制大型对象偏移量、以及解密包括如被存储在其相应二进制大型对象中的每个区块的数据所需的区块密钥发送给从其接收到访问请求的文件系统客户端(1406)。在各种实施例中,该文件系统客户端被配置成使用(一个或多个)uri来从其上存储每一个所需的二进制大型对象的基于云的对象存储装置检索(一个或多个)所需的二进制大型对象;使用相应的偏移量来在(一个或多个)二进制大型对象内找出区块数据;以及使用对应于每个区块的每个区块密钥来解密包括该区块的存储数据。该文件系统客户端使用已解密的区块数据来重建文件并且使得它可用于在客户端系统处使用,例如通过诸如图2的应用程序202之类的应用程序。在各种实施例中,可以从二进制大型对象主控密钥导出区块密钥,但是区块密钥不能被用来导出二进制大型对象主控密钥。因此,向文件系统客户端发送区块密钥不能够使客户端导出二进制大型对象主控密钥并且因此不能够使客户端导出用于二进制大型对象中的除了该客户端被授权访问的以及已经向客户端给出对应区块密钥的那些区块之外的区块的区块密钥。

在一些备选实施例中,可使用单个密钥来加密二进制大型对象中的所有区块。在一些实施例中,每个区块都具有在服务器处被安全地管理和存储的唯一密钥。在一些实施例中,生成“每个共享”的全局密钥并且从全局主控密钥而不是二进制大型对象主控密钥来导出区块密钥。

在各种实施例中,本文中公开的技术可被用来存储已经被分段成第一尺寸的区块的文件系统数据以便在可被优化成存储比第一尺寸大得多的第二尺寸的对象的基于云的对象存储装置中执行文件系统操作(诸如删除重复)。

尽管为了清楚理解的目的已经相当详细地描述了前面提到的实施例,但是本发明不限于所提供的细节。存在实施本发明的许多备选方式。所公开的实施例是说明性而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1