一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

元数据存储方法及分布式文件系统

2022-06-11 22:26:22 来源:中国专利 TAG:


1.本技术涉及数据存储技术领域,尤其涉及一种元数据存储方法及分布式文件系统。


背景技术:

2.分布式文件系统(distributed file system,简称:dfs)是通过目录元数据和文件元数据组成的层级树状结构的目录树,对整个dfs中的文件进行组织管理的。目录树对应的全局目录树视图如图1所示,全局目录树视图即只显示目录树中各目录元数据的目录名称和各文件元数据的文件名称,以及目录元数据之间的层级映射关系和目录元数据与文件元数据之间的层级映射关系的视图。dfs架构如图2所示。dfs中的目录元数据和文件元数据分布式存储在元数据服务器(metadata server,简称:mds)集群22中的多个元数据服务器(mds)221上,并由各mds 221对各自存储的目录元数据或文件元数据进行管理和处理。而dfs中文件的文件内容数据存储在数据服务器(data server,简称:ds)集群23中的多个数据服务器(ds)231上。客户端211通过访问mds集群22并从mds集群22获得目标文件的文件元数据,然后基于文件元数据索引到存储目标文件的文件内容数据的ds 231,进而对ds 231上的目标文件的文件内容数据进行访问操作(如读取)。其中,目录元数据包括目录名称、目录的全局唯一标识符(id)、目录的权限信息、目录的时间戳、目录项(即该目录下的子文件名称和子目录名称列表),如指定目录名称的目录元数据包括指定目录名称、指定目录名称的id、指定目录名称的权限信息、指定目录名称的时间戳、指定目录名称的目录项;文件元数据包括文件名称、文件的全局唯一标识符、文件的权限信息、文件内容数据存储信息(如存储文件内容数据的ds的标识符)。
3.客户端211从mds集群22获得目标文件的文件元数据的过程中,需要mds集群22中的目标文件相关联的mds 221对其存储的元数据(即目录元数据和/或文件元数据)进行解析,获得目标文件的文件元数据并返回给客户端211。目前,dfs的元数据在mds集群22中的多个mds 221上的常用存储方式如下:将dfs的目录树按层级(如图1所示)划分,并将不同层级的元数据存储在mds集群22的不同的mds 221上。每个mds负责管理其存储的元数据,mds集群22中所有的mds 221协同维护一个dfs目录树的元数据及元数据之间的层级映射关系,并基于客户端211的访问请求进行元数据处理。该元数据存储方式设计简单,实现难度较小,且整个dfs元数据处理吞吐量为mds集群22中所有mds 221的吞吐量之和,有效保障了dfs的元数据处理性能。
4.由于dfs存在目录列表操作(如文件的新建或删除、目录命令(ls)操作等)频繁进行的情况,当dfs采用现有的元数据存储方式时,频繁的目录列表操作将导致整个dfs性能低下。


技术实现要素:

