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

一种分布式文件系统的配额方法及相关组件与流程

2023-01-15 09:28:34 来源:中国专利 TAG:


1.本发明涉及分布式存储技术领域,特别是涉及一种分布式文件系统的配额方法及相关组件。


背景技术:

2.对于分布式文件系统,为了更合理地管理目录所用资源,提出了配额的概念。配额是一种资源管控技术,用以限制单个目录最多可用的资源,即设置了配额的目录最多可以写入配额大小的对象的数量,写入后的所有对象的数量一旦达到配额大小,立即禁止写入,进而防止资源被个别用户过度使用,从而影响其他用户使用资源。
3.而对于一些更复杂的场景,存在需要对不同层级的目录同时设置配额的情况。现有技术中,各层级目录配额之间保持独立,无大小限制,即子目录的配额不受父目录的配额约束,两者是平级关系。这种配额方式对于目录层级比较深的目录,很难做到及时更新目录配额的统计量,进而导致容易出现对象个数写超的现象,无法实现精准配额。


技术实现要素:

4.本发明的目的是提供一种分布式文件系统的配额方法及相关组件,对于目录层级比较深的目录也可以及时更新目录配额的使用情况,保证各个层级目录均不会超出配额,使得配额管理更加精确。
5.为解决上述技术问题,本发明提供了一种分布式文件系统的配额方法,所述分布式文件系统包括元数据服务端和客户端,所述配额方法包括:
6.当检测到目标目录有对象写入时,所述客户端判断是否存在所述目标目录或者所述目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量;
7.若是,则禁止所述对象写入至所述目标目录;
8.若否,则允许所述对象写入至所述目标目录,并将所述目标目录及所述目标目录的各上级目录的可用配额的数量均减去所述对象的数量后的数量作为各目录的新的可用配额的数量,并将各目录的新的可用配额的数量上报至所述元数据服务端。
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.图1为本发明提供的一种分布式文件系统的配额方法的流程图;
39.图2为本发明提供的一种分布式文件系统的结构图;
40.图3为本发明提供的一种分布式文件系统的配额装置的结构图;
41.图4为本发明提供的一种分布式文件系统的配额设备的结构图。
具体实施方式
42.本发明的核心是提供一种分布式文件系统的配额方法及相关组件,对于目录层级比较深的目录也可以及时更新目录配额的使用情况,保证各个层级目录均不会超出配额,使得配额管理更加精确。
43.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.为了帮助更好地理解本发明实施例提供的方案,在介绍本技术实施例提供的方法之前,先介绍本发明实施例方案的应用的场景。
45.分布式存储系统的文件系统包括客户端和元数据服务端,一个元数据服务端通常对应多个客户端。在分布式文件系统上,可以为目录设置配额,被设置了配额的目录具有其规定的可用配额,目录的可用配额会标记在目录的扩展属性中,以及发送至每个客户端及云数据服务端中,以便通过客户端和云数据服务端均可以了解分布式文件系统中目录配额的信息,并通过客户端与元数据服务端交互实现对象的创建、修改和删除等操作。
46.在向客户端中写入对象时,可以占用对象写入的目录的可用配额,即使可用配额的数量减小,例如在一个规定可用配额的数量为100的目录中写入数量为70的对象,这时目录的可用配额将会减小,可用配额的数量则为30。
47.需要说明的是,本发明实施例中提到的目录具有多层级的特点,也即一个目录可以多个层级的目录。
48.请参考图1,图1为本发明提供的一种分布式文件系统的配额方法的流程图,分布式文件系统包括元数据服务端和客户端,配额方法包括:
49.s101:当检测到目标目录有对象写入时,客户端判断是否存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量,若是,进入s102;否则,进入s103;
50.s102:禁止对象写入至目标目录;
51.s103:允许对象写入至目标目录,并将目标目录及目标目录的各上级目录的可用配额的数量均减去对象的数量后的数量作为各目录的新的可用配额的数量,并将各目录的新的可用配额的数量上报至元数据服务端。
52.分布式存储系统的文件系统包括客户端和元数据服务端,写对象时是客户端写对象,在向设置了配额的目标目录下写对象时,本技术实施例提供的技术方案,客户端查询目标目录的可用配额的数量,并逐级向上追溯目标目录的各上级目录的可用配额的数量。
53.当查询的任一目录的可用配额的数量小于需要写入的对象的数量,禁止对象写入目标目录;反之允许对象写入目标目录,目录的配额统计信息会逐层更新到各层上级目录的配额统计信息中,将各个目录最新的配额信息上报到元数据服务端。至此,配额过程结束。
54.例如,客户端需要写入对象时,需要查询目标目录及逐级查询目标目录的各上级目录的可用配额的数量,判断是否存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量。如果有一个上层目录的可用配额数量小于需要写入对象的数量,则进入s102。只有当目标目录及目标目录的所有上级目录的可用配额的数量均大于需要写入对象的数量时,才进入s103。例如目标目录的父目录的可用配额的数量大于等于需要写入的对象的数量,但是目标目录的祖父目录的可用配额的数量小于需要写入的对象的数量,则进入s102。
55.需要说明的是,本实施例并不限制写入对象的具体形式,例如可以为文件,或者可以为在目标目录下新建的目录,或者可以为从其他目录中移动到所述目标目录中的目录,或者可以为其他对象,本实施例中将目录也当作一个文件在目录文件个数嵌套配额中进行统计。
56.本实施例中若存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量,则禁止对象写入至目标目录。本实施例中并不对禁止对象写入至目标目录的具体操作进行限定。例如可以是禁止全部的对象写入至目标目录;也可以是禁止对象写入至目标目录的同时,给出提示信息,以便确定是否需要仅写入可用配额个数对应的对象;当然也可以是禁止写入超出当前的可用配额的对象。
57.在将各目录的新的可用配额的数量上报至元数据服务端后,也可以向元数据服务端上报其他信息,例如可以上报新的已用配额的数量,可以根据实际情况进行设定。
58.本实施例提供的一种分布式文件系统的配额方法及相关组件,当检测到目标目录有对象写入时,所述客户端判断是否存在所述目标目录或者所述目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量,通过逐级校验了各目录的可用配额的数量,对于目录层级比较深的目录也可以及时更新目录配额的使用情况;在各目录的可用配额的数量均不小于需要写入的对象的数量时才允许对象写入目标目录,可以保证各个层级目录均不会超出配额;同时可以及时上报各层上级目录的配额信息,使得配额管理更加精确。
59.在上述实施例的基础上:
60.作为一种优选地实施例,在将各目录的新的可用配额的数量上报至元数据服务端之前,还包括:
61.向元数据服务端发送可用配额的数量的更新请求,更新请求包括各目录的新的可
用配额的数量;
62.判断是否在预设时间段内接收到元数据服务端返回的成功响应消息;
63.若是,则进入将各目录的新的可用配额的数量更新至元数据服务端的步骤;
64.若否,则删除写入至目标目录的对象,并将各目录的新的可用配额的数量恢复至对象写入前的状态。
65.本实施例并不对更新请求的格式和所包含的具体内容进行限定,由于元数据服务端需要判断该请求对应的各目录是否能够支持本次可用配额的数量的更新,因此,元数据服务端至少需要确定更新请求对应的目录的属性信息,进而可以在得到属性信息后判断其是否能够更新至新的可用配额的数量。
66.需要说明的是,在预设时间段内未接收到元数据服务端返回的成功响应消息的情况,可以是收到元数据服务端返回的失败响应消息,可以是由于客户端与元数据服务端之间的通信连接出现断连等问题导致更新请求发送失败或者响应消息返回失败,也可以是客户端或元数据服务端出现硬件问题导致通信出现问题,也可以是其他情况。
67.本实施例通过向元数据服务端发送可用配额的数量的更新请求,来对可用配额的数量的更新进行检测,进一步保证各个层级目录均不会超出配额;同时通过客户端和元数据服务端的交互,使得配额管理更加精确可靠。
68.作为一种优选地实施例,在检测到目标目录有对象写入之后,还包括:
69.判断是否存在目标目录或者目标目录的各上级目录的软阈值小于需要写入的对象的数量的数量值,软阈值小于可用配额的数量值;
70.若是,生成并显示即将超额提示信息;
71.若否,返回判断是否存在目标目录或者目标目录的各上级目录的软阈值小于需要写入的对象的数量的数量值的步骤。
72.本实施例中通过设置小于可用配额的数量值同时接近小于可用配额的数量值的软阈值,使用户可以在达到软阈值时得到即将超额提示信息,根据即将超额提示信息得知即将超额,以便确定是否继续向目标目录中写入对象,使得用户对可用配额做到精准把控,方便写入过程的合理分配。
73.作为一种优选地实施例,对象包括文件和/或目录。
74.本实施例将目录也作为一个对象在目标目录的可用配额的数量中进行统计,方便统一管理的同时,也使得配额过程更加精确可靠。
75.作为一种优选地实施例,在将各目录的新的可用配额的数量上报至元数据服务端之后,还包括:
76.将各目录的新的已用配额的数量上报至元数据服务端。
77.作为一种优选地实施例,在禁止对象写入至目标目录之后,还包括:
78.生成并显示禁止写入提示信息。
79.本实施例通过生成并显示禁止写入提示信息来对用户做出提示,用户可以根据禁止写入提示信息得知因超额导致对象写入失败,方便用户操作。
80.作为一种优选地实施例,允许对象写入至目标目录之前,还包括:
81.客户端向元数据服务端发送对象写入请求;
82.元数据服务端接收到对象写入请求后,判断是否存在目标目录或者目标目录的各
上级目录的可用配额的数量小于需要写入的对象的数量需要写入的对象的数量;
83.若是,则向客户端返回拒绝写入消息,以便客户端禁止对象写入至目标目录;
84.若否,则向客户端返回允许写入消息,以便客户端进入允许对象写入至目标目录的步骤;根据客户端发送的各目录的新的可用配额的数量进行更新。
85.需要说明的是,在本实施例中,只有在通过元数据服务端的校验后,才会被真正写入目标目录中,当未经过元数据服务端的校验时,对象并不是真正写在目标目录中,对象可以被临时存储在预设的临时目录中,若存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量需要写入的对象的数量,预设的临时目录中的数据将被清空。
86.本实施例通过元数据服务端对可用配额的数量及需要写入的对象的数量进行二次校验,以判断是否存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量需要写入的对象的数量,进一步确保不会出现超额的情况,使得配额过程更加准确。
87.请参考图2,图2为本发明提供的一种分布式文件系统的结构图,该分布式文件系统包括客户端201和元数据服务端202,客户端201包括配额嵌套接口211和结束流程接口212,本实施例提供的具体实施过程如下:
88.首先,采用c 高级语言完成dfs(distributed file system,分布式文件系统)的客户端201的功能描述,生成客户端201和元数据服务端202。然后,采用gcc(gnu compiler collection,gnu编译器套件)编译器对客户端201程序进行编译,生成可在处理器cpu(central processing unit,中央处理器)上执行的静态链接文件。最后,在使用我方的文件系统进行分区格式化之后,加载我方的文件系统接口供用户使用。
89.系统启动时,初始化分布式文件系统目录文件个数嵌套配额信息、目录嵌套配额信息等。对目标目录进行检查,若目标目录的可用配额的数量已经为0,则不允许用户向其中写入文件或在目标目录中新建目录;若目标目录为从其他目录中移动到所述目标目录的父目录中,则该其他目录为目标目录的源目录,也需要对源目录进行检查。
90.客户端201检测到有文件或目录新增时,调用配额嵌套配额接口211逐层处理配额,校验新增之后文件数量是否超过各个配额节点的最大限制值,即判断是否存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量,若存在,则禁止对象写入至目标目录;若不存在,则则允许用户新增文件或目录,客户端各配额节点可用文件个数减去1、已用文件个数加1,然后将各目录的新的可用配额的数量、新增文件量、配额使用量等消息组装并发送消息给元数据服务端202,由元数据服务端202进行消息处理。
91.元数据接收客户端201发来的新增文件或目录的消息,校验是否超过目录配额文件个数限制,若通过校验,则更新各配额节点现有文件数量、剩余可新增文件数量等,向客户端201返回成功响应消息;若未通过校验,则向客户端201返回失败响应消息。
92.若客户端201接收到元数据服务端202返回的成功响应消息,调用目录嵌套配额结束流程接口212,处理源目录和目标目录容量统计,并将处理结果上报给元数据服务端202;若客户端201未接收到元数据服务端202返回的成功响应消息,调用目录嵌套配额结束流程处理函数回滚嵌套配额信息,即将各目录的新的可用配额的数量恢复至所述对象写入前的
状态。
93.请参考图3,图3为本发明提供的一种分布式文件系统的配额装置的结构图,该配额装置应用于设置于分布式文件系统中的客户端,包括:
94.判断模块301,用于当检测到目标目录有对象写入时,客户端判断是否存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量;
95.禁止写入模块302,用于存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量时,禁止对象写入至目标目录;
96.成功写入模块303,用于不存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量时,允许对象写入至目标目录,并将目标目录及目标目录的各上级目录的可用配额的数量均减去对象的数量后的数量作为各目录的新的可用配额的数量,并将各目录的新的可用配额的数量上报至元数据服务端。
97.在上述实施例的基础上:
98.作为一种优选地实施例,成功写入模块303,还包括:
99.更新请求模块,用于向元数据服务端发送可用配额的数量的更新请求,更新请求包括各目录的新的可用配额的数量;
100.响应消息判断模块,用于判断是否在预设时间段内接收到元数据服务端返回的成功响应消息;
101.成功响应模块,用于在预设时间段内接收到元数据服务端返回的成功响应消息时,进入将各目录的新的可用配额的数量更新至元数据服务端的步骤;
102.失败响应模块,用于在预设时间段内未接收到元数据服务端返回的成功响应消息时,删除写入至目标目录的对象,并将各目录的新的可用配额的数量恢复至对象写入前的状态。
103.作为一种优选地实施例,判断模块301,还包括:
104.软阈值判断模块,用于判断是否存在目标目录或者目标目录的各上级目录的软阈值小于需要写入的对象的数量的数量值,软阈值小于可用配额的数量值;
105.超额提示模块,用于当存在目标目录或者目标目录的各上级目录的软阈值小于需要写入的对象的数量的数量值时,生成并显示即将超额提示信息;
106.返回判断模块,用于当不存在目标目录或者目标目录的各上级目录的软阈值小于需要写入的对象的数量的数量值时,返回判断是否存在目标目录或者目标目录的各上级目录的软阈值小于需要写入的对象的数量的数量值的步骤。
107.作为一种优选地实施例,成功写入模块303,还包括:
108.已用配额上报模块,用于将各目录的新的已用配额的数量上报至元数据服务端。
109.作为一种优选地实施例,禁止写入模块302,还包括:
110.禁止提示模块,用于生成并显示禁止写入提示信息。
111.作为一种优选地实施例,成功写入模块303,还包括:
112.写入请求模块,用于客户端向元数据服务端发送对象写入请求;
113.二次判断模块,用于元数据服务端接收到对象写入请求后,判断是否存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量需要写入的对象的数量;
114.拒绝写入模块,当存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量需要写入的对象的数量时,向客户端返回拒绝写入消息,以便客户端禁止对象写入至目标目录;
115.允许写入模块,当不存在目标目录或者目标目录的各上级目录的可用配额的数量小于需要写入的对象的数量需要写入的对象的数量时,向客户端返回允许写入消息,以便客户端进入允许对象写入至目标目录的步骤;根据客户端发送的各目录的新的可用配额的数量进行更新。
116.请参考图4,图4为本发明提供的一种分布式文件系统的配额设备的结构图,该配额设备包括:
117.存储器42,用于存储计算机程序421;
118.处理器41,用于执行计算机程序421时实现如上述的分布式文件系统的配额方法的步骤。
119.本发明还提供了一种计算机可读存储介质,目标计算机可读存储介质上储存有计算机程序,目标计算机程序被处理器执行时实现如上述的分布式文件系统的配额方法的步骤。
120.需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
121.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献