文件管理系统、文件管理方法、电子设备和存储介质与流程

文档序号:26532313发布日期:2021-09-04 12:11阅读:164来源:国知局
文件管理系统、文件管理方法、电子设备和存储介质与流程

1.本公开的实施例涉及一种文件管理系统、文件管理方法、电子设备和计算机可读存储介质。


背景技术:

2.分布式文件系统(distributed file system,dfs)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(例如可简单地理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。 dfs为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。


技术实现要素:

3.本公开至少一实施例提供一种文件管理系统,包括:文件操作单元、第一元数据处理单元和第二元数据处理单元;所述文件操作单元配置为可创建多个目录,且配置为在所述多个目录的至少一个目录中执行文件处理操作;所述第一元数据处理单元配置为响应于所述文件处理操作获取所述至少一个目录的元数据信息,以提供元数据服务;所述第二元数据处理单元配置为,从所述元数据服务,接收所述第一元数据处理单元获取的所述至少一个目录的元数据信息,并基于所述至少一个目录的元数据信息管理所述多个目录的至少一个配额统计数据。
4.例如,在本公开至少一实施例提供的文件管理系统中,所述第一元数据处理单元和所述第二元数据处理单元在操作服务上相互独立。
5.例如,在本公开至少一实施例提供的文件管理系统中,所述元数据信息包括文件的属性和目录的属性,其中,所述文件的属性包括文件的大小,所述目录的属性包括文件的数量。
6.例如,在本公开至少一实施例提供的文件管理系统中,所述第二元数据处理单元配置为维护对应于所述多个目录的目录树,并且所述第二元数据处理单元还配置为,基于所述至少一个目录的元数据信息在所述目录树中遍历更新包含所述至少一个目录的各个目录的元数据信息,以更新所述目录树的配额统计数据,以用于管理所述多个目录的至少一个配额统计数据。
7.例如,在本公开至少一实施例提供的文件管理系统中,所述第二元数据处理单元还配置为定时向所述文件操作单元发送所述目录树更新后的配额统计数据;所述文件操作单元接收并存储所述目录树更新后的配额统计数据,且配置为当在一个目录下执行所述文件处理操作时,基于所述目录树更新后的配额统计数据和该目录的配额信息判断该目录是否可以实现所述文件处理操作。
8.例如,在本公开至少一实施例提供的文件管理系统中,所述第二元数据处理单元还配置为定期存储所述目录树的配额统计数据至存储装置。
9.例如,在本公开至少一实施例提供的文件管理系统中,所述第二元数据处理单元还配置为在对于所述第二元数据处理单元进行数据恢复时,从所述存储装置中读取恢复点之前的配额统计数据以恢复所述目录树的配额统计数据并进行修正。
10.例如,在本公开至少一实施例提供的文件管理系统中,所述第二元数据处理单元还配置为定期从所述第一元数据处理单元加载所述多个目录的所有元数据信息,以对所述目录树的配额统计数据进行修正和更新。
11.例如,在本公开至少一实施例提供的文件管理系统中,所述第二元数据处理单元还配置为基于所述目录树的配额统计数据,更新用户的配额统计数据或用户组的配额统计数据。
12.例如,在本公开至少一实施例提供的文件管理系统中,所述文件操作单元响应于至少一个用户或用户组的登录操作以及所述至少一个用户或用户组的文件操作指令在所述至少一个目录中执行所述文件处理操作;所述第一元数据处理单元配置为响应于所述文件处理操作获取所述至少一个用户或用户组在所述至少一个目录下的元数据信息;所述第二元数据处理单元配置为接收所述第一元数据处理单元获取的所述至少一个用户或用户组在所述至少一个目录下的元数据信息,并基于所述至少一个用户或用户组在所述至少一个目录下的元数据信息,遍历更新所述至少一个用户或用户组在其他目录下的元数据信息,其中,所述至少一个目录隶属于所述其他目录,以更新所述用户的配额统计数据或所述用户组的配额统计数据。
13.本公开至少一实施例还提供一种文件管理方法,包括:通过文件操作单元创建多个目录,且在所述多个目录的至少一个目录中执行文件处理操作;响应于所述文件处理操作,获取所述至少一个目录的元数据信息,以提供元数据服务;从所述元数据服务,接收所获取的所述至少一个目录的元数据信息,并且基于所获取的所述至少一个目录的元数据信息管理所述多个目录的至少一个配额统计数据。
14.例如,在本公开至少一实施例提供的文件管理方法中,所述获取所述至少一个目录的元数据信息,和所述基于所述至少一个目录的元数据信息管理所述多个目录的至少一个配额统计数据,分别通过相互独立的进程执行,或分别通过相互独立的线程执行。
15.例如,本公开至少一实施例提供的文件管理方法,还包括:维护对应于所述多个目录的目录树;基于所述至少一个目录的元数据信息管理所述多个目录的至少一个配额统计数据,包括:基于所述至少一个目录的元数据信息在所述目录树中遍历更新包含所述至少一个目录的各个目录的元数据信息,以更新所述目录树的配额统计数据,以用于管理所述多个目录的至少一个配额统计数据。
16.例如,本公开至少一实施例提供的文件管理方法,还包括:定时向所述文件操作单元发送所述目录树更新后的配额统计数据;通过所述文件操作单元接收并存储所述目录树更新后的配额统计数据,且在当在一个目录下执行所述文件处理操作时,基于所述目录树更新后的配额统计数据和该目录的配额信息判断该目录是否可以实现所述文件处理操作。
17.例如,本公开至少一实施例提供的文件管理方法,还包括:定期存储所述目录树的配额统计数据至存储装置。
18.例如,本公开至少一实施例提供的文件管理方法,还包括:在进行数据恢复时,从所述存储装置中读取恢复点之前的配额统计数据以恢复所述目录树的配额统计数据并进
行修正。
19.例如,本公开至少一实施例提供的文件管理方法,还包括:加载所述多个目录的配额统计数据,以对所述目录树的配额统计数据进行修正和更新。
20.例如,本公开至少一实施例提供的文件管理方法,还包括:基于所述目录树的配额统计数据,更新用户的配额统计数据或用户组的配额统计数据。
21.例如,在本公开至少一实施例提供的文件管理方法中,所述文件操作单元响应于至少一个用户或用户组的登录操作以及所述至少一个用户或用户组的文件操作指令在所述至少一个目录中执行所述文件处理操作;响应于所述文件处理操作获取所述至少一个用户或用户组在所述至少一个目录下的元数据信息;接收所述至少一个用户或用户组在所述至少一个目录下的元数据信息,并基于所述至少一个用户或用户组在所述至少一个目录下的元数据信息遍历更新所述至少一个用户或用户组在其他目录下的元数据信息,其中,所述至少一个目录隶属于所述其他目录,以更新所述用户的配额统计数据或所述用户组的配额统计数据。
22.本公开至少一实施例还提供一种电子设备,包括:处理器;存储器;一个或多个计算机程序模块;所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于执行实现本公开任一实施例提供的文件管理方法的指令。
23.本公开至少一实施例还提供一种计算机可读存储介质,非暂时性地存储计算机可读指令,当所述计算机可读指令由计算机执行时可以执行根据本公开任一实施例提供的文件管理方法。
附图说明
24.为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本发明的一些实施例,而非对本发明的限制。
25.图1为本公开至少一实施例提供的一种文件管理系统的示意图;图2a为本公开至少一实施例提供的一种目录树的示意图;图2b为本公开至少一实施例提供的另一种目录树的示意图;图3为本公开至少一实施例提供的另一种文件管理系统的示意图;图4为本公开至少一实施例提供的一种文件管理系统的运行环境示意图;图5为本公开至少一实施例提供的一种文件管理方法的流程图;图6为本公开至少一实施例提供的另一种文件管理方法的流程图;图7为本公开至少一实施例提供的一种电子设备的示意图;图8为本公开至少一实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
26.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.除非另外定义,本公开使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
28.在文件存储系统之中,为了合理有效地利用存储资源,需要适当的限制某些目录或者用户对存储资源的占用,因此产生了配额技术。配额技术可以对指定用户或者目录的资源使用情况进行监控和限制,防止资源过度占用对其他用户产生影响。配额技术广泛应用于存储系统或文件系统之中。从磁盘的配额到文件系统的配额,整条存储路径都会涉及配额相关的功能,应用场景十分广泛。
29.传统的文件系统配额通常在元数据服务(meta

data service,简称为mds)中实现,例如,ceph文件系统(ceph file system,简称为cephfs)的配额管理是内嵌于mds之中的。因此,在进行配额统计时会占用元数据服务的资源,在一定程度上会影响元数据服务的性能。
30.cephfs目前支持目录配额,可限制目录下写入的文件数量和容量,但是由于没有一个统一的uid/gid(user ientification/ group identification)机制,因此,基于用户和用户组的配额管理机制很难使用。cephfs的配额功能依赖于挂载它的客户端的合作,因此,cephfs中不支持用户配额和用户组配额。例如,在某一用户或用户组的配额达到上限时,需要停止客户端的写入,但是却无法阻止被篡改过的或者具有对抗性的客户端,它们可以想写多少就写多少;而且,在客户端完全不可信时,用配额来防止对应的用户或用户组多占空间是不可靠的。
31.又例如,xfs文件系统支持设置配额id(identification),可以对具有不同id的用户或用户组分别进行配额设置。同一个id可以关联不同的目录,例如文件系统内的有效目录均可,但是xfs文件系统不受目录的父子关系的限制,从而使得隶属于不同配额id的子目录的配额设置,不受其父目录配额的限制,因此,在xfs文件系统中,用户或用户组配额与目录配额的功能存在互斥,存在目录配额和用户配额不能同时配置的兼容性问题。
32.本公开至少一实施例提供一种文件管理系统,包括:文件操作单元、第一元数据处理单元和第二元数据处理单元;文件操作单元配置为可创建多个目录,且配置为在多个目录的至少一个目录中执行文件处理操作;第一元数据处理单元配置为响应于文件处理操作获取至少一个目录的元数据信息,以提供元数据服务;第二元数据处理单元配置为,从元数据服务,接收第一元数据处理单元获取的至少一个目录的元数据信息,并基于至少一个目录的元数据信息管理多个目录的至少一个配额统计数据。
33.本公开至少一实施例还提供一种对应于上述文件管理系统的文件管理方法。
34.本公开的至少一实施例提供的文件管理系统通过第一元数据处理单元和第二元数据处理单元分别实现元数据的统计(元数据服务)和多个目录的配额统计(配额服务),即
元数据服务和配额服务可异步独立进行,从而可以实现更高效的配额管理,提升配额功能的稳定性和独立性,且有助于提高客户端的吞吐能力。
35.下面结合附图对本公开的实施例及其一些示例进行详细说明。
36.本公开至少一实施例提供一种文件管理系统,可以用于对例如分布式文件存储系统的配额统计,例如,可以适合于在大规模分布式文件存储的应用场景,本公开的实施例对此不作限制。
37.图1为本公开至少一实施例提供的一种文件管理系统的示意图。图2a为本公开至少一实施例提供的一种目录树的示意图;图2b为本公开至少一实施例提供的另一种目录树的示意图。下面结合图1至图2b对本公开至少一实施例提供的文件管理系统进行详细地介绍。
38.如图1所示,该文件管理系统100包括文件操作单元110、第一元数据处理单元120和第二元数据处理单元130。
39.例如,文件操作单元110配置为可创建多个目录,且配置为在多个目录的至少一个目录中执行文件处理操作。
40.例如,该文件操作单元110可以是文件管理系统中的用户进程或线程,例如,在一些示例中,文件操作单元110可以是客户端设备的处理器开启的进程或线程,在另一些示例中,该文件操作单元110也可以是图4中所示的服务器13开启的进程或线程,只要可以用于实现客户端设备的文件处理操作即可,本公开的实施例对此不作限制。
41.例如,在一些示例中,实际的用户可以通过手机、桌面电脑、笔记本电脑等客户端设备登陆到文件管理系统中,由此可以通过文件操作单元110进行文件处理操作;例如,在另一些示例中,还可以通过应用程序等执行文件处理操作,只要能进行文件操作功能即可,本公开的实施例对此不作限制。
42.例如,在一些示例中,该文件操作单元110创建的目录以及目录下的文件、文件夹等可显示在客户端设备,因此,客户端设备的吞吐性能与该文件操作单元110创建文件的快慢、时延的长短等或单位时间内创建文件的数量等相关。
43.例如,文件操作单元110可创建如图2a所示的多个文件夹a1、b1、b2、b3,每个文件夹下可以包括多个文件夹或文件,例如,文件夹a1下包括子文件夹b1、b2、b3,子文件夹b1、b2、b3下进一步分别包括文件c1、c2、c3,从而每个文件夹可形成1个目录,例如,该多个目录形成例如如图2a所示的目录树。当然,根据文件夹个数的不同可形成不同的目录树,例如还可以创建如图2b所示的目录树,本公开的实施例对此不作限制。
44.需要注意的是,在本公开的实施例中,a1、b1、b2、b3既可用于表示文件夹,也可用于表示目录;b1、b2、b3既可表示文件夹,也可以表示目录a1下的文件,也可用于表示目录。
45.例如,文件操作单元110可在该多个目录的至少1个目录中执行文件处理操作,该文件处理操作例如包括文件夹的删除或创建等,或包括文件的创建、删除、修改等,本公开的实施例对此不作限制。
46.例如,文件操作单元110可在图2a所示的目录a1下执行文件删除操作,例如,删除目录a1下的目录b2和目录b2中的文件c2以得到图2b所示的目录树;或者,文件操作单元110可在图2b所示的目录a1下执行文件创建操作,从而创建目录b2,并在目录b2中的创建文件c2以得到图2a所示的目录树。
47.例如,第一元数据处理单元120配置为响应于文件处理操作获取至少一个目录的元数据信息,以提供元数据服务。
48.例如,元数据信息包括文件的属性和目录的属性,例如,文件的属性包括文件的大小(例如,字节数量)、占用空间、文件的创建时间、修改时间等,目录的属性包括文件的数量,例如其包含的文件或文件夹的数量等,本公开的实施例对此不作限制。例如,在一些示例中,该文件可以是存储有数据内容的word文档、幻灯片文档、pdf文档等,本公开的实施例对此不作限制。
49.例如,元数据服务可以包括对各个目录的元数据信息的统计或处理等。
50.例如,在一些示例中,文件操作单元110根据在一个目录下的文件处理操作向第一元数据处理单元120发送对应的元数据请求,以使得第一元数据处理单元120响应于该元数据请求对该目录下的元数据信息进行统计,以提供元数据服务。
51.例如,当文件操作单元110响应于用户的操作在图2b所示的目录a1下面创建文件夹b2时,第一元数据处理单元120可响应于文件操作单元110的元数据请求统计目录a1的当前文件夹个数(例如,3个)作为元数据信息;当文件操作单元110响应于用户的操作在图2b所示的目录b2下面创建文件c2时,第一元数据处理单元120可响应于文件操作单元110的元数据请求统计目录b2的当前文件个数(例如,1个)以及该文件c2的大小和创建时间等作为元数据信息。
52.例如,第二元数据处理单元130配置为,从上述元数据服务,接收第一元数据处理单元120获取的至少一个目录的元数据信息,并基于至少一个目录的元数据信息管理多个目录的至少一个配额统计数据。
53.例如,第二元数据处理单元130配置为维护对应于多个目录的目录树,并且第二元数据处理单元130还配置为,基于至少一个目录的元数据信息在目录树中遍历更新包含至少一个目录的各个目录的元数据信息,以更新目录树的配额统计数据,该配额统计数据用于管理多个目录的至少一个配额统计数据,以提供配额服务。
54.例如,在一些示例中,配额服务包括对目录树的配额统计数据的更新,还可以包括后续在一个目录下执行文件处理操作时,基于该配额统计数据和最大配额信息等判断该目录是否可以实现文件处理操作,即该目录下是否还可以创建文件夹或文件等,以根据判断信息执行对应的写入操作或提示不能写入的操作等,当然还可以包括其他的与配额统计数据相关的操作,本公开的实施例对此不作限制。关于文件处理操作的判断将在后面进行详细地描述,在此不再赘述。
55.例如,至少一个配额统计数据可以包括对文件数量、文件大小、针对不同用户的配额以及针对不同用户组的配额的统计数据等,例如,可以包括多个目录中每个目录的当前配额数据,也可以包括根据每个目录的配额信息(例如,每个目录的最大配额)和当前配额数据得到的该目录的剩余配额数据,本公开的实施例对此不作限制。例如,下面以配额统计数据为针对文件数量的统计数据为例进行说明。
56.例如,当第一元数据处理单元120响应于文件操作单元110的元数据请求统计到目录b2的当前文件个数由0变为1个时,第二元数据处理单元130从第一元数据处理单元120接收该元数据信息(即目录b2的当前文件个数(例如,1个)),并更新目录b2隶属的父目录a1的文件个数,例如,将目录a1的文件个数由原来的两个(c1和c3)更新为三个(c1、c2、c3),从而
基于目录b2更新了目录a1的配额统计数据;例如,假设目录b2的配额信息(即最大配额)为其下面包括的文件数量为2个,那么,基于当前该目录b2的配额统计数据(1个文件),其剩余配额数据为1个,即该目录b2还能允许写入文件的数量还剩1个,从而更新了目录b2的剩余配额数据,同时也可以基于目录b2更新目录a1的剩余配额数据,例如,该剩余配额数据也可以作为配额统计数据。
57.由此,该第二元数据处理单元130基于该目录b2的元数据信息在目录树中遍历更新包含目录b2的各个目录(例如,目录a1)的元数据信息,从而更新了目录树的配额统计数据,以用于管理多个目录的至少一个配额统计数据。
58.例如,第一元数据处理单元120和第二元数据处理单元130在操作服务上相互独立,分别通过文件管理系统中相互独立的计算机程序模块或单元实现,由此在文件管理系统中由相互独立的进程或线程执行,即,获取至少一个目录的元数据信息,以及基于所述至少一个目录的元数据信息管理多个目录的至少一个配额统计数据,分别通过相互独立的进程执行,或分别通过相互独立的线程执行。
59.例如,第一元数据处理单元120和第二元数据处理单元130可分别独立运行,具有各自的运行逻辑,互不影响,可以使得配额服务(例如,配额服务在这里以及后文的描述中指的是配额服务中的更新目录树的配额统计数据)可通过独立于第一元数据处理单元120的第二元数据处理单元130进行统一管理和更新,可以避免通过元数据服务器(即第一元数据处理单元120)实现该配额管理时会占用元数据服务的资源,由此避免了对元数据服务资源的占用,提高了元数据服务的性能。
60.例如,第一元数据处理单元120和第二元数据处理单元130可分别开启不同的进程或线程以实现上述各自的功能,二者可共享同一个服务器,也可分别具有各自的服务器,只要能够满足第一元数据处理单元120和第二元数据处理单元130可分别独立运行即可,本公开的实施例对此不作限制。
61.例如,第二元数据处理单元130可以实现为智能操作组件(intelligent operation aware,简称为ioa),支持配额管理,且独立于第一元数据处理单元120的元数据服务,具有文件管理系统中较高的扩展性。
62.例如,该ioa在内存中保持分布式文件存储系统的一棵完整的目录树(如图1所示的目录树),因此可以保存实时的目录/用户/用户组的配额统计信息(例如,已用容量和文件数量统计),文件操作单元110可以从该ioa获取实时的配额统计信息,为了提高与文件操作单元110相关的客户端设备的io(输入/输出,input/output)吞吐性能,文件操作单元110也可以采用异步的方式定期获取该ioa上的配额统计。例如,客户端设备的io吞吐性能可以包括创建文件的快慢、时延的长短等或单位时间内创建文件的数量等。
63.例如,该ioa的配额服务独立于第一元数据处理单元120的元数据服务单独实现,因此,一旦ioa的配额服务离线或者故障,第一元数据处理单元120的元数据的服务不会受到影响,也不会影响客户端设备的io吞吐性能,因此ioa的配额服务的独立性可以保证配额异常不会影响正常业务。例如,当ioa的配额服务恢复时,采用异步恢复(即ioa的恢复和元数据服务异步进行,互不影响)的方式,在元数据服务启动之后独立地加载,也不会对元数据服务造成冲击。
64.在本公开的实施例中,通过第一元数据处理单元120和第二元数据处理单元130分
别实现元数据的统计(元数据服务)和多个目录的配额统计数据的更新,即元数据服务和配额服务可异步独立进行,从而可以实现更高效的配额管理,且有助于提高客户端设备的吞吐能力。
65.例如,第二元数据处理单元130还配置为定时向一个或多个文件操作单元110发送目录树更新后的配额统计数据;对应的文件操作单元110接收并存储目录树更新后的配额统计数据,且配置为,当在一个目录下执行文件处理操作时,基于目录树更新后的配额统计数据和该目录的配额信息判断该目录是否可以实现文件处理操作。
66.例如,在该示例中,该配额服务中包括的在一个目录下执行文件处理操作时,基于该配额统计数据和最大配额信息等判断该目录是否可以实现文件处理操作,即该目录下是否还可以创建文件夹或文件等,以根据判断信息执行对应的写入操作或提示不能写入的操作等,可在文件操作单元110中的实现;当然还可以通过另外设置的文件管理单元实现,即该另设的文件管理单元可以接收并存储目录树更新后的配额统计数据,且配置为,当在一个目录下执行文件处理操作时,基于目录树更新后的配额统计数据和该目录的配额信息判断该目录是否可以实现文件处理操作,以根据判断信息执行对应的写入操作或提示不能写入的操作等,本公开的实施例对此不作限制。
67.例如,该另设的文件管理单元可以是图4所示的服务器开启的一个进程或线程,本公开的实施例对此不作限制。
68.下面以该配额服务中的配额判断过程在文件操作单元110中实现为例进行说明。
69.例如,第二元数据处理单元130每间隔10s(秒)向文件操作单元110发送目录树更新后的配额统计数据,例如,仅发送被更新的目录的配额统计数据,未被更新的目录的配额统计数据可以仍然保持不变,以减少数据传输量,从而提高数据传输速率。当然,还可以间隔更短或更长的时间,具体可根据用户对配额数据的敏感程度以及磁盘资源设置,本公开的实施例对此不作限制。
70.例如,以目录b2为例进行说明,假设目录b2的配额信息(即最大配额)为其下面包括的文件数量为2个,那么基于当前该目录b2的配额统计数据(1个文件),其剩余配额数据为1个,即目录b2还能允许写入文件的数量还剩1个。因此,当下次在目录b2下执行文件处理操作时,还可以实现文件的创建操作;当在目录b2中已创建2个文件,即目录b2的剩余配额数据为0个时,下次在目录b2下执行文件处理操作时,便不能在实现文件的创建操作,因为已经达到了目录b2的最大配额,从而实现对目录资源的使用监控和限制。
71.例如,基于更新的目录b2的配额统计数据还可以更新其父目录a1的配额统计数据,同时也可以确定目录a1的剩余配额数据,以判断该目录a1是否可以实现文件处理操作。当目录a1中的文件(例如,存在于目录b1、b2、b3中的文件和直接存在于目录a1下的文件均属于目录a1中的文件)数量达到目录a1的最大配额时,便不可以实现目录a1下的文件的创建。
72.例如,如图1所示,第二元数据处理单元130独立地管理配额信息,某一客户端设备向文件操作单元110发送文件操作指令(例如,文件的创建或删除等),文件操作单元110基于文件操作指令执行相应的文件处理操作,同时向第一元数据处理单元120发送元数据请求,第一元数据处理单元120响应于元数据请求管理在文件操作单元110发生文件处理操作的目录的元数据信息,并基于元数据信息产生的元数据变化以生成新的元数据信息,并将
该新的元数据信息实时同步到第二元数据处理单元130中;第二元数据处理单元130内部会独立更新目录的配额统计。当文件操作单元110由客户端设备开启的进程实现时,客户端设备可以定时与第二元数据处理单元130通信以更新自身缓存的配额统计数据。由于目录的最大配额、更新后的配额统计数据或者剩余配额数据均存储在客户端设备的存储单元(例如,缓存)中,因此,当客户端设备发生io请求(即要对一个目录进行文件处理操作)时,文件操作单元110可以独立进行配额判断(是否有剩余配额允许该文件处理操作执行),因此不会再次产生额外的通信,即不需要客户端设备再和第二元数据处理单元130通信以调取配额统计数据以供文件操作单元110使用,仅依赖其自身缓存中存储的数据(例如目录的最大配额、更新后的配额统计数据或者剩余配额数据)即可,因此本公开的配额管理方式可以提高客户端设备的io吞吐性能。
73.图3为本公开至少一实施例提供的另一种文件管理系统的示意图。
74.例如,如图3所示,第二元数据处理单元130还配置为定期存储目录树的配额统计数据至存储装置140,例如定期将配额统计数据通过数据库软件150写入到存储装置140中。
75.例如,该数据库软件150可以是与快速存储器(例如闪存)的存储数据性能相当的数据库软件,以应对高负载服务。例如,该数据库软件150可以是lsm(log

structed

merge

tree)数据库,例如可以是rocksdb,当然还可以实现为其他数据库软件,本公开的实施例对此不作限制。
76.例如,第二元数据处理单元130还配置为在对于第二元数据处理单元130进行数据恢复时,从存储装置140中读取恢复点之前的配额统计数据以恢复目录树的配额统计数据并进行修正,以实现配额统计数据的持久化。
77.例如,可以定期进行数据恢复,以提高目录树的配额统计数据的准确性;还可以在发生故障后进行数据恢复,以从存储装置140中读取恢复点之前的配额统计信息以恢复目录树的配额统计信息并进行修正。例如,该恢复点可以是故障发生时的时间点,从而将保证恢复的数据的准确性。
78.分布式系统中节点故障、网络故障不可避免,因此第二元数据处理单元130(例如,以ioa实现,提供配额服务(例如,配额服务在这里以及后面的描述中指的是配额服务中的更新目录树的配额统计数据))的故障也是随时可能发生。为了保证数据的可靠性,配额服务恢复之后及时向文件操作单元110提供配额统计数据,例如定期将配额统计数据通过例如rocksdb写入到存储装置140中。例如,存储装置140包括位于持久化层的至少一个磁盘(例如可以为磁性存储介质或半导体存储介质),当然,还可以包括其他可存储的设备,本公开的实施例对此不作限制。
79.由于,将第二元数据处理单元130中的配额统计数据写入数据库会占用磁盘资源和带宽资源,因此本公开的实施例采用异步定时的方式实现数据的存储。例如,由于配额统计数据是定期存储的,不是实时进行,因此在配额统计数据写入磁盘时和发生故障的时间点中间可能存在窗口期,这个窗口期中的配额数据会在发生故障时会丢失,可丢失的数据可在ioa故障恢复之后恢复,从而可以尽可能早的为文件操作单元110提供配额服务。
80.例如,配额服务恢复之后,会从磁盘中读取数据,恢复到例如故障前的状态。读取磁盘的数据成功之后,配额服务即可立刻执行,而配额统计数据的修正会在后台进行,如此处理,既实现了配额服务的时效性,又兼顾了配额服务的准确性。
81.本公开至少一实施例提供的文件管理系统适应分布式存储环境,而分布式系统中网络故障可能时常出现,第一元数据处理单元120与第二元数据处理单元130的通信也可能会发生故障,为了不影响元数据服务的性能,本公开的实施例采取尽力而为的通信方式,因此可能带来一定准确性的误差,为尽可能降低配额误差,第二元数据处理单元130会定期向第一元数据处理单元120加载目录统计信息,用以修正自身的配额统计数据。
82.例如,在一些示例中,第二元数据处理单元130还配置为定期从第一元数据处理单元120加载多个目录的所有元数据信息,以对目录树的配额统计数据进行修正和更新,从而可以有效保证配额统计数据在各个场景下(例如,故障场景下)的数据的准确性。
83.例如,采用如下两种方式维护配额服务中的配额统计数据的更新:第一元数据处理单元120实时向第二元数据处理单元130推送元数据变化(即元数据信息)和第二元数据处理单元130定期从第一元数据处理单元120中获取目录全量信息(即,每个目录下文件的统计信息,即每个目录的元数据信息)。
84.由于分布式系统网络故障、节点故障、服务故障的不可避免性,第二元数据处理单元130中配额信息以及配额统计数据等可能产生一定程度的偏差,然而长期的偏差会影响客户的体验,因此必须通过某种手段进行数据的修正。
85.在至少一个示例中,采取的方式是通过第二元数据处理单元130定期从第一元数据处理单元120获取目录树的统计信息(即目录树的元数据信息),以对目录树的配额统计信息进行替换和更新,从而有效保证第二元数据处理单元130中配额统计数据的准确性。这个过程是在后台进行的,不影响客户端设备的io吞吐性能,也不会影响元数据服务和配额服务的数据交互和独立运行。
86.因此,当分布式文件存储系统中的元数据发生变化时,元数据服务向配额服务推送变化可以保证第二元数据处理单元130的配额统计的实时性,第二元数据处理单元130定期从第一元数据处理单元120获取目前全量的元数据统计(即全部目录的元数据信息),可以有效保证第二元数据处理单元130中配额统计数据的准确性。
87.例如,第二元数据处理单元130还配置为基于目录树的配额统计数据,更新用户的配额统计数据或用户组的配额统计数据。
88.例如,文件操作单元110响应于至少一个用户或用户组的文件操作指令在至少一个目录中执行所述文件处理操作。
89.第一元数据处理单元120配置为响应于文件处理操作获取至少一个用户或用户组在至少一个目录下的元数据信息;第二元数据处理单元130配置为接收第一元数据处理单元120获取的至少一个用户或用户组在至少一个目录下的元数据信息,并基于至少一个用户或用户组在至少一个目录下的元数据信息,遍历更新至少一个用户或用户组在其他目录下的元数据信息。例如,至少一个目录隶属于其他目录,以更新用户的配额统计数据或用户组的配额统计数据。
90.例如,用户配额是指针对用户个人的配额,而用户组配额是指针对整个用户组的配额。如果限制的用户数量不多,则可以单独给每个用户指定配额。如果用户较多,则可以把用户加入某个用户组,然后给该用户组指定统一的配额。例如,用户组中的各个用户是共享空间或文件数的,先到先得。
91.例如,不同用户或用户组可通过不同的账号密码登录文件管理系统,以通过文件
操作单元110在对应的目录下进行文件处理操作,并根据该文件处理操作,在第一元数据处理单元120中统计该用户或用户组在该目录下的元数据信息,并将统计的元数据信息实时发送给第二元数据处理单元130,第二元数据处理单元130基于该用户或用户组在该目录下的元数据信息,遍历更新目录树中该用户或用户组的配额统计信息,从而可以实现对用户配额以及用户组配额的配额服务。
92.例如,独立的配额服务架构(例如,第二元数据处理单元130)可以支持配额的统一管理,本公开实施例提出的文件管理方式不止可以支持常用的目录配额,还可以支持用户配额以及用户组配额,因此不存在cephfs中不支持用户配额的情况,也不存在xfs文件系统中目录配额和用户配额不能同时配置的兼容性问题。
93.图4为本公开至少一实施例提供的一种文件管理系统的运行环境示意图。如图4所示,该文件管理系统10的运行环境中可以包括客户端设备11、网络12、服务器13以及数据库14。在一些实现方式中,服务器13可以利用服务器内置的应用程序实现该文件管理系统。在另一些实现方式中,服务器13可以通过调用服务器13外部存储的应用程序实现该文件管理系统10,本公开的实施例对此不作限制。
94.客户端设备11可以是例如图4中示出的电脑、手机等。可以理解的是,客户端设备11可以是能够执行文件处理操作的任何其他类型的电子设备,其可以包括但不限于台式电脑、笔记本电脑、平板电脑、智能手机、智能家居设备、可穿戴设备、车载电子设备、监控设备等。客户端设备也可以是设置有电子设备的任何装备,例如车辆、机器人等。
95.用户可以通过账号密码通过客户端设备11登陆到文件管理系统,并通过文件管理系统在各个目录下执行文件处理操作。例如,客户端设备11可以包括触摸屏,因此用户可以用手指直接点击屏幕以使得文件管理系统响应于该点击操作执行文件处理操作。例如,客户端设备11也可以包括鼠标,因此用户利用鼠标点击屏幕以使得文件管理系统响应于该点击操作执行文件处理操作。
96.例如,客户端设备11通过网络12将用户行为数据(即文件处理操作)传输给服务器13中的第一元数据处理单元120,第一元数据处理单元120响应于文件处理操作获取至少一个目录的元数据信息,以提供元数据服务;第二元数据处理单元130从元数据服务,接收第一元数据处理单元120获取的至少一个目录的元数据信息,并基于至少一个目录的元数据信息管理多个目录的至少一个配额统计数据。客户端设备11还可以通过网络12接收服务器13传输的数据。服务器13可以通过运行不同的子程序或不同的子线程的方式分别实现第一元数据处理单元120和第二元数据处理单元130的功能,例如,第一元数据处理单元120和第二元数据处理单元130可以是服务器13开启的相互独立的进程,也可以是服务器13开启的相互独立的线程,从而可以分别实现上述元服务和配额服务,互不影响。
97.在一些实现方式中,服务器13可以利用服务器内置的应用程序执行文件管理系统以及其中的元数据服务和配额服务。在另一些实现方式中,服务器13可以通过调用服务器13外部存储的应用程序执行元数据服务和配额服务。
98.网络12可以是单个网络,或至少两个不同网络的组合。例如,网络12可以包括但不限于局域网、广域网、公用网络、专用网络等中的一种或几种的组合。
99.该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(lan)和/或城域网(man)。无线通信可以使用多种通信标准、协议和技术中的任何一种,
包括但不局限于全球移动通信系统(gsm)、增强型数据gsm环境(edge)、宽带码分多址(w

cdma)、码分多址(cdma)、时分多址(tdma)、蓝牙、wi

fi(例如基于ieee 802. 11a、ieee 802. 11b、ieee 802. 11g和/或ieee 802. 11n标准)、基于因特网协议的语音传输(voip)、wi

max,用于电子邮件、即时消息传递和/或短消息服务(sms)的协议,或任何其他合适的通信协议。
100.在一些实施方式中,客户端设备11、服务器13可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
101.服务器13可以是一个单独的服务器,或一个服务器群组,群组内的各个服务器通过有线的或无线的网络进行连接,或可以是云服务器。一个服务器群组可以是集中式的,例如数据中心,也可以是分布式的。服务器13可以是本地的或远程的。
102.例如,当包括多个服务器时,可以通过一个服务器开启的进程实现第一元数据处理单元120的元数据服务功能,通过另一个服务器开启的进程实现第二元数据处理单元130的配额服务功能,从而可以实现元数据服务和配额服务可异步独立进行,从而可以实现高效的配额管理,提高客户端设备的吞吐能力。
103.例如,还可以通过又一个服务器开启的进程实现文件操作单元110,从而可以通过该进程创建多个目录,且在多个目录的至少一个目录中执行文件处理操作。
104.数据库14可以泛指具有存储功能的设备。数据库14主要用于存储从客户端设备11和服务器13工作中所利用、产生和输出的各种数据。例如,数据库14中存储多个目录的元数据信息、目录树的配额统计信息等,服务器13从数据库14中读取目录树的配额统计信息发送至第一元数据处理单元120和文件操作单元110,还可以实时读取发生文件处理操作的目录的元数据信息至第二元数据处理单元130,以实现目录树的配额管理。数据库14可以是本地的,或远程的。数据库14可以包括各种存储器、例如随机存取存储器(random access memory(ram))、只读存储器(read only memory(rom))等。以上提及的存储设备只是列举了一些例子,该系统可以使用的存储设备并不局限于此。
105.数据库14可以经由网络12与服务器13或其一部分相互连接或通信,或直接与服务器13相互连接或通信,或是上述两种方式的结合。
106.在一些实施例中,数据库14可以是独立的设备。在另一些实施例中,数据库14也可以集成在客户端设备11和服务器13中的至少一个中。例如,数据库14可以设置在客户端设备11上,也可以设置在服务器13上。又例如,数据库14也可以是分布式的,其一部分设置在客户端设备11上,另一部分设置在服务器13上。
107.本公开至少一实施例还提供一种文件管理方法,由例如图1所示的文件管理系统或图4所示的文件管理系统实现。图5为本公开至少一实施例提供的一种文件管理方法的流程图。例如,如图5所示,该文件管理方法包括步骤s110

步骤s130。
108.步骤s110:通过文件操作单元创建多个目录,且在多个目录的至少一个目录中执行文件处理操作;步骤s120:响应于文件处理操作,获取至少一个目录的元数据信息,以提供元数据
服务;步骤s130:从元数据服务,接收所获取的至少一个目录的元数据信息,并且基于所获取的至少一个目录的元数据信息管理多个目录的至少一个配额统计数据。
109.例如,从元数据服务接收所获取的至少一个目录的元数据信息以进行配额服务独立于元数据服务。
110.例如,步骤s120和步骤s130分别通过相互独立的进程执行,或者,步骤s120和步骤s130也可以分别通过相互独立的线程执行,从而使得元数据服务和配额服务可异步独立进行,从而可以实现高效的配额管理,提高客户端设备的吞吐能力。
111.对于步骤s110,例如,该文件操作单元110可以是文件管理系统中的用户进程或线程,例如,该用户进程或线程可以是独立于步骤s120和步骤s130的进程,以提高客户端设备的吞吐性能。
112.例如,在一些示例中,实际的用户可以通过手机、桌面电脑、笔记本电脑等设备登陆到文件管理系统中,由此可以通过文件管理系统中的文件操作单元110进行文件处理操作;例如,在另一些示例中,还可以通过应用程序等执行文件处理操作,只要能进行文件操作功能即可,本公开的实施例对此不作限制。
113.例如,在一些示例中,文件操作单元110可以是通过图4所示的服务器13开启的一个进程,从而可以通过该进程创建多个目录,且在多个目录的至少一个目录中执行文件处理操作。在另一些示例中,文件操作单元110可以是客户端设备的处理器开启的进程或线程,只要可以用于实现客户端设备的文件处理操作即可,本公开的实施例对此不作限制。
114.例如,文件操作单元110可创建如图2a所示的多个文件夹a1、b1、b2、b3,每个文件夹下可以包括多个文件夹或文件,例如,文件夹a1下包括子文件夹b1、b2、b3,子文件夹b1、b2、b3下分别包括文件c1、c2、c3,从而每个文件夹可形成为包含至少1个文件夹或文件的目录,例如,该多个目录形成例如如图2a所示的目录树,当然,根据文件夹个数的不同可形成不同的目录树,例如还可以形成如图2b所示的目录树,本公开的实施例对此不作限制。
115.需要注意的是,在本公开的实施例中,a1、b1、b2、b3既可用于表示文件夹,也可用于表示目录;b1、b2、b3既可表示文件夹,也可以表示目录a1下的文件,也可用于表示目录。
116.例如,文件操作单元110可在该多个目录的至少1个目录中执行文件处理操作,该文件处理操作例如包括文件夹的删除或创建等,或包括文件的创建、删除、修改等,本公开的实施例对此不作限制。
117.例如,文件操作单元110可在图2a所示的目录a1下执行文件删除操作,例如,删除目录a1下的目录b2和目录b2中的文件c2以得到图2b所示的目录树;或者,文件操作单元110可在图2b所示的目录a1下执行文件创建操作,从而创建目录b2,并在目录b2中的创建文件c2以得到图2a所示的目录树。
118.对于步骤s120,例如,该元数据服务通过第一元数据处理单元120实现。例如,元数据信息包括文件的属性和目录的属性,例如,文件的属性包括文件的大小(例如,字节数量)、占用空间、文件的创建时间、修改时间等,目录的属性包括文件的数量,例如其包含的文件或文件夹的数量等,本公开的实施例对此不作限制。例如,在一些示例中,该文件可以是存储有数据内容的word文档、幻灯片文档、pdf文档等,本公开的实施例对此不作限制。
119.例如,元数据服务可以包括对各个目录的元数据信息的统计或处理等。
120.例如,在一些示例中,文件操作单元110根据在一个目录下的文件处理操作向第一元数据处理单元120发送对应的元数据请求,以使得第一元数据处理单元120响应于该元数据请求对该目录下的元数据信息进行统计,以提供元数据服务。
121.例如,当文件操作单元110响应于用户的操作在图2b所示的目录a1下面创建文件夹b2时,第一元数据处理单元120可响应于文件操作单元110的元数据请求统计目录a1的当前文件夹个数(例如,3个)作为元数据信息;当文件操作单元110响应于用户的操作在图2b所示的目录b2下面创建文件c2时,第一元数据处理单元120可响应于文件操作单元110的元数据请求统计目录b2的当前文件个数(例如,1个)以及该文件c2的大小和创建时间等作为元数据信息。
122.对于步骤s130, 例如,至少一个配额统计数据可以包括对文件数量、文件大小、针对不同用户的配额以及针对不同用户组的配额的统计数据等,例如,可以包括多个目录中每个目录的当前配额数据,也可以包括根据每个目录的配额信息(例如,每个目录的最大配额)和当前配额数据得到的该目录的剩余配额数据,本公开的实施例对此不作限制。例如,下面以配额统计数据为针对文件数量的统计数据为例进行说明。
123.例如,在一些示例中,该文件管理方法还包括:维护对应于多个目录的目录树。在该示例中,步骤s130包括:基于至少一个目录的元数据信息在目录树中遍历更新包含至少一个目录的各个目录的元数据信息,以更新目录树的配额统计数据,以用于管理多个目录的至少一个配额统计数据。
124.例如,当第一元数据处理单元120响应于文件操作单元110的元数据请求统计到目录b2的当前文件个数由0变为1个(即元数据信息)时,第二元数据处理单元130从第一元数据处理单元120接收该元数据信息(即目录b2的当前文件个数(例如,1个)),并更新目录b2隶属的父目录a1的文件个数,例如,将目录a1的文件个数由原来的两个(c1和c3)更新为三个(c1、c2、c3),从而基于目录b2更新了目录a1的配额统计数据;例如,假设目录b2的配额信息(即最大配额)为其下面包括的文件数量为2个,那么,基于当前该目录b2的配额统计数据(1个文件),其剩余配额数据为1个,即该目录b2还能允许写入文件的数量还剩1个,从而更新了目录b2的剩余配额数据,同时也可以基于目录b2更新目录a1的剩余配额数据,例如,该剩余配额数据也可以作为配额统计数据。
125.由此,该步骤s130基于该目录b2的元数据信息在目录树中遍历更新包含目录b2的各个目录(例如,目录a1)的元数据信息,从而更新了目录树的配额统计数据,以用于管理多个目录的至少一个配额统计数据。
126.例如,该步骤s130中的配额服务(例如,配额服务在这里以及后文的描述中指的是配额服务中的更新目录树的配额统计数据)通过图1所示的第二元数据处理单元130实现,具体介绍可参考上述实施例中关于第二元数据处理单元130的介绍,在此不再赘述。
127.图6为本公开至少一实施例提供的另一种文件管理方法的流程图。如图6所示,在图5所示实施例的基础上,该文件管理方法还包括步骤s140

步骤s150。
128.步骤s140:定时向文件操作单元发送目录树更新后的配额统计数据。
129.例如,第二元数据处理单元130每间隔10s(秒)向一个或多个文件操作单元110发送目录树更新后的配额统计数据,例如,仅发送被更新的目录的配额统计数据,未被更新的目录的配额统计数据可以仍然保持不变,以减少数据传输量,从而提高数据传输速率。当
然,还可以间隔更短或更长的时间,具体可根据用户对配额数据的敏感程度以及磁盘资源设置,本公开的实施例对此不作限制。
130.步骤s150:通过文件操作单元接收并存储目录树更新后的配额统计数据,且在当在一个目录下执行文件处理操作时,基于目录树更新后的配额统计数据和该目录的配额信息判断该目录是否可以实现文件处理操作。
131.例如,在该示例中,该步骤150可在文件操作单元110中的实现;当然还可以通过另外设置的文件管理单元实现,即该另设的文件管理单元可以接收并存储目录树更新后的配额统计数据,且配置为,当在一个目录下执行文件处理操作时,基于目录树更新后的配额统计数据和该目录的配额信息判断该目录是否可以实现文件处理操作,以根据判断信息执行对应的写入操作或提示不能写入的操作等,本公开的实施例对此不作限制。
132.例如,该另设的文件管理单元可以是图4所示的服务器开启的一个进程或线程,本公开的实施例对此不作限制。
133.下面以该配额服务中的配额判断过程在文件操作单元110中实现为例进行说明。
134.例如,以目录b2为例进行说明,假设目录b2的配额信息(即最大配额)为其下面包括的文件数量为2个,那么,基于当前该目录b2的配额统计数据(1个文件),其剩余配额数据为1个,即目录b2还能允许写入文件的数量还剩1个。因此,当下次在目录b2下执行文件处理操作时,还可以实现文件的创建操作;当在目录b2中已创建2个文件,即目录b2的剩余配额数据为0个时,下次在目录b2下执行文件处理操作时,便不能在实现文件的创建操作,因为已经达到了目录b2的最大配额,从而实现对目录资源的使用监控和限制。
135.例如,基于更新的目录b2的配额统计数据还可以更新其父目录a1的配额统计数据,同时也可以确定目录a1的剩余配额数据,以判断该目录a1是否可以实现文件处理操作,当目录a1中的文件(例如,存在于目录b1、b2、b3中的文件和直接存在于目录a1下的文件均属于目录a1中的文件)数量达到目录a1的最大配额时,便不可以实现目录a1下的文件的创建。
136.当文件操作单元110由客户端设备开启的进程实现时,客户端设备可以定时与第二元数据处理单元130通信以更新自身缓存的配额统计数据。由于目录的最大配额、更新后的配额统计数据或者剩余配额数据均存储在客户端设备的存储单元(例如,缓存)中,因此,当客户端设备发生io请求(即要对一个目录进行文件处理操作)时,文件操作单元110可以独立进行配额判断(是否有剩余配额允许该文件处理操作执行),因此不会再次产生额外的通信,即不需要客户端设备再和第二元数据处理单元130通信以调取配额统计数据以供文件操作单元110使用,仅依赖其自身缓存中存储的数据(例如目录的最大配额、更新后的配额统计数据或者剩余配额数据)即可,因此本公开的配额管理方式可以提高客户端设备的io吞吐性能。
137.例如,在一些示例中,该文件管理方法还包括:定期存储目录树的配额统计数据至存储装置。
138.例如定期将配额统计数据通过数据库软件150(例如rocksdb)写入到存储装置140中。
139.例如,该数据库软件150可以是与快速存储器(例如闪存)的存储数据性能相当的数据库软件,以应对高负载服务。例如,该数据库软件150可以是lsm(log

structed

merge

tree)数据库,例如可以是rocksdb,当然还可以实现为其他数据库软件,本公开的实施例对此不作限制。
140.例如,在一些示例中,该文件管理方法,还包括:在进行数据恢复时,从存储装置中读取恢复点之前的配额统计数据以恢复目录树的配额统计数据并进行修正。
141.例如,可以定期进行数据恢复,以提高目录树的配额统计数据的准确性;还可以在发生故障后进行数据恢复,以从存储装置140中读取恢复点之前的配额统计信息以恢复目录树的配额统计信息并进行修正。例如,该恢复点可以是故障发生时的时间点,从而将保证恢复的数据的准确性。
142.分布式系统中节点故障、网络故障不可避免,因此第二元数据处理单元130(例如,以ioa实现,提供配额服务(例如,配额服务在这里以及后面的描述中指的是配额服务中的更新目录树的配额统计数据))的故障也是随时可能发生。为了保证数据的可靠性,配额服务恢复之后及时向文件操作单元110提供配额统计数据,例如定期将配额统计数据通过例如rocksdb写入到存储装置140中。例如,存储装置140包括位于持久化层的至少一个磁盘(例如可以为磁性存储介质或半导体存储介质),当然,还可以包括其他可存储的设备,本公开的实施例对此不作限制。
143.由于,将第二元数据处理单元130中的配额统计数据写入数据库会占用磁盘资源和带宽资源,因此本公开的实施例采用异步定时的方式实现数据的存储。例如,由于配额统计数据是定期存储的,不是实时进行,因此在配额统计数据写入磁盘时和发生故障的时间点中间可能存在窗口期,这个窗口期中的配额数据会在发生故障时会丢失,可丢失的数据可在ioa故障恢复之后恢复,从而可以尽可能早的为文件操作单元110提供配额服务。
144.例如,配额服务恢复之后,会从磁盘中读取数据,恢复到例如故障前的状态。读取磁盘的数据成功之后,配额服务即可立刻执行,而配额统计数据的修正会在后台进行,如此处理,既实现了配额服务的时效性,又兼顾了配额服务的准确性。
145.例如,在一些示例中,该文件管理方法还包括:加载多个目录的配额统计数据,以对目录树的配额统计数据进行修正和更新。
146.例如,定期加载多个目录的配额统计数据,以对目录树的配额统计数据进行修正和更新。加载数据的间隔时间可根据实际情况而定,本公开的实施例对此不作限制。
147.例如,采用如下两种方式维护配额服务中的配额统计数据的更新:第一元数据处理单元120实时向第二元数据处理单元130推送元数据变化(即元数据信息)和第二元数据处理单元130定期从第一元数据处理单元120中获取目录全量信息(即,每个目录下文件的统计信息,即每个目录的元数据信息)。
148.由于分布式系统网络故障、节点故障、服务故障的不可避免性,第二元数据处理单元130中配额信息以及配额统计数据等可能产生一定程度的偏差,然而长期的偏差会影响客户的体验,因此必须通过某种手段进行数据的修正。
149.在至少一个示例中,采取的方式是定期获取目录树的统计信息(即目录树的元数据信息)对目录树的配额统计信息进行替换和更新,从而有效保证配额统计数据的准确性。这个过程是在后台进行的,不影响客户端设备的io吞吐,也不会影响元数据服务和配额服务的数据交互和独立运行。
150.因此,当分布式文件存储系统中的元数据发生变化时,元数据服务向配额服务推
送变化可以保证第二元数据处理单元130的配额统计的实时性,第二元数据处理单元130定期从第一元数据处理单元120获取目前全量的元数据统计(即全部目录的元数据信息),可以有效保证第二元数据处理单元130中配额统计数据的准确性。
151.例如,在一些示例中,该文件管理方法,还包括:基于目录树的配额统计数据,更新用户的配额统计数据或用户组的配额统计数据。
152.例如,文件操作单元110响应于至少一个用户或用户组的文件操作指令在至少一个目录中执行所述文件处理操作;响应于文件处理操作获取至少一个用户或用户组在至少一个目录下的元数据信息;接收至少一个用户或用户组在至少一个目录下的元数据信息,并基于至少一个用户或用户组在至少一个目录下的元数据信息遍历更新至少一个用户或用户组在其他目录下的元数据信息。
153.例如,至少一个目录隶属于其他目录,以更新用户的配额统计数据或用户组的配额统计数据。
154.例如,用户配额是指针对用户个人的配额,而用户组配额是指针对整个用户组的配额。如果限制的用户数量不多,则可以单独给每个用户指定配额。如果用户较多,则可以把用户加入某个用户组,然后给该用户组指定统一的配额。例如,用户组中的各个用户是共享空间或文件数的,先到先得。
155.例如,不同用户或用户组可通过不同的账号密码登录文件管理系统,以通过文件操作单元110在对应的目录下进行文件处理操作,并根据该文件处理操作,在步骤s120中统计该用户或用户组在该目录下的元数据信息,并通过步骤s130实时接收统计的元数据信息,且基于该用户或用户组在该目录下的元数据信息,遍历更新目录树中该用户或用户组的配额统计信息,从而可以实现对用户配额以及用户组配额的配额服务。
156.例如,独立的配额服务架构可以支持配额的统一管理,本公开实施例提出的文件管理方式不止可以支持常用的目录配额,还可以支持用户配额以及用户组配额,因此不存在cephfs中不支持用户配额的情况,也不存在xfs文件系统中目录配额和用户配额不能同时配置的兼容性问题。
157.关于该文件管理方法的具体介绍可参考上述实施例中关于文件管理系统的相关描述,在此不再赘述。
158.本公开的实施例提供的文件管理方法的技术效果可以参考上述实施例中关于文件管理系统的相应描述,这里不再赘述。
159.图7为本公开至少一实施例提供的一种电子设备的示意框图。例如,如图7所示,该电子设备200包括处理器210、存储器220以及一个或多个计算机程序模块221。
160.例如,处理器210与存储器220通过总线系统230连接。例如,一个或多个计算机程序模块221被存储在存储器220中。例如,一个或多个计算机程序模块221包括用于执行本公开任一实施例提供的文件管理方法的指令。例如,一个或多个计算机程序模块221中的指令可以由处理器210执行。例如,总线系统230可以是常用的串行、并行通信总线等,本公开的实施例对此不作限制。
161.例如,该处理器210可以是中央处理单元(cpu)、数字信号处理器(dsp)、图像处理器(gpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,可以为通用处理器或专用处理器,并且可以控制电子设备200中的其它组件以执行期望的功能。
162.存储器220可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器210可以运行该程序指令,以实现本公开实施例中(由处理器210实现)的功能以及/或者其它期望的功能,例如文件系统的配额管理等文件管理方法等。在该计算机可读存储介质中还可以存储各种应用程序和各种数据,例如元数据、配额统计数据、最大配额以及应用程序使用和/或产生的各种数据等。
163.需要说明的是,为表示清楚、简洁,本公开实施例并没有给出电子设备200的全部组成单元。为实现电子设备200的必要功能,本领域技术人员可以根据具体需要提供、设置其他未示出的组成单元,本公开的实施例对此不作限制。
164.该电子设备的技术效果可以参考本公开的实施例中提供的文件管理方法的技术效果,这里不再赘述。
165.本公开至少一实施例还提供一种计算机可读存储介质。图8为本公开至少一实施例提供的一种计算机可读存储介质的示意图。例如,如图8所示,该计算机可读存储介质400非暂时性地存储计算机可读指令401,当非暂时性计算机可读指令由计算机(包括处理器)执行时可以执行本公开任一实施例提供的文件管理方法。
166.例如,该计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合,例如一个计算机可读存储介质包含通过文件操作单元110创建多个目录,且在多个目录的至少一个目录中执行文件处理操作的计算机可读的程序代码,另一个计算机可读存储介质包含响应于文件处理操作,获取至少一个目录的元数据信息,以提供元数据服务的计算机可读的程序代码,又一个计算机可读存储介质包含从元数据服务,接收所获取的至少一个目录的元数据信息,并且基于所获取的至少一个目录的元数据信息管理多个目录的至少一个配额统计数据的计算机可读的程序代码。例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一实施例提供的文件管理方法。
167.例如,计算机可读存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd

rom)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
168.有以下几点需要说明:(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
169.(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
170.以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1