5.本技术提供一种元数据存储方法及分布式文件系统,以解决现有技术中频繁的目
录列表操作导致整个dfs性能低下的问题。
6.第一方面,本技术提供一种元数据存储方法,应用于分布式文件系统dfs,所述分布式文件系统dfs包括多个元数据服务器;
7.所述方法包括:
8.将dfs目录树中的各目录元数据按如下方式解耦,获得各目录元数据各自对应的访问元数据和内容元数据:将指定目录名称的目录元数据解耦为指定目录名称的访问元数据和指定目录名称的内容元数据;其中,指定目录名称的访问元数据包括指定目录名称、指定目录名称的全局唯一标识符;指定目录名称的内容元数据包括指定目录名称的目录项;
9.将所述目录树中各目录元数据对应的访问元数据和内容元数据,以及各文件元数据按如下方式组成元数据组:将指定目录名称的访问元数据、指定目录名称的父目录的内容元数据以及指定目录名称的父目录的全局唯一标识符组成元数据组;并将指定目录名称的内容元数据、指定目录名称的全局唯一标识符以及指定目录名称的子目录的访问元数据和/或子文件的文件元数据组成元数据组;
10.将所述目录树的多个元数据组均衡分布存储于所述多个元数据服务器。
11.可选的,所述将所述目录树的多个元数据组均衡分布存储于所述多个元数据服务器,包括:
12.分别对所述元数据组和所述元数据服务器进行一致性哈希计算,得到所述元数据组和所述元数据服务器各自对应的哈希值;
13.基于所述哈希值,将所述元数据组对应存储于所述元数据服务器。
14.可选的,所述对所述元数据组进行一致性哈希计算,得到所述元数据组对应的哈希值,包括:
15.采用如下方式对所述元数据组进行一致性哈希计算,得到所述元数据组对应的哈希值:
16.对所述指定目录名称的父目录的全局唯一标识符进行一致性哈希计算,得到所述指定目录名称的访问元数据的哈希值;
17.对所述指定目录名称的全局唯一标识符进行一致性哈希计算,得到所述指定目录名称的内容元数据的哈希值;
18.对所述文件元数据所属的父目录的全局唯一标识符进行一致性哈希计算,得到所述文件元数据的哈希值。
19.可选的,所述将所述元数据组对应存储于所述元数据服务器,包括:
20.将所述元数据组以键值对的形式对应存储于所述元数据服务器。
21.可选的,所述指定目录名称的访问元数据还包括指定目录名称的权限信息;所述指定目录名称的内容元数据还包括指定目录名称的时间戳;
22.所述将所述元数据组以键值对的形式对应存储于所述元数据服务器,包括:
23.采用如下形式的键值对,将所述元数据组对应存储于所述元数据服务器:
24.以所述指定目录名称的全局唯一标识符和所述指定目录名称的权限信息作为值,与以所述指定目录名称的父目录的全局唯一标识符和所述指定目录名称作为键,组成的键值对;
25.以所述指定目录名称的目录项和所述指定目录名称的时间戳作为值,与以所述指
定目录名称的全局唯一标识符作为键,组成的键值对;
26.以所述文件元数据作为值,与以所述文件元数据所属的父目录的全局唯一标识符和文件名称作为键,组成的键值对。
27.第二方面,本技术提供一种分布式文件系统,包括:多个客户端、多个元数据服务器、多个数据服务器;其中,
28.所述客户端,用于向所述元数据服务器发送访问请求以访问所述元数据服务器,获得所述元数据服务器返回的请求结果;还用于基于所述请求结果,访问所述请求结果对应的数据服务器所存储的文件内容数据;
29.所述元数据服务器,用于采用如上所述的方法存储所述分布式文件系统的目录元数据和文件元数据;还用于基于所述客户端的访问请求,对所述元数据服务器所存储的元数据组进行元数据处理,得到请求结果,并将所述请求结果返回给所述客户端;
30.所述元数据服务器,还用于通过如下方式来维护所述客户端缓存项与所述分布式文件系统的元数据的一致性:
31.所述元数据服务器在收到所述客户端的访问请求后,检查所述访问请求对应的客户端缓存项的有效性,获得检查结果,并基于所述检查结果进行如下的一致性维护操作:
32.若所述检查结果为所述访问请求对应的客户端缓存项有效,则将所述访问请求对应的请求结果和用于对所述客户端缓存中失效的缓存项进行无效的无效指令返回给所述客户端;
33.若所述检查结果为所述访问请求对应的客户端缓存项失效,则将表征终止所述访问请求的终止指令和用于对所述客户端缓存中失效的缓存项进行无效的无效指令返回给所述客户端。
34.可选的,所述系统还包括:协调服务器;
35.所述协调服务器,用于在多个客户端并发进行目录重命名操作时,对所述分布式文件系统的目录树中的目录孤儿环路进行识别,并在识别到所述目录孤儿环路时,向所述客户端发送中止目录重命名操作的中止指令;
36.其中,所述目录孤儿环路为由多个目录元数据之间的映射关系形成的孤立的映射环路,或由多个目录元数据与文件元数据之间的映射关系形成的孤立的映射环路。
37.第三方面,本技术提供一种服务器,包括:
38.处理器和存储器;
39.所述存储器存储所述处理器可执行的可执行指令;
40.其中,所述处理器执行所述存储器存储的可执行指令,使得所述处理器执行如上所述的方法。
41.第四方面,本技术提供一种存储介质,所述存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上所述的方法。
42.第五方面,本技术提供一种程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
43.本技术提供的元数据存储方法及分布式文件系统,通过将目录元数据拆解成目录的访问元数据和目录的内容元数据两部分,然后在确保映射关系不变的前提下,将目录树对应的拆解后的各目录的访问元数据、目录的内容元数据,以及文件元数据进行重新组合
存储,确保对dfs的目录列表操作在一个mds上进行。本技术解决了现有技术中频繁的目录列表操作导致整个dfs性能低下的问题。
附图说明
44.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
45.图1为现有的全局目录树视图的示意图;
46.图2为现有的分布式文件系统架构图;
47.图3为本技术实施例提供的元数据存储方法流程图;
48.图4为本技术实施例提供的分布式文件系统架构图;
49.图5为本技术实施例提供的目录孤儿环路示意图;
50.图6为本技术实施例提供的服务器结构图。
51.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
52.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
53.分布式文件系统(dfs)具有节约成本、方便管理、扩展性好、可靠性强和可用性强等优势,如今已得到广泛应用。分布式文件系统通过如图1所示的全局目录树视图对应的目录树对整个分布式文件系统中的文件进行组织管理。当分布式文件系统采用现有的元数据存储方式,将分布式文件系统的目录树按如图1所示的层级划分,并将不同层级的元数据存储在如图2所示的mds集群22的不同的mds 221上时,dfs目录树的元数据及元数据之间的层级映射关系由mds集群22中多个mds 221协同维护。当需要对分布式文件系统进行目录列表操作(如文件新建或删除)时,则需要针对该新建或删除的文件进行对应的文件元数据的新建或删除。新建或删除文件元数据时,势必需要新建或修改该文件元数据与其父目录的目录元数据之间的映射关系。然而,在现有技术中,文件元数据和其父目录的目录元数据因属于不同的层级而存储在不同的mds 221上。当新建或修改该文件元数据与其父目录的目录元数据之间的映射关系时,需要该文件元数据和其父目录的目录元数据对应的两个mds 221进行分布式协议的通信协调,以完成在两个mds 221上进行相关的文件元数据和目录元数据的处理。例如,新建或删除文件元数据时,需要该文件元数据和其父目录的目录元数据所在的两个mds 221分布式原子提交协议(例如两阶段提交)来保证原子地更新多台元数据服务器上的数据,同时需要分布式锁协议(例如两阶段锁)来保证不同操作之间的隔离性。这些分布式协议需要繁复的网络通信,延迟较高;锁之间的竞争导致并发度下降,吞吐降低,进而影响分布式文件系统的吞吐性能。但随着网络技术的不断发展,分布式文件系统承载的文件数量不算增加,存在分布式文件系统中的客户端211频繁新建或删除文件、进行目
录命令修改操作等目录列表操作的情况。诸如淘宝、京东等电商业务的分布式文件系统因其极庞大的商户群体带来的频繁上传或删除产品信息的文件的情景。所以,频繁的目录列表操作将导致整个分布式文件系统性能(如吞吐性能)变低下。
54.由于目录元数据包括目录名称、目录的全局唯一标识符(id)、目录的权限信息、目录的时间戳、目录项;文件元数据包括文件名称、文件的全局唯一标识符、文件的权限信息、文件内容数据存储信息(如存储该文件的ds的标识符)。上一层级的目录元数据与下一层级的目录元数据之间的层级映射关系是通过上一层级的目录元数据中的目录项和下一层级的目录元数据中的目录名称的对应关系实现的;同理地,上一层级的目录元数据与下一层级的文件元数据之间的层级映射关系是通过上一层级的目录元数据中的目录项和下一层级的文件元数据中的文件名称的对应关系实现的。示例性地,如图1所示全局目录树视图对应的目录树中各目录元数据、文件元数据及映射关系如表1所示的新建文件f3之前的目录元数据、文件元数据及映射关系:
55.表1目录元数据、文件元数据及映射关系
[0056][0057]
表1中目录元数据和文件元数据示例说明如下:
[0058]
d1表示目录d1的名称;idd1表示目录d1的全局唯一标识符,即目录d1的id;d1权限信息表示目录d1的权限信息;d1时间戳表示目录d1的时间戳;d1目录项表示目录d1的目录项。
[0059]
f1表示文件f1的名称;idf1表示文件f1的全局唯一标识符,即文件f1的id;f1权限信息表示文件f1的权限信息;f1时间戳表示文件f1的时间戳;f1内容存储信息表示文件f1的文件内容数据存储信息,如存储地址或存储文件f1的文件内容数据的数据服务器的标识符等。
[0060]
本技术中其他目录元数据和文件元数据表示方式与上述目录元数据示例说明和文件元数据示例说明类似,不再赘述。
[0061]
如表1所示,在现有技术中,目录列表操作也就是对两个目录元数据之间的层级映射关系或目录元数据与文件元数据之间的层级映射关系的操作(如新建、修改、删除)。例如上表1所示,需在dfs中新建文件f3,并实现由目录d3索引到文件f3,即新建目录d3(即目录名称为d3)的目录元数据与文件f3(即文件f3的名称为f3)的文件元数据之间的层级映射关系时,则需要对目录d3的目录元数据中目录项进行修改(如在目录项中新增f3),同时需新建文件f3的文件元数据。由此,新建文件f3的操作则需要多个mds(即至少两个mds,如存储目录d3的目录元数据的mds和存储文件f3的文件元数据的mds)进行分布式协议的通信协调。
[0062]
也就是说,现有技术的元数据存储方式,是从两个目录元数据之间,或目录元数据与其关联的文件元数据之间的层级映射关系处将目录树拆解后分布式存储的。
[0063]
对此,为了解决采用现有技术进行元数据存储后,目录列表操作需要多个mds进行分布式协议的通信协调的问题,本技术提出一种元数据存储方法,通过将各目录元数据拆解(即解耦)成各自对应访问元数据和内容元数据两部分,然后在确保映射关系不变的前提下,将目录树对应的各目录元数据拆解后的各访问元数据、各内容元数据,以及各文件元数据进行重新组合存储,确保对dfs的目录列表操作在一个mds上进行,从而解决现有技术中频繁的目录列表操作导致整个dfs性能低下的问题。
[0064]
下面结合部分实施例对本技术提供的元数据存储方法进行说明。
[0065]
本技术实施例的分布式文件系统架构也可以是如图2所示的架构。如图2所示,该分布式文件系统包括:客户端集群21,元数据服务器(mds)集群22,数据服务器(ds)集群23。其中,mds集群22包括多个元数据服务器(mds)221,如图2所示的元数据服务器1、元数据服务器2、元数据服务器3、

、元数据服务器n;ds集群23包括多个数据服务器(ds)231,如图2所示的数据服务器1、数据服务器2、数据服务器3、

、数据服务器m;客户端集群21包括多个客户端211,如图2所示的客户端1、客户端2、客户端3、

、客户端p;且m,n,p均为自然数。该分布式系统通过一个目录树,对整个dfs中的文件进行组织管理。dfs中的目录元数据和文件元数据均衡分布式存储在多个mds 221上,并由各mds 221对各自存储的目录元数据或文件元数据进行管理和处理。dfs中文件的文件内容数据存储在多个ds 231上。客户端211可以通过访问至少一个mds 221并从mds 221获得目标文件的文件元数据,然后基于该文件元数据,与该文件元数据对应的ds 231进行通信,实现对该ds 231上存储的目标文件的文件内容数据进行访问操作(如读取)。分布式文件系统的目录树对应的目录元数据和文件元数据在mds集群22上的存储方法如图3所示。
[0066]
图3为本技术实施例提供的元数据存储方法流程图。图3所示实施例的执行主体可以是图2所示的客户端211,mds 221,ds 231中的任一个。本技术提供的元数据存储方法应用于分布式文件系统dfs,该分布式文件系统dfs包括多个元数据服务器。如图3所示,该方法包括:
[0067]
s301、将dfs目录树中的各目录元数据按如下方式解耦,获得各目录元数据各自对应的访问元数据和内容元数据:将指定目录名称的目录元数据解耦为指定目录名称的访问元数据和指定目录名称的内容元数据;其中,指定目录名称的访问元数据包括指定目录名称、指定目录名称的全局唯一标识符;指定目录名称的内容元数据包括指定目录名称的目录项。
[0068]
示例性地,客户端211将dfs目录树中的各目录元数据按如下方式解耦,获得各目录元数据各自对应的访问元数据和内容元数据:
[0069]
将指定目录名称的目录元数据解耦为指定目录名称的访问元数据和指定目录名称的内容元数据;其中,指定目录名称的访问元数据包括指定目录名称、指定目录名称的全局唯一标识符;指定目录名称的内容元数据包括指定目录名称的目录项。
[0070]
例如,假设指定目录名称为k,客户端211将dfs目录树中的各目录元数据按如下方式解耦,获得各目录元数据各自对应的访问元数据和内容元数据:
[0071]
将目录k的目录元数据解耦为目录k的访问元数据和目录k的内容元数据;其中,目录k的访问元数据包括目录k的名称、目录k的全局唯一标识符;目录k的内容元数据包括目录k的目录项。
[0072]
s302、将目录树中各目录元数据对应的访问元数据和内容元数据,以及各文件元数据按如下方式组成元数据组:将指定目录名称的访问元数据、指定目录名称的父目录的内容元数据以及指定目录名称的父目录的全局唯一标识符组成元数据组;并将指定目录名称的内容元数据、指定目录名称的全局唯一标识符以及指定目录名称的子目录的访问元数据和/或子文件的文件元数据组成元数据组。
[0073]
示例性地,客户端211将目录树中各目录元数据对应的访问元数据和内容元数据,以及各文件元数据按如下方式组成元数据组:
[0074]
客户端211将指定目录名称的访问元数据、指定目录名称的父目录的内容元数据以及指定目录名称的父目录的全局唯一标识符组成元数据组;客户端211还将指定目录名称的内容元数据、指定目录名称的全局唯一标识符以及指定目录名称的子目录的访问元数据和/或子文件的文件元数据组成元数据组。
[0075]
例如,假设指定目录名称为k,客户端211将目录树中各目录元数据对应的访问元数据和内容元数据,以及各文件元数据按如下方式组成元数据组:
[0076]
客户端211将目录k的访问元数据、目录k的父目录的内容元数据以及目录k的父目录的全局唯一标识符组成元数据组;客户端211还将目录k的内容元数据、目录k的全局唯一标识符以及目录k的子目录的访问元数据和/或子文件的文件元数据组成元数据组。
[0077]
s303、将目录树的多个元数据组均衡分布存储于多个元数据服务器。
[0078]
示例性地,客户端211将目录树的多个元数据组均衡分布存储于多个元数据服务器221。
[0079]
可选地,客户端211分别对元数据组和元数据服务器进行一致性哈希计算,得到元
数据组和元数据服务器各自对应的哈希值。客户端211基于哈希值,即元数据组和元数据服务器各自对应的哈希值,将元数据组对应存储于元数据服务器221。
[0080]
进一步地,客户端211采用如下方式对元数据组进行一致性哈希计算,得到元数据组对应的哈希值:
[0081]
对指定目录名称的父目录的全局唯一标识符(即指定目录名称的父目录id)进行一致性哈希计算,得到指定目录名称的访问元数据的哈希值;
[0082]
对指定目录名称的全局唯一标识符(即指定目录名称的目录id)进行一致性哈希计算,得到指定目录名称的内容元数据的哈希值;
[0083]
对文件元数据所属的父目录的全局唯一标识符(即文件的父目录id)进行一致性哈希计算,得到文件元数据的哈希值。
[0084]
示例性地,假设指定目录名称为k,客户端211采用如下方式对元数据组进行一致性哈希计算,得到元数据组对应的哈希值:
[0085]
对目录k的父目录的全局唯一标识符(即目录k的父目录id)进行一致性哈希计算,得到目录k的访问元数据的哈希值;
[0086]
对目录k的全局唯一标识符(即目录k的目录id)进行一致性哈希计算,得到目录k的内容元数据的哈希值;
[0087]
对文件元数据所属的父目录的全局唯一标识符(即文件的父目录id)进行一致性哈希计算,得到文件元数据的哈希值。
[0088]
可选地,客户端211将元数据组以键值对的形式对应存储于元数据服务器221。
[0089]
可选地,指定目录名称的访问元数据还包括指定目录名称的权限信息;指定目录名称的内容元数据还包括指定目录名称的时间戳。客户端211采用如下形式的键值对,将元数据组对应存储于元数据服务器221:
[0090]
以指定目录名称的全局唯一标识符和指定目录名称的权限信息作为值,与以指定目录名称的父目录的全局唯一标识符和指定目录名称作为键,组成的键值对;
[0091]
以指定目录名称的目录项和指定目录名称的时间戳作为值,与以指定目录名称的全局唯一标识符作为键,组成的键值对;
[0092]
以文件元数据作为值,与以文件元数据所属的父目录的全局唯一标识符和文件名称作为键,组成的键值对。
[0093]
例如,假设指定目录名称为k,目录k的访问元数据还包括目录k的权限信息;目录k的内容元数据还包括目录k的时间戳。客户端211采用如下形式的键值对,将元数据组对应存储于元数据服务器221:
[0094]
以目录k的全局唯一标识符和目录k的权限信息作为值,与以目录k的父目录的全局唯一标识符和目录k的名称作为键,组成的键值对;
[0095]
以目录k的目录项和目录k的时间戳作为值,与以目录k的全局唯一标识符作为键,组成的键值对;
[0096]
以文件元数据作为值,与以文件元数据所属的父目录的全局唯一标识符和文件名称作为键,组成的键值对。
[0097]
示例性地,假设分布式文件系统r的目录树对应的全局目录树视图如图1所示,目录树对应的目录元数据和文件元数据如表1所示,该分布式文件系统r包括四个元数据服务
器:元数据服务器1、元数据服务器2、元数据服务器3、元数据服务器4。分别采用现有技术和本技术提供的元数据存储方法,将分布式文件系统r的目录元数据和文件元数据存储于元数据服务器1、元数据服务器2、元数据服务器3、元数据服务器4时,各自的存储情况分别如表2和表3所示。
[0098]
表2采用现有技术的元数据存储情况
[0099][0100]
表3采用本技术提供的方法的元数据存储情况
[0101][0102]
上述新建文件f3之前的目录元数据和文件元数据对应的目录树即为如图1所示的全局目录树视图对应的目录树。
[0103]
采用现有技术进行分布式文件系统r的元数据存储后,当对分布式文件系统r进行目录列表操作时,如上表2所示的新建文件f3,至少涉及元数据服务器2和元数据服务器3的分布式协议通信协调。
[0104]
而采用本发明提供的元数据存储方法进行分布式文件系统r的元数据存储后,当对分布式文件系统r进行目录列表操作时,如上表3所示的新建文件f3,由于文件f3的文件元数据及其与目录d3的层级映射关系只需在元数据服务器4这一个元数据服务器上进行即可,不涉及多个元数据服务器之间的分布式协议通信协调。
[0105]
下面结合具体示例,对采用本发明提供的元数据存储方法进行元数据存储后的分布式文件系统的运行效果进行说明。假设一分布式文件系统q的系统架构如图2所示,该分布式文件系统q采用本发明提供的元数据存储方法进行元数据存储。分布式文件系统q的元
数据存储情况具体如表3所示。分布式文件系统q的目录树如图1所示的全局目录树视图对应的目录树。当客户端1要访问文件f2时,分布式文件系统q的运行流程如下:
[0106]
客户端1对根目录id进行一致性哈希运算,得到目录d1的访问元数据所在的元数据服务器即元数据服务器1的编码(如mds-1);客户端1基于mds-1,向元数据服务器1发送访问请求1(如根目录id、d1、用户id);
[0107]
元数据服务器1基于访问请求1中的根目录id和d1,找到目录d1的访问元数据,并基于访问请求1中的用户id,检查用户id对应的用户是否拥有目录d1的权限。若检查结果为有权限,则元数据服务器1将idd1和确认信号(如ack信号)返回给客户端1;若检查结果为无权限,则元数据服务器1将不确认信号(如nack信号)返回给客户端1,以终止客户端1的访问请求1。假设本示例中元数据服务器1返回给客户端1的是idd1和ack信号。
[0108]
继续地,客户端1对idd1进行一致性哈希运算,得到目录d3的访问元数据所在的元数据服务器即元数据服务器2的编码(如mds-2);客户端1基于mds-2,向元数据服务器2发送访问请求2(如idd1、d3、用户id);
[0109]
继续地,元数据服务器2基于访问请求2中的idd1和d3,找到目录3的访问元数据,并基于访问请求2中的用户id,检查用户id对应的用户是否拥有目录d3的权限。若检查结果为有权限,则元数据服务器2将idd3和ack信号返回给客户端1;
[0110]
继续地,客户端1对idd3进行一致性哈希运算,得到文件f2的文件元数据所在的元数据服务器即元数据服务器4的编码(如mds-4);客户端1基于mds-4,向元数据服务器4发送访问请求3(如idd3、f2、用户id);
[0111]
继续地,元数据服务器4基于访问请求3中的idd3和f2,找到文件f2的文件元数据,并基于访问请求3中的用户id,检查用户id对应的用户是否拥有文件f2的权限。若检查结果为有权限,则元数据服务器4将文件f2的文件元数据和ack信号返回给客户端1;
[0112]
最后,客户端1基于文件f2的文件元数据中的f2内容存储信息,即可与存储文件f2的文件内容数据的数据服务器进行通信,并读取该数据服务器上存储的文件f2的文件内容数据。
[0113]
因此,采用本技术提供的元数据存储方法进行分布式文件系统的元数据存储后,频繁的目录列表操作,不会对分布式文件系统的性能(如吞吐性能)产生不利的影响。本技术提供的元数据存储方法解决了现有技术存在频繁的目录列表操作将导致整个dfs性能(如吞吐性能)低下的问题。此外,在采用本技术提供的元数据存储方法的分布式文件系统中,客户端在访问分布式文件系统中文件的文件内容数据时,客户端只需进行一致性哈希运算后,针对性与相关的元数据服务器进行通信即可,而无需元数据服务器之间的信息交互,极大提高了整个分布式文件系统应对多客户端并发访问文件的文件内容数据的性能。
[0114]
本技术实施例还提供一种分布式文件系统。图4为本技术实施例提供的分布式文件系统架构图。图5为本技术实施例提供的目录孤儿环路示意图。下面结合图4和图5对本技术提供的分布式文件系统进行说明。如图4所示,该分布式文件系统包括:多个客户端211、多个元数据服务器221、多个数据服务器231。
[0115]
其中,客户端211,用于向元数据服务器221发送访问请求以访问元数据服务器221,获得元数据服务器221返回的请求结果;还用于基于该请求结果,访问该请求结果对应的数据服务器231所存储的文件内容数据;
[0116]
元数据服务器221,用于采用本技术提供的方法(如图3所示实施例提供的方法)存储分布式文件系统的目录元数据和文件元数据;还用于基于客户端211的访问请求,对元数据服务器221所存储的元数据组进行元数据处理,得到请求结果,并将该请求结果返回给客户端211;
[0117]
元数据服务器221,还用于通过如下方式来维护客户端211缓存项与分布式文件系统的元数据的一致性:
[0118]
元数据服务器221在收到客户端211的访问请求后,检查该访问请求对应的客户端211缓存项的有效性,获得检查结果,并基于该检查结果进行如下的一致性维护操作:
[0119]
若该检查结果为访问请求对应的客户端211缓存项有效,则将该访问请求对应的请求结果和用于对客户端211缓存中失效的缓存项进行无效的无效指令返回给客户端;
[0120]
若检查结果为访问请求对应的客户端211缓存项失效,则将表征终止该访问请求的终止指令和用于对客户端缓存中失效的缓存项进行无效的无效指令返回给客户端211。
[0121]
示例性地,本技术实施例提供的维护客户端211缓存项与分布式文件系统的元数据的一致性的方式的技术效果说明如下:
[0122]
在现有技术中,元数据服务器221维护客户端211缓存项与分布式文件系统的元数据的一致性的方式为:分布式文件系统中的目录树一旦发生变化,如至少一个元数据服务器221进行了目录重命名、目录列表操作、目录权限修改操作等导致目录树发生变化的目录变更操作,则执行目录变更操作的元数据服务器221会在目录变更操作完成后,同时向各客户端211发送用于对客户端211中失效的缓存项进行无效的无效指令。即元数据服务器221每执行一次目录变更操作,就会同时向各客户端211发送无效指令,客户端211每收到无效指令即对其对应的缓存项进行无效操作。当分布式文件系统存在频繁的目录变更操作时,整个分布式文件系统中,元数据服务器221维护客户端211缓存项与分布式文件系统的元数据的一致性的开销较大。
[0123]
由于在实际应用中,并不是每一个客户端211缓存中的缓存项都是高频率使用的缓存项,多数客户端211缓存中的某一缓存项被缓存在客户端211后,存在不会被使用的情况。对于这种不会被使用的客户端211缓存项,其实是无需进行一致性维护的。所以,本技术实施例提供的维护客户端211缓存项与分布式文件系统的元数据的一致性的方式,是通过在客户端211使用缓存项时对客户端211中该缓存项进行有效性检查和一致性维护,确保在不影响客户端211的使用性能的前提下,避免了元数据服务器221对客户端211缓存中不会被使用的缓存项的一致性维护开销。
[0124]
可选地,本技术提供的分布式文件系统还包括:协调服务器41。
[0125]
协调服务器41,用于在多个客户端211并发进行目录重命名操作时,对分布式文件系统的目录树中的目录孤儿环路进行识别,并在识别到目录孤儿环路时,向客户端211发送中止目录重命名操作的中止指令。
[0126]
其中,目录孤儿环路为由多个目录元数据之间的映射关系形成的孤立的映射环路,或由多个目录元数据与文件元数据之间的映射关系形成的孤立的映射环路。
[0127]
协调服务器41对目录孤儿环路的识别,并在识别到目录孤儿环路时,向客户端211发送中止目录重命名操作的中止指令的示例说明如下:
[0128]
示例性地,如图5所示,图5a为分布式文件系统s在目录重命名操作之前的目录树
路径图(即层级映射关系走向图),该目录树路径图包括以下两条路径:根目录(即图5中“/”表示的目录)

目录a

目录b

目录c,以及根目录

目录d

目录e

目录f;图5b和图5c分别为客户端m和客户端n在同一时间各自对分布式文件系统s进行目录重命名操作的路径图;图5d为当分布式文件系统s的系统架构为图2所示的系统架构时,客户端m和客户端n在并发对分布式文件系统s进行目录重命名操作后形成的全局目录树视图。
[0129]
如图5所示,若分布式文件系统s的系统架构为图2所示的系统架构,客户端m和客户端n在同一时间各自对分布式文件系统s进行目录重命名操作时,客户端m和客户端n只能各自检查各自的目录重命名操作是否会造成目录孤儿环路,而无法获知不同客户端并发的目录重命名操作是否会共同造成目录孤儿环路。当客户端m和客户端n同一时间各自对分布式文件系统s进行如图5b和图5c所示的目录重命名操作后,致使分布式文件系统s出现如图5d所示的b
→c→e→f→
b的目录孤儿环路,由此造成该目录孤儿环路相关的目录元数据或该目录孤儿环路相关的目录元数据和文件元数据的丢失,如目录b、目录c、目录e、目录f的目录元数据无法在分布式文件系统s运行时被路径解析索引到。
[0130]
若分布式文件系统s的系统架构为图4所示的系统架构,针对多个客户端211并发进行目录重命名操作的情况,如客户端m和客户端n在同一时间各自对分布式文件系统s进行如图5b和图5c所示的目录重命名操作的情况,协调服务器41对目录孤儿环路进行识别,并在识别到目录孤儿环路时,向客户端211发送中止目录重命名操作的中止指令。示例性地,在客户端m和客户端n的目录重命名操作结果生效之前,客户端m和客户端n将通过协调服务器41验证同一时间客户端m和客户端n的目录重命名操作是否会共同造成目录孤儿环路,若协调服务器41在验证识别到同一时间客户端m和客户端n的目录重命名操作会共同造成目录孤儿环路,则协调服务器1分别向客户端m和客户端n发送中止指令,以中止客户端m和客户端n的目录重命名操作,阻止客户端m和客户端n的目录重命名操作结果生效;进一步地,若协调服务器41在验证识别到同一时间客户端m和客户端n的目录重命名操作不会共同造成目录孤儿环路,则协调服务器1分别向客户端m和客户端n发送确认指令,以允许客户端m和客户端n的目录重命名操作结果生效。
[0131]
其中,协调服务器41通过如下方式对分布式文件系统在多个客户端211并发进行目录重命名操作时形成的目录树中的目录孤儿环路进行识别:协调服务器41在本地维护了一个目录重命名有向图,该目录重命名有向图记录了当前正在执行的目录重命名操作的源路径和目的路径,协调服务器41即通过识别该目录重命名有向图中的目录孤儿环路,来实现对多个客户端211并发进行目录重命名操作时形成的目录孤儿环路的识别。
[0132]
可选地,在客户端211执行目录重命名操作期间,目录重命名操作的源路径和目的路径将被协调服务器41保存在目录重命名有向图中,并在目录重命名操作完成后(如协调服务器41向客户端211发送中止指令或确认指令后)被协调服务器41删除。
[0133]
可选地,若多个客户端211并发进行目录重命名操作时不会形成目录孤儿环路,协调服务器41分别向执行目录重命名操作的多个客户端211发送确认指令后,协调服务器41将保存多个客户端211并发进行的各自的目录重命名操作,并为每一个目录重命名操作生成一个递增的版本号。然后,协调服务器41将各目录重命名操作的操作版本号和操作信息发送到各元数据服务器221的无效列表上。其中,目录重命名操作的操作信息包括操作类型、源路径和目的路径。与目录重命名操作相关联的元数据服务器221在收到协调服务器41
发来的目录重命名操作的操作版本号和操作信息后,根据该目录重命名操作的操作版本号和操作信息,进行目标元数据的处理。目标元数据的处理如该目录重命名操作的源路径对应的元数据服务器读取并删除该目录重命名操作对应目录的访问元数据键值对,目的路径对应的元数据服务器创建该目录重命名操作对应目录的访问元数据键值对。
[0134]
可选地,元数据服务器221可以使用其存储的无效列表上的目录重命名操作的操作版本号和操作信息,在客户端211访问该元数据服务器221时,检查该客户端211发来的访问请求对应的客户端211缓存项是否有效。例如,在客户端211访问该元数据服务器221时,元数据服务器221可以使用其存储的无效列表上的目录重命名操作的操作版本号和操作信息,与该客户端211发来的访问请求对应的客户端211缓存项进行比对,若比对结果为一致,则说明客户端211发来的访问请求对应的客户端211缓存项有效;若比对结果不一致,则说明客户端211发来的访问请求对应的客户端211缓存项已经失效。
[0135]
本技术实施例提供的分布式文件系统,不但具有如图3所示实施例的技术原理和技术效果,还降低了元数据服务器对客户端缓存项一致性维护的网络开销。本技术实施例提供的分布式文件系统还解决了现有技术中多个客户端并发进行目录重命名操作形成的目录孤儿环路,造成该目录孤儿环路相关的目录元数据或该目录孤儿环路相关的目录元数据和文件元数据的丢失的问题。
[0136]
本技术实施例还提供一种服务器。图6为本技术实施例提供的服务器结构图。如图6所示,该服务器包括处理器61和存储器62,存储器62存储有处理器61可执行指令,使得该处理器61可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。应理解,上述处理器61可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器62可能包含高速随机存取存储器(英文:random access memory,简称:ram),也可能还包括非易失性存储器(英文:non-volatile memory,简称:nvm),例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
[0137]
本技术实施例还提供一种存储介质,该存储介质中存储有计算机执行指令,这些计算机执行指令被处理器执行时,实现上述的本技术提供的元数据存储方法。存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(英文:static random-access memory,简称:sram),电可擦除可编程只读存储器(英文:electrically-erasable programmable read-only memory,简称:eeprom),可擦除可编程只读存储器(英文:erasable programmable read-only memory,简称:eprom),可编程只读存储器(英文:programmable read-only memory,简称:prom),只读存储器(英文:read-only memory,简称:rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0138]
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存
储介质可以位于专用集成电路(英文:application specific integrated circuits,简称:asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
[0139]
本技术实施例还提供一种程序产品,如计算机程序,该计算机程序被处理器执行时实现本技术所涵盖的元数据存储方法。
[0140]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0141]
最后应说明的是:以上实施方式仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施方式对本发明已经进行了详细的说明,但本领域的普通技术人员应当理解:其依然可以对前述实施方式所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施方式技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献