掌桥专利:专业的专利平台
掌桥专利
首页

分布式文件系统的数据管理方法、装置、设备及存储介质

文献发布时间:2024-04-18 20:02:40


分布式文件系统的数据管理方法、装置、设备及存储介质

技术领域

本申请涉及云存储技术领域,特别涉及一种分布式文件系统的数据管理方法、装置、设备及存储介质。

背景技术

在分布式文件系统中,实现元数据对数据存储节点中存储的文件进行管理。元数据上限决定分布式文件系统的规模上限。

相关技术中,在分布式文件系统中的元数据达到上限的情况下,通过增加新的子集群,增加了主管理节点的数量,使得分布式文件系统整体的元数据上限得到提升。

然而,通过这种方法进行元数据扩容的成本较高。

发明内容

本申请提供了一种分布式文件系统的数据管理方法、装置、设备及存储介质。本申请实施例提供的技术方案如下。

根据本申请实施例的一个方面,提供了一种分布式文件系统的数据管理方法,所述方法包括如下几个步骤。

获取针对所述分布式文件系统中第一文件的文件管理请求,所述文件管理请求用于请求提供关于所述第一文件的服务;

基于所述文件管理请求,确定第一元数据的访问目录,其中,所述第一元数据用于在所述分布式文件系统中管理所述第一文件,所述第一元数据的访问目录用于指示获取所述第一元数据需按序访问的多个元数据节点;

基于目录映射表和所述第一元数据的访问目录,确定所述第一元数据,其中,所述目录映射表用于表征元数据与所述元数据的访问目录之间的映射关系,所述目录映射表存储在硬盘中;

基于所述第一元数据,执行关于所述第一文件的服务。

根据本申请实施例的一个方面,提供了一种分布式文件系统的数据管理装置,所述装置包括如下几个模块。

请求获取模块,用于获取针对所述分布式文件系统中第一文件的文件管理请求,所述文件管理请求用于请求提供关于所述第一文件的服务;

目录确定模块,用于基于所述文件管理请求,确定第一元数据的访问目录,其中,所述第一元数据用于在所述分布式文件系统中管理所述第一文件,所述第一元数据的访问目录用于指示获取所述第一元数据需按序访问的多个元数据节点;

数据确定模块,用于基于目录映射表和所述第一元数据的访问目录,确定所述第一元数据,其中,所述目录映射表用于表征元数据与所述元数据的访问目录之间的映射关系,所述目录映射表存储在硬盘中;

服务执行模块,用于基于所述第一元数据,执行关于所述第一文件的服务。

根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上所述的分布式文件系统的数据管理方法。

根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上所述的分布式文件系统的数据管理方法。

根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如上所述的分布式文件系统的数据管理方法。

根据本申请实施例的一个方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机程序,以实现如上所述的分布式文件系统的数据管理方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

相比于相关技术中将用于管理元数据的目录树存储在主管理节点的内存中,增加新的元数据时导致目录树的数据量增加,使得元数据的上限受到内存的存储容量制约的问题。本申请实施例使用目录映射表替代相关技术中在内存中存储的目录树,并通过硬盘存储该目录映射表。由于硬盘的存储容量远远大于内存的存储容量,因此通过这种方法有助于降低设备硬件对元数据的数量上限的制约,有助于提升元数据的数量上限,并且对元数据进行扩容的成本较低。

附图说明

图1是本申请一个示例性实施例提供的方案实施环境的示意图;

图2是本申请发明构思的示意图;

图3是本申请一个示例性实施例提供的分布式文件系统的数据管理方法的流程图;

图4是本申请一个示例性实施例提供的目录树的示意图;

图5是本申请另一个示例性实施例提供的分布式文件系统的数据管理方法的示意图;

图6是本申请再一个示例性实施例提供的分布式文件系统的数据管理方法的示意图;

图7是相关技术中元数据的更新过程的示意图;

图8是本申请一个示例性实施例提供的元数据的更新过程的示意图;

图9是基于本申请实施例提供的方案进行实验的效果对比图;

图10是本申请一个示例性实施例提供的分布式文件系统的数据管理装置的框图;

图11是本申请一个示例性实施例提供的计算机设备的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

云技术(Cloud Technology,CT)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。

云存储(Cloud Storage,CS)是指在云计算概念上延伸和发展出来的一个新的概念。云存储可以实现成为分布式文件系统。

分布式文件系统(Distributed File System,DFS)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(也称为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。分布式文件系统中管理的物理存储资源不一定直接连接在本地节点上,而是分布式存储在不同的数据存储节点(可简单的理解为一台计算机。数据存储节点可通过计算机网络与本地节点相连)。

目前,分布式系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。

数据库(Database),可以理解成电子化的文件柜,也即存储电子文件的处所。用户可以对数据库中存储的数据进行新增、查询、更新、删除等操作。

数据库管理系统(Database Management System,DBMS)是指为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。

智能交通系统(Intelligent Traffic System,ITS)是指将先进的科学技术(包括但不限于信息技术、计算机技术、数据通信技术、传感器技术、电子控制技术、自动控制理论、运筹学、人工智能等技术)有效地综合运用于交通运输、服务控制和车辆制造,加强车辆、道路、使用者三者之间的联系,从而形成一种保障安全、提高效率、改善环境、节约能源的综合运输系统。

图1是本申请一个示例性实施例提供的方案实施环境的示意图。该方案实施环境可以包括:终端设备10、主管理节点20、数据存储节点30和从管理节点40,其中,主管理节点20、数据存储节点30和从管理节点40是分布式文件系统中的功能节点。

终端设备10包括但不限于个人计算机(Personal Computer,PC)、手机、平板电脑、可穿戴设备、智能语音交互设备、智能家电、车载终端、飞行器等电子设备。终端设备10上运行有目标应用程序的客户端。在云存储领域终端设备10也可以直接称为客户端(client)。

目标应用程序具有文件管理功能。例如,目标应用程序用于为用户提供文件云存储、文件管理功能。目标应用程序可以是独立应用程序,也可以是依赖于母应用程序运行的子应用程序(也即小程序),还可以是指浏览器中展示的功能网页。目标应用程序的类型包括但不限于:云应用类应用程序、购物类应用程序、社交类应用程序、互动娱乐类应用程序、浏览器应用程序、内容分享类应用程序、虚拟现实类应用程序、增强现实类应用程序等,本申请实施例对此不作限定。

终端设备10至少具有数据收发功能和存储功能。可选地,终端设备10通过数据收发功能向分布式文件系统上传文件、从分布式文件系统中下载文件、以及指示分布式文件系统对文件进行编辑操作改变文件内容。

主管理节点20、数据存储节点30和从管理节点40用于提供分布式文件管理服务。其中,主管理节点20、数据存储节点30和从管理节点40均为计算机设备。示例性地,在计算机设备中运行主管理进程的情况下,该计算机设备即为主管理节点20;计算机设备用于存储文件的情况下,该计算机设备即为数据存储节点30。分布式文件系统为Hadoop(一种程序指令编写的开放源代码框架)的情况下,主管理节点20称为Active Namenode、数据存储节点30称为Datanode、从管理节点40称为Standby Namenode。需要说明的是,在不同的分布式文件系统中主管理节点20、数据存储节点30和从管理节点40分别具有的名称可能不同,本申请不对上述三类节点在实际应用中的名称进行限定。

主管理节点20可以理解成目标应用程序对应的服务器,用于为目标应用程序中的客户端提供后台服务,例如,主管理节点20是用于提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络、(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。

为了实现分布式存储,通常分布式文件系统中包括多个数据存储节点30,用户上传的文件被划分成多个数据块(block),多个数据块中的每一个数据块存储在至少一个数据存储节点30中。

从管理节点40是指用于实现分布式文件系统的辅助管理的计算机设备。在主管理节点20发生宕机的情况下,可以由从管理节点40代替主管理节点20工作,以提升分布式文件系统的稳定性。

主管理节点20可以与终端设备10、数据存储节点30和从管理节点40建立通信连接。终端设备10与数据存储节点30之间可以建立数据连接。在主管理节点20发生宕机的情况下,从管理节点40可以与终端设备10、数据存储节点30之间建立通信连接。

在一个应用场景中,终端设备10从分布式文件系统中查找第一文件。该示例中主要包括以下几个过程:终端设备10向主管理节点20发送关于第一文件的文件管理请求,主管理节点20基于文件管理请求,确定并向终端设备10发送用于管理第一文件的第一元数据。终端设备10根据第一元数据确定至少一个存储有第一文件的数据块的数据存储节点30,随后,终端设备从该至少一个数据存储节点30中获取第一文件被划分成的各个数据块,合并得到第一文件。

主管理节点20需要存储分布式文件系统中全部文件分别对应的元数据,可见,分布式文件系统中存储的元数据上限在一定程度上限制了分布式文件系统所能管理的文件数量上限。在实际应用中目标应用程序开放使用之后,用户数量会不断增加,需要管理的文件数量越来越多,为了满足实际需要,需要对元数据的数量进行扩容。

相关技术中,提升分布式文件系统的元数据上限的主要手段是建立多个子集群。也就是说,在一个分布式文件系统集群中包括多个子集群,每一个子集群中包括:主管理节点、从管理节点和文件存储节点,不同子集群中不共用主管理节点、从管理节点和文件存储节点中的任一类节点。由于每个子集群中的主管理节点具有各自的元数据上限,因此通过不断加入新的子集群,引入新的主管理节点,使得分布式文件系统整体的元数据上限提升。

多个子集群通过统一的接入层配置成一个大集群。例如,一个接入层之下包括多套子集群。由于用户通过接入层与分布式文件系统进行交互,也即用户仅能感知到接入层,因此通过将不同集群的目录挂载到接入层,使得用户从接入层视角看到的是一个整个集群。

然而通过增加多个子集群来提升分布式文件系统的整体元数据上限存在以下弊端。例如,不同子集群的数据管理节点不共用,因此难以将一个子集群的数据管理节点中的目录重命名到另一个子集群的数据管理节点中。而且,在某个子集群中元数据过多的情况下,还是会出现该子集群的主管理节点中元数据超出上限的情况。某个子集群中元数据数量过多也会导致该子集群中的主管理节点重启过程的耗时较长。因此,还需要对元数据的上限提升方法进行进一步地探索。

图2是本申请发明构思的示意图。

在本申请提供的方案主要用于对主管理节点能够管理的元数据的数量上限进行扩容,降低元数据的数量上限对分布式文件系统规模的制约。具体的,本申请实施例基于相关技术中在主管理节点的内存中维护的目录树转换成目录映射表,并将该目录映射表存储的主管理节点的硬盘中。在需要基于客户端的文件管理请求获取对应的文件的元数据时,通过从该目录映射表中查找元数据。

相比于相关技术中将用于管理元数据的目录树存储在主管理节点内存中,增加新的元数据的过程中会导致目录树的数据量增加,受到内存容量的制约在目录树达到一定数据规模之后,无法再增加新的元数据的情况。本申请实施例将目录树转换成目录映射表,并在硬盘中存储该目录映射表,由于硬盘的存储容量远远大于内存的存储容量,因此通过这种方法有助于降低设备硬件对元数据的数量上限的制约,有助于提升元数据的数量上限。

此外,通过这种方式在主管理节点进行重启的过程中,由于无需将目录映射表加载到内存中,因此有助于缩短主管理节点的重启耗时,有助于提升分布式文件管理服务的稳定性。

图3是本申请一个示例性实施例提供的分布式文件系统的数据管理方法的流程图。示例性地,该方法的执行主体可以是图1中的主管理节点20。为了描述方便下面以计算机设备为执行主体对本方法进行介绍说明。如图3所示,该方法可以包括如下几个步骤(310~340)。

步骤310,获取针对分布式文件系统中第一文件的文件管理请求,文件管理请求用于请求提供关于第一文件的服务。

在一些实施例中,分布式文件系统用于提供文件的分布式存储和管理服务。可选地,分布式文件系统中包括至少一个数据存储节点,这些数据存储节点用于存储对文件进行划分得到的多个数据块,多个数据块组合可以得完整的该文件。其中,分布式文件系统中存储的文件包括用户上传的文件。可选地,分布式文件系统中还包括主管理节点,该主管理节点中存储有分布式文件系统中存储的各个文件分别对应的元数据,元数据用于管理其对应的文件。

示例性地,分布式文件系统是基于Hadoop构建的,称为Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)。在这种情况下,主管理节点称为ActiveNamenode,本申请实施例中,执行主体计算机设备是Active Namenode。

可选地,分布式文件系统向客户端提供统一的接口层,使得客户端通过该接口层与分布式文件系统进行交互。分布式文件系统用于基于客户端提出的文件管理请求,提供相应的文件管理服务。

在一些实施例中,文件管理请求用于向分布式文件系统请求对第一文件进行管理。可选地,第一文件是指分布式文件系统中存储的文件,由上文实施例可知,第一文件被划分成多个数据块,以数据块的形式存储在多个数据存储节点中。

文件管理请求的类型包括但不限于以下至少之一:文件编辑请求、文件删除请求、文件查找请求。其中,文件编辑请求用于请求对第一文件的文件内容进行编辑;文件删除请求用于请求从分布式文件系统中删除第一文件;文件查找请求用于请求从分布式文件系统中获取第一文件至客户端,也即从分布式文件系统中下载第一文件。

可选地,文件管理请求中包括类型指示标识和第一文件的文件标识。其中,类型指示标识用于表征文件管理请求所请求的服务类型,第一文件的文件标识用于唯一标识该第一文件。第一文件的文件标识包括但不限于以下至少之一:第一文件的名称、编号、第一文件对应的元数据的访问目录等。

步骤320,基于文件管理请求,确定第一元数据的访问目录,其中,第一元数据用于在分布式文件系统中管理第一文件,第一元数据的访问目录用于指示获取第一元数据需按序访问的多个元数据节点。

在一些实施例中,第一元数据是指第一文件在分布式文件系统中对应的元数据。分布式文件系统通过元数据对其存储的文件进行管理。

可选地,第一元数据用于记载与该第一文件相关的属性信息。示例性地,第一元数据包括第一文件被划分成的各个数据块在数据存储节点中的存储地址。示例性地,第一元数据还包括以下至少之一:第一文件的访问权限、文件所有者标识、第一文件的编辑信息。其中,第一文件的访问权限用于指示能够访问、获取第一文件的至少一个用户;文件所有者标识用于表征拥有该第一文件的用户,也即在分布式文件管理系统中上传第一文件的用户;第一文件的编辑信息用于记录第一文件在分布式文件系统存储过程中发生的修改。

相关技术中分布式文件系统中的元数据存储在计算机设备的内存中,为了方便对元数据进行管理,将元数据存储在元数据节点中,也即,多个元数据分别在各自的元数据节点进行存储。元数据节点之间相互连接形成树形结构,该树形结构可以称为目录树。

其中,元数据节点的数量大于分布式文件系统中的元数据总数,元数据对应的元数据节点在树形结构中属于叶节点。

在这种情况下,第一元数据中还可以包括节点信息,该节点信息用于记录与第一元数据节点在该树形结构中存在连接关系的其他元数据节点,第一元数据节点是指树形结构用于存储第一元数据的节点。

在一些实施例中,第一元数据的访问目录用于查找第一元数据,也即第一元数据的访问目录是用于获取第一元数据的访问索引。不同的元数据各自对应的访问目录不同。可选地,第一元数据的访问目录中包括多个子目录,每个子目录分别对应一个元数据节点。计算机设备按照第一元数据的访问目录中各个子目录的排列顺序进行依次访问各个子目录,即可找到该第一元数据节点,以便获得到第一元数据节点中存储的第一元数据。

可选地,第一元数据的访问目录用于指示从树形结构的根节点到达第一元数据节点的节点访问路径,其中,根节点是指树形结构中的起始节点,根节点在树形结构中不具有父节点。示例性地,第一元数据的访问目录中包括多个元数据节点的节点名称,也即第一元数据的访问路径由多个元数据节点的节点名称按照各个元数据节点在树形结构中的访问顺序组成。

例如,某个第一元数据节点的访问目录为/dir1/file1,其中,“/”表示根节点的名称,“dir1”表示一个元数据节点的名称,“file1”是指第一元数据节点的名称,“dir1/file1”之间的“/”表示分隔符。

在一个示例中,在获取到文件管理请求之后,计算机设备能够直接从文件管理请求中获取第一元数据的访问目录,也即文件管理请求中携带有第一文件的访问目录。在另一个示例中,在获取到文件管理请求之后,计算机设备根据文件管理请求的请求内容,生成第一元数据的访问目录。有关该部分的具体内容请参考下文实施例。

步骤330,基于目录映射表和第一元数据的访问目录,确定第一元数据,其中,目录映射表用于表征元数据与元数据的访问目录之间的映射关系,目录映射表存储在硬盘中。

在一些实施例中,目录映射表是指提供元数据的访问目录与元数据之间的映射关系的映射表。也即,通过目录映射表可以确定元数据的访问目录和元数据之间的对应关系,以便通过元数据的访问目录找到对应的元数据。可选地,目录映射表中包括元数据,也即计算机根据目录映射表查找第一元数据的访问目录所对应的元数据,查找得到第一元数据。

示例性地,目录映射表属于键值(key-value)表,其中,键值表是指由至少一个键值对组合成的查询表,键值对包括键值(key)和关键值(value),通过键值能够在该键值表中查找到对应的关键值。例如,计算机设备根据第一元数据的访问目录确定目标键值,并将该目标键值对应的关键值作为第一元数据。有关该过程的具体内容,请参考下文实施例。通过将目录映射表设置为键值表的形式,有助于提升基于第一元数据的访问目录从目录映射表中确定第一元数据的速度,从而提升分布式文件系统对文件管理请求的响应速度。

在一些实施例中,目录映射表存储在硬盘中。也即在主管理节点的运行过程中,无需将完整版的目录映射表加载到内存中。可选地,目录映射表在数据库中存储,该数据库中的大部分数据直接存储在硬盘中。示例性地,该数据库为RocksDB(一种高效的数据库软件)。

可选地,在需要基于目录映射表查找第一元数据的情况下,计算机设备将目录映射表中的部分内容从硬盘读取到内存中,以便进行进一步地的操作。例如,计算机设备将目标映射表中的第一元数据从硬盘读取到内存中,以便基于第一元数据生成用户发送至客户端的反馈信息。有关该步骤的具体内容请,参考下文实施例。

在一些实施例中,目录映射表中包括至少一张映射表。可选地,在目录映射表中包括一张映射表的情况下,元数据的访问目录在该张映射表中之间对应第一元数据。示例性地,计算机设备从该映射表直接查找第一元数据的访问目录,得到第一元数据。例如,目录映射表中包括以元数据的访问目录为键值,元数据为关键值的至少一个键值对,计算机设备以第一元数据的访问目录作为目标键值,从目录映射表中查找得到第一元数据的访问目录对应的第一元数据。

可选地,目录映射表中包括至少两张映射表,计算机设备根据第一元数据的访问目录从第一映射表中确定第一元数据节点的节点索引,并根据第一元数据的节点索引从第二映射表中查找第一元数据,有关该过程的具体内容请参考下文实施例。通过设置至少两张映射表,有助于提升从目录映射表中查找得到元数据的速度,而且,考虑到不同的元数据访问目录之间可能存在重叠,通过对至少两张映射表分别表征的映射关系进行设计,有助于减少目标映射表中的重叠信息,从而减少目录映射表中存储不必要的重复信息,有助于缩减目录映射表的数据量。

步骤340,基于第一元数据,执行关于第一文件的服务。

在一些实施例中,关于第一文件的服务是指针对第一文件进行的文件管理服务。关于第一文件的服务包括以下至少之一:查找第一文件、编辑第一文件、删除第一文件。

在一些实施例中,分布式文件系统的数据管理方法还包括:若文件管理请求用于请求更改第一文件,则计算机设备基于文件管理请求修改目录映射表中存储的第一元数据;若文件管理请求用于请求删除第一文件,则计算机设备基于文件管理删除目录映射表中与第一元数据有关的映射关系;若文件管理请求用于请求访问所述第一文件,则计算机设备向客户端发送所述第一元数据,以便所述客户端根据第一元数据从所述分布式文件系统中的文件存储设备中获取所述第一文件的文件内容。

可选地,主管理节点并不直接作用于数据存储节点,主管理节点可以将第一元数据反馈至客户端,以便客户端基于第一元数据指示数据存储节点对第一文件进行相应的操作。示例性地,主管理节点执行关于第一文件的服务包括向客户端反馈第一元数据。

例如,关于第一文件的服务为查找第一文件的情况下,计算机设备向客户端发送该第一元数据,以便客户端根据该第一元数据确定第一文件被划分成的各个数据块在数据存储节点中存储地址,并从相应的存储地址中获取到各个数据块,最终得到第一文件。

由上文实施例可知,关于第一文件的服务的类型由文件管理请求指示。关于第一文件的服务的类型根据客户端的实际需要进行指示,本申请在此不进行赘述。

综上所述,相比于相关技术中将用于管理元数据的目录树存储在主管理节点的内存中,增加新的元数据时导致目录树的数据量增加,使得元数据的上限受到内存的存储容量制约的问题。本申请实施例使用目录映射表替代相关技术中在内存中存储的目录树,并通过硬盘存储该目录映射表。由于硬盘的存储容量远远大于内存的存储容量,因此通过这种方法有助于降低设备硬件对元数据的数量上限的制约,有助于提升元数据的数量上限,并且对元数据进行扩容的成本较低。

在一些实施例中,如图3所示的步骤320,至少包括以下两种实现方式。

实现方式1:计算机设备从文件管理请求中读取第一元数据的访问目录。

在本示例中,文件管理请求中包括第一元数据,计算机设备直接从文件管理请求中读取第一元数据的访问目录。

实现方式2:计算机基于文件管理请求确定多个元数据节点各自的节点名称;计算机设备对多个元数据节点各自的节点名称进行排序,得到第一元数据的访问目录。

在本示例中,元数据节点的节点名称用于唯一标识元数据节点,不同的元数据节点的节点名称不同。

可选地,在树形结构的不同层级中的元数据节点的节点名称的形式不同,计算机设备根据多个元数据节点各自的节点名称确定多个元数据节点分别所属的层级,基于元数据节点的层级从高到低,对多个元数据节点各自的节点名称进行排序,得到第一元数据的访问目录。

示例性地,计算机设备中设置有层级映射表,对于任一个元数据节点的节点名称,计算机设备根据层级映射表确定该元数据节点所属的层级。例如,树形结构中包括3个层级,层级映射表指示最高层级的节点名称命名为“/”,第二高层级的节点名称中带有“dir”,最低层级的节点名称中带有“file”,计算机设备根据该层级映射表确定多个元数据各自的节点名称在第一元数据的访问目录中的排列顺序。

由于文件管理请求中未包括完整的元数据访问目录,即使该文件管理请求被劫持,劫持设备也难以根据文件管理请求确定元数据的访问目录。因此,通过文件管理请求间接获取元数据的访问目录,有助于提升文件管理请求的安全性。

下面通过几个实施例对第一元数据的查找过程进行介绍说明。

如上文实施例记载的,若目录映射表中包括至少两张映射表,则有助于提升本申请提供的方案确定第一元数据的效率,下面以目录映射表包括两张映射表的情况进行介绍。

在一些实施例中,分布式文件系统中包括的各个元数据分别对应的元数据节点之间连接成树形结构,目录映射表包括边缘映射表和节点映射表,其中,边缘映射表用于表征树形结构中具有父子关系的两个元数据节点之间的映射关系,节点映射表用于表征元数据节点与元数据节点所存储的元数据之间的映射关系。

在一些实施例中,树形结构中包括至少一个节点,以及节点之间的连接关系,节点用于存储信息,节点之间的连接关系用于表征节点之间的相关联系。节点之间的连接关系也称为边缘、边。在本申请实施例中,树形结构中的节点均为元数据节点。

可选地,树形结构从根节点开始逐层设置各个节点,同一层级的节点之间不设置连接关系,相邻层级的两个节点之间允许设置连接关系的结构,相邻两个层级中具有连接关系的两个节点互为父子节点。

其中,树形结构的根节点不具备父节点,树形结构的叶节点不具备子节点。示例性地,元数据在树形结构中对应的元数据节点属于叶节点。也即,用于管理文件的元数据存储在树形结构的叶节点中。

在分布式文件系统中,该树形结构也称为目录树。可选地,第一元数据的访问目录用于表征从树形结构的根节点达到用于存储第一元数据的第一元数据节点的目录路径。

图4是本申请一个示例性实施例提供的目录树的示意图。

如图4所示,“/”节点为该目录树中的根节点,根节点“/”和节点“dir1”之间存在连接关系,也即,根节点“/”和节点“dir1”互为父子节点,其中,根节点“/”是节点“dir1”的父节点,节点“dir1”是根节点“/”的子节点,节点“file1”是目录树中的叶节点。示例性地,节点“file1”中存储有用于管理文件file1的元数据。

在一些实施例中,目录映射表用于表征该树形结构。可选地,目录映射表中包括边缘映射表和节点映射表,边缘映射表用于描述该树形结构中的连接关系,也即边缘映射表用于表征该树形结构中具有连接关系的元数据节点之间的边缘(edge)信息,节点映射表用于描述树形结构中包括的各个元数据节点。

示例性地,边缘映射表中存储有各个元数据节点的节点名称,节点映射表中存储有至少一个元数据,边缘映射表可以对应上文实施例中第一映射表,节点映射表可以对应上文实施例中的第二映射表。

可选地,边缘映射表和节点映射表存储在硬盘中。在确定第一元数据的过程中,计算机设备从硬盘中读取边缘映射表中的部分内容、节点映射表中的部分内容到内存,有关该过程的具体内容请参考下文实施例。

需要明确的是,在本申请实施例中提到的树形结构是为了方便理解方案,本申请实施例中的主管理节点在实际工作过程中,无需维护该树形结构,只需要维护硬盘中存储的目录映射表。例如,计算机设备只需维护边缘映射表和节点映射表,即可以根据边缘映射表和节点映射表基于元数据的访问路径,确定对应的元数据。相比于相关技术,本方案在实际应用过程中,主管理节点中并不存在目录树这一结构。

可选地,边缘映射表和节点映射表均属于键值表,也即计算机设备基于第一元数据的访问目录确定目标键值,在基于目标键值从边缘映射表或者节点映射表中进行查找操作,最终确定第一元数据。有关该步骤具体内容,请参考下文实施例。

图5是本申请另一个示例性实施例提供的分布式文件系统的数据管理方法的示意图,本实施例的执行主体为计算机设备,本申请实施例可以包括以下几个步骤。

步骤310,获取针对所述分布式文件系统中第一文件的文件管理请求,文件管理请求用于请求提供关于第一文件的服务。

步骤320,基于文件管理请求,确定第一元数据的访问目录,其中,第一元数据用于在分布式文件系统中管理第一文件,第一元数据的访问目录用于指示获取第一元数据需按序访问的多个元数据节点。

有关步骤310、320的具体介绍请参考上文实施例。

如图3所示的步骤330可以实现成为以下步骤333和步骤336。

步骤333,基于第一元数据的访问目录从边缘映射表中,确定第一元数据节点的节点索引,第一元数据节点是指用于存储第一元数据的元数据节点。

在一些实施例中,元数据节点的节点名称和元数据节点的节点索引均用于表示元数据节点。其中,元数据节点的节点名称用于表征元数据节点的命名。

示例性地,元数据节点的名称与该元数据节点中存储的元数据所管理的文件有关。例如,元数据节点的名称与该元数据所管理的文件名相同。示例性地,元数据节点的节点名称是用户向分布式文件系统存储文件过程中,由计算机设备生成的。例如,在接收到待存储的新文件之后,计算机设备根据命名规则生成元数据节点的名称。

此外,元数据节点的节点名称还可以由工作人员进行配置,本申请对元数据节点的节点名称的来源不进行限定。

元数据节点的节点索引用于查找元数据节点。示例性地,元数据节点的节点索引通过编号表示。例如,某个元数据节点的节点索引为21。元数据的节点索引可以称为元数据节点的身份标识(Identity Document,ID)。

可选地,不同元数据节点的节点名称不同,不同元数据节点的节点索引也不同。对于某个元数据节点,该元数据节点的节点名称和该元数据节点的节点索引一一对应。示例性地,元数据节点的节点名称对于客户端可知,元数据节点的节点索引对于客户端不可知,也即客户端可以在文件管理请求中携带元数据节点的节点名称。例如,在文件管理请求中携带元数据的访问目录,该元数据的访问目录由至少一个元数据节点的节点名称组成。

本方案通过将相关技术中使用的目录树转换成边缘映射表和节点映射表,边缘映射表和节点映射表用于模仿树形结构管理至少一个元数据。例如,将边缘映射表和节点映射表结合,能够表征元数据的访问目录与对应元数据之间的映射关系。由于本方案实际应用过程中不存在树形结构,也可以将本申请实施例中的元数据节点的节点名称理解成为元数据的名称,元数据节点的节点索引理解成该元数据的索引。

在一些实施例中,第一元数据节点是指树形结构中存储有第一元数据的元数据节点。第一元数据的节点索引用于唯一标识第一元数据节点。可选地,节点映射表中包括第一元数据和第一元数据节点的节点索引之间的映射关系。

在一个示例中,边缘映射表中包括第一元数据的访问目录和第一元数据节点的节点索引之间的对应关系,也即计算机设备可以通过直接从边缘映射表中查找得到第一元数据节点的节点索引。示例性地,边缘映射表中包括以某个元数据的访问目录为键值,该元数据为关键值的键值对。

在另一个示例中,可选地,计算机设备基于第一元数据的访问目录包括的子目录确定中间节点的节点索引,并基于中间节点的节点索引和下一部分子目录,对中间节点的节点索引进行更新,直到确定出第一元数据节点的节点索引为止。中间节点的节点索引可以理解成为下文实施例中第一辅助节点的节点索引,下一部分子目录可以理解成为下文实施例中的第二辅助节点,有关该步骤的具体内容请参考下文实施例。

步骤336,基于第一元数据节点的节点索引从节点映射表中,确定第一元数据。

可选地,节点映射表中包括元数据节点的节点索引和元数据之间的对应关系。计算机设备从节点映射表中基于第一元数据节点的节点索引直接获取第一元数据。

可选地,节点映射表中包括元数据节点的节点索引和元数据的存储地址之间的对应关系,计算机设备基于第一元数据节点的节点索引确定第一元数据的存储地址,并访问该存储地址获取到第一元数据。

步骤340,基于第一元数据,执行关于第一文件的服务。

有关步骤340的具体内容请参考上文实施例,在此不进行赘述。

由于不同的元数据的访问目录之间可能存在重叠,例如,某两个元数据分别对应的元数据节点在树形结构中具有相同的父节点。在这种情况下,该两个元数据的访问目录仅在最后一个元数据节点的节点名称上存在差别,其余部分相同。通过边缘映射表和节点映射表共同反映元数据的访问目录和元数据之间的映射关系。一方面,有助于减少边缘映射表的信息重叠程度(例如,边缘映射表中不必包括完整的元数据的访问目录),有助于降低目录映射表的数据量,减少存储目录映射表占用的存储空间。

另一方面,相比于元数据的访问目录,待查找的元数据对应的元数据节点的节点索引相对简单,使得根据该元数据的节点索引从节点索引表中确定待查找的元数据的速度更快。本申请实施例通过设置边缘映射表,有助于提升计算机设备对边缘映射表的读取速度,从而提升查找元数据的查找效率。

下面通过几个示例性实施例对基于元数据的访问目录确定对应的元数据节点的节点索引的过程进行介绍说明。

在一些实施例中,第一元数据的访问目录中包括多个元数据节点各自的节点名称,多个元数据节点中相邻的两个元数据节点在树形结构中互为父子节点,边缘映射表包括父子节点组合和子节点的节点索引之间的映射关系,父子节点组合包括父节点的节点索引和该父节点对应的子节点的节点名称。

可选地,多个元数据节点各自的节点名称在第一元数据的访问目录中具有排列顺序,该排列顺序用于模拟计算机设备从树形结构的根目录开始逐个访问元数据节点,最后到达第一元数据节点的顺序。

示例性地,某个第一元数据的访问目录为/dir2/file3(可参考图4进行理解),其中,“/”、“dir2”、“file3”为3个元数据节点各自的节点名称,该第一元数据的访问目录表示若需访问元数据节点“file3”,计算机设备需要先访问根节点“/”,再访问元数据节点“dir2”,最后访问元数据节点“file3”,说明“/”、“dir2”、“file3”之间的排列顺序即为“/”、“dir2”、“file3”。

可选地,多个元数据节点中相邻的两个元数据节点是指元数据的访问目录中节点名称的位置相邻的两个元数据节点。

为了方便表述,将多个元数据节点中相邻的两个元数据节点分别称为第一节点和第二节点,其中第一节点是第二节点的父节点,第二节点是第一节点的子节点。在第一元数据的访问路径中,第一节点的节点名称排列在第二节点的节点名称之前,且第一节点的节点名称和第二节点的节点名称相邻。也即,在树形结构中访问第二节点的前提是访问第一节点。在访问到第一元数据节点之前,需要先访问第二节点,再基于第一节点提供的信息访问第二节点。

在一些实施例中,边缘映射表用于表征父子节点组合与子节点之间的映射关系。可选地,父子节点组合用于表征一个父节点和该父节点对应的一个子节点,如上一段中的第一节点和第二节点。例如,父子节点组合中包括父节点的节点索引和子节点的节点名称。

可选地,边缘映射表征包括父子节点组合与子节点的节点索引之间的映射关系。示例性地,边缘映射表属于键值表,边缘映射表中包括多个边缘键值对。对于多个边缘键值对中的任意一个边缘键值对,该边缘键值对中的键值为父节点的节点索引和子节点的节点索引,也即上述父子节点组合,关键值为子节点的节点索引。计算机设备结合第一元数据的访问目录和边缘映射表,逐步更新键值,最终从边缘映射表中确定出第一元数据节点的节点索引。下面对该过程进行介绍说明。

在一些实施例中,子步骤333,基于第一元数据的访问目录从边缘映射表中,确定第一元数据节点的节点索引,可以包括以下几个子步骤,该几个子步骤的执行主体为计算机设备,例如上文实施例中的主管理节点。

子步骤333-a,以多个元数据节点中的根节点作为第一辅助节点,基于第一元数据的访问目录确定第二辅助节点的节点名称,根节点为树形结构中的顶层节点,根节点的节点索引已知,第二辅助节点为第一辅助节点的子节点。

在一些实施例中,多个元数据节点包括第一元数据的访问目录中包括的多个节点名称分别对应元数据节点。由于元数据节点的节点名称能够唯一标识元数据节点,因此,可以将多个元数据节点理解成为第一元数据的访问目录所指示的全部元数据节点。基于上文实施例可以理解的是,多个元数据节点包括在树形结构中访问第一元数据节点之前需要经过的元数据节点,以及,第一元数据节点。

在一些实施例,根节点对应树形结构中的第一个元数据节点,从根节点起步,能够访问树形结构中的任一个元数据节点。第一元数据的访问目录中包括根节点的节点名称。可选地,分布式文件系统中每个元数据的访问目录中都包括根节点的节点名称,且根节点的节点名称在元数据的访问目录中的排列位置最靠前。

可选地,在根节点作为第一辅助节点的情况下,第二辅助节点是指第一元数据的访问目录中与根节点的节点名称相邻的元数据节点。在这种情况下,第二辅助节点是指以根节点为父节点的一个子节点。通过树形结构进行理解,也即第一辅助节点和第二辅助节点之间具有直接连接关系。

例如,第一元数据的访问目录为/dir2/file3,其中,“/”、“dir2”、“file3”分别为3个元数据节点各自的节点名称,“/”为根节点的节点名称,在根节点作为第一辅助节点的情况下,第二辅助节点是指节点名称为“dir2”的元数据节点。

任一个第一元数据的访问目录中均包括根节点的节点名称,因此根节点的节点索引是计算机设备已知的。示例性地,根节点的节点索引为“0”,计算机设备中存储有:“根节点的节点索引为0”这个信息。

子步骤333-c,基于第一辅助节点的节点索引和第二辅助节点的节点名称组成的第一父子节点组合,从边缘映射表中查找第一父子节点组合对应的节点索引,作为第二辅助节点的节点索引。

可选地,第一父子节点组合中包括第一辅助节点的节点索引和第二辅助节点的节点名称。示例性地,计算机设备以字典形式组合第一辅助节点的节点索引和第二辅助节点的节点名称,得到第一父子节点组合。例如,第一父子节点组合可以表示成为(parentInodeId,childName),其中,parentInodeId表示第一辅助节点的节点索引,childName表示第二辅助节点的节点名称。

在确定出第一父子组合之后,计算机设备从边缘映射表中查找第一父子节点组合对应的节点索引,作为第二辅助节点的节点索引。例如在边缘映射表中第一父子组合对应的节点索引为“2”,则计算机设备确定第二辅助节点的节点索引为“2”。

子步骤333-e,若第二辅助节点是第一元数据的访问目录所包括的最后一个元数据节点,则将第二辅助节点的节点索引确定为第一元数据节点的节点索引;否则,将第二辅助节点作为新的第一辅助节点,再次从基于第一元数据的访问目录确定第二辅助节点的节点名称的步骤开始执行。

在一些实施例中,在确定出第二辅助节点之后,计算机设备基于第一元数据的访问目录,确定第二辅助节点是否为多个元数据节点中的最后一个元数据节点。可选地,最后一个元数据节点是指第一元数据的访问目录中,节点名称排列在最后的元数据节点。也即,最后一个元数据节点为第一元数据。

示例性地,计算机设备根据第一元数据的访问目录,确定第一元数据的节点名称,根据第一元数据的节点名称和第二辅助节点的节点名称判断第二辅助节点是否为多个元数据节点中的最后一个元数据节点。若第二辅助节点是多个元数据节点中的最后一个元数据节点(即第二辅助节点的节点名称与第一元数据节点的节点名称相同),则计算机设备将第二辅助节点的节点索引确定为第一元数据节点的节点索引。

若第二辅助节点不是多个元数据节点中的最后一个元数据节点(即第二辅助节点的节点名称与第一元数据节点的节点名称不同),则计算机设备将第二辅助节点作为新的第一辅助节点,并基于第一元数据的访问目录确定新的第二辅助节点的节点名称。随后,计算机设备基于新的第一辅助节点的节点索引和该新的第二辅助节点的节点名称组合,得到新的第一父子节点组,以便从边缘映射表中确定该新的第二辅助节点的节点索引,以此类推,直到第二辅助节点是多个元数据节点中的最后一个元数据节点。

在本申请实施例中,通过边缘映射表反映父子节点组合和子节点的节点索引之间的对应关系。由于父子节点组合的表现形式相对简单,因此计算机设备基于父子节点组合从边缘映射表中子节点的节点索引的速度较快。有助于缩短计算机设备通过元数据的访问目录和边缘映射表构造父子节点组合,进行迭代查找各个子节点的节点索引的耗时,进而加快在本过程确定的元数据节点的节点索引的速度。通过这种方式有助于提升主管理节点的数据读写性能,有助于保证分布式文件系统对文件管理请求的响应速度。

下面通过几个实施例对从节点映射表中查找第一元数据的过程进行介绍说明。

在一些实施例中,节点映射表包括至少一个元数据节点的节点索引和元数据节点的节点索引对应的元数据。

可选地,节点映射表属于键值表。节点映射表中包括多个节点键值对,每个节点键值对分别对应树形结构中不同的元数据节点。示例性地,对于多个节点键值对中的任一个节点键值对,该节点键值对中的键值为元数据节点的节点索引,关键值为该元数据节点中存储的元数据。

示例性地,对于多个节点键值对中的任一个节点键值对,该节点键值对中的键值为元数据节点的节点索引,关键值为该元数据在硬盘中的存储地址,或者关键值为该元数据在内存中的存储地址。

步骤336,基于第一元数据节点的节点索引从节点映射表中,确定第一元数据,可以包括以下几个子步骤,以下几个子步骤的执行主体为计算机设备,也即上文实施例中的主管理设备。

子步骤336-a,从节点映射表中查找第一元数据节点的节点索引对应的元数据。

可选地,计算机设备以第一元数据节点的节点索引作为键值,从节点映射表中包括第一元数据节点的节点索引的键值对,以便从该键值对中读取关键值,得到第一元数据。

子步骤336-b,将第一元数据节点的节点索引对应的元数据,确定为第一元数据。

本申请实施例中,通过节点映射表来表征元数据节点的节点索引和该元数据节点所存储的元数据之间的映射关系。元数据节点的节点索引的表示形式较为简单,例如可以通过编号来表示元数据节点的节点索引,从节点映射表中查找元数据节点的节点索引的耗时较短。通过这种方式设置节点映射表,有助于提升基于元数据节点的节点索引从节点映射表中确定元数据的速度。

下面通过一个示例对从边缘映射表中确定元数据节点的节点索引的过程进行介绍说明。在本示例中,目录映射表中包括边缘映射表和节点映射表,边缘映射表包括父子节点组合和子节点的节点索引之间的映射关系,节点映射表包括至少一个元数据节点的节点索引和元数据节点的节点索引对应的元数据之间的映射关系,已知第一元数据的访问目录为/dir1/file1。

表1 边缘映射表中的部分内容

在表1中,key(parentInodeId,childName)表示边缘映射表中的键值为父子节点组合(父节点的节点索引,子节点的节点名称),value(childInodeId)表示边缘映射表中的关键值为子节点的节点索引。

表2 节点映射表中的部分内容

在表2中,key(InodeId)表示节点映射表中的键值为元数据节点的节点索引,Value(Metadata)表示节点映射表中的关键值包括元数据节点中所存储的元数据。

基于该背景,确定第一元数据节点的节点索引主要包括以下几个步骤(A10-A80)。

步骤A10,以多个元数据节点中的根节点作为第一辅助节点,计算机设备基于第一元数据的访问目录确定第二辅助节点的节点名称。

在该步骤中,第一辅助节点为根节点,第一辅助节点的节点索引已知为0。

基于第一元数据的访问目录/dir1/file1,计算机设备确定第二辅助节点的节点名称为dir1。

步骤A20,计算机设备基于第一辅助节点的节点索引和第二辅助节点的节点名称组成的第一父子节点组合,从边缘映射表中查找第一父子节点组合对应的节点索引,作为第二辅助节点的节点索引。

在该步骤中,第一父子节点组合为(0,"dir1"),计算机设备基于第一父子节点组合(0,"dir1")在边缘映射表中进行查找,得到表3。

表3 第一父子节点组合和子节点的节点索引的对应关系表

如表3所示,计算机设备确定第一父子节点组合(0,"dir1")对应的子节点的节点索引为1。也即,第二辅助节点的节点索引为1。对比表1可以理解的是,表3是表1的一部分。

步骤A30,计算机设备判断该第二辅助节点"dir1"是否为第一元数据的访问目录所包括的最后一个元数据节点,并确定该第二辅助节点"dir1"不是最后第一个元数据节点。

步骤A40,计算机设备将第二辅助节点"dir1"作为新的第一辅助节点,基于第一元数据的访问目录/dir1/file1,确定新的第二辅助节点的节点名称为"file1"。

步骤A50,计算机设备基于新的第一辅助节点"dir1"的节点索引和新的第二辅助节点"file1"的节点名称组成的新的第一父子节点组合,从边缘映射表中查找该新的第一父子节点组合对应的节点索引,作为该新的第二辅助节点"file1"的节点索引。

在该步骤中,新的第一父子节点组合表示(1,"file1"),计算机设备基于该新的第一父子节点组合(1,"file1")在边缘映射表(表1)中进行查找,得到如下表4。

表4 新的第一父子节点组合和子节点的节点索引的对应关系表

如表4所示,计算机设备确定该新的第一父子节点组合(0,"dir1")对应的子节点的节点索引为1,也即,新的第二辅助节点的节点索引为1。对比表1可以理解的是,表4是表1的一部分。

步骤A60,计算机设备判断该新的第二辅助节点"file1"是否为第一元数据的访问目录所包括的最后一个元数据节点,并确定该第二辅助节点"file1"是多个元数据节点中的最后第一个元数据节点。

步骤A70,计算机设备确定第一元数据节点的节点索引为3。

步骤A80,计算机设备从节点映射表中查找第一元数据节点的节点索引3对应的元数据。

在该步骤中,计算机设备基于第一元数据节点的节点索引2在节点映射表中进行查找,得到如下表5;计算机设备根据表5确定第一元数据节点的节点索引2对应的元数据。

表5 第一元数据节点的节点索引和元数据的对应关系表

如表5所示,计算机设备确定第一元数据节点的节点索引“3”对应的元数据为“inode{id:3,parent_id:1,name:"file1",is_directory:false,...}”,也即找到了第一元数据。对比表2可以理解的是,表5是表2的一部分。计算机设备将第一元数据节点的节点索引对应的元数据,确定为第一元数据。

相比于相关技术将用于管理元数据的树形结构(目录树)存储在内存中,导致元数据的数量上限受到内存的存储容量的限制,本申请实施例通过边缘映射表和节点映射表模拟树形结构对元数据管理,边缘映射表和节点映射表可以存储在硬盘中。由于硬盘中的存储容量相对宽松,通过这种方式降低了提升元数据上限的难度。并且,在根据元数据的访问目录确定元数据的过程中,通过边缘映射表和节点映射表相互配合,对主管理节点的读写性能不会造成过大的影响,有助于保证分布式文件系统对文件管理请求的及时响应。

下面通过几个示例性实施例对进一步提升主管理节点的读写性能的方法进行介绍说明。

在一些实施例中,子步骤333-c,基于第一辅助节点的节点索引和第二辅助节点的节点名称,从边缘映射表中查找第二辅助节点的节点索引之前,还包括以下几个步骤。

子步骤333-b1,若内存所缓存的子目录缓存表中包括第一辅助节点的节点索引对应的第一子目录集,则计算机设备获取第一子目录集,其中,第一子目录集中包括至少一个子目录信息,每个子目录信息用于表征第一辅助节点在树形结构中对应的一个子节点,子目录信息中包括子节点的节点名称和子节点的节点索引。

在一些实施例中,内存中设置有子目录缓存表,子目录缓存表中包括至少一个历史辅助节点对应的子目录集,其中,历史辅助节点是指在确定第一元数据节点的节点索引过程中,曾经作为第一辅助节点的元数据节点。可选地,历史辅助节点还包括确定历史第一元数据节点的节点索引过程中,曾经作为第一辅助节点的元数据节点。

可选地,子目录包括第一辅助节点在树形结构对应的子节点,以及以第一辅助节点在树形结构对应的子节点为父节点的其它子节点。也即,对于子目录缓存表,第一辅助节点在树形结构中对应的一个子节点是指访问第一辅助节点之后,在树形结构中能够访问的任一个元数据节点。

示例性地,计算机设备在子目录缓存表中查找第一辅助节点的节点索引,若在子目录缓存表查找第一辅助节点的节点索引对应的第一子目录集,则计算机设备执行下文中的子步骤333-b2,若在子目录缓存表未查找到第一辅助节点的节点索引对应的第一子目录集,则计算机设备执行上文中的子步骤333-c。

子步骤333-b2,若至少一个子目录信息中包括第二辅助节点的子目录信息,则计算机设备从第二辅助节点的子目录信息中确定第二辅助节点的节点索引,并跳过基于第一辅助节点的节点索引和第二辅助节点的节点名称,从边缘映射表中查找第二辅助节点的节点索引的步骤。

可选地,在获取第一子目录集之后,计算机设备基于第二辅助节点的节点名称,从第一子目录集中查找第二辅助节点的子目录信息,若第一子目录基中包括第二辅助节点的子目录信息,则计算机设备直接从第二辅助节点的子目录信息中获取第二辅助节点的节点索引。若第一子目录基中不包括第二辅助节点的子目录信息,则计算机设备执行步骤子步骤333-c,从边缘映射表中查找第二辅助节点的节点索引。

表6 子目录缓存表

其中,如表6所示,节点索引用于表征子目录缓存表中包括的至少一个历史辅助节点的节点索引。例如,节点索引为1的历史辅助节点索对应的子目录集为{,,,},其中,表示一个子目录信息,具体地,表示对于节点名称为dir1的子节点,该子节点的节点索引为20。

在一些实施例中,若第一子目录集中不包括第二辅助节点的子目录信息,计算机设备执行子步骤333-c,从边缘映射表中查找第二辅助节点的节点索引之后,基于第二辅助节点的节点名称和第二辅助节点的节点名称生成第二辅助节点的子目录信息,并将第二辅助节点的子目录信息加入到该第一辅助节点的第一子目录集中。

可选地,子目录集具有容量上限,若在第二辅助节点的子目录信息加入到该第一辅助节点的第一子目录集之前,第一辅助节点的第一子目录集达到容量上限,则从第一辅助节点的第一子目录集中确定至少一个待删除的子目录信息,删除该至少一个待删除的子目录信息,并将第二辅助节点的子目录信息加入到该第一辅助节点的第一子目录集。

示例性地,待删除的子目录信息包括以下至少一类:访问频率最低的子目录信息,加入第一子目录集的时刻最早的子目录信息。

由于访问内存中存储的子目录缓存表的速度比访问硬盘中的边缘映射表更快,因此通过这种方式有助于提升主管理节点的读写速度,提升其对文件管理请求的响应速度。

下面通过几个实施例对提升本申请实施例中主管理节点的读写速度的方法进行介绍说明。

在一些实施例中,子步骤336,基于第一元数据节点的节点索引从节点映射表中,确定第一元数据之前,还包括以下几个步骤。

子步骤334,若内存所缓存的节点缓存表中包括第一元数据节点的节点索引,则从节点缓存表中获取第一元数据节点的节点索引对应的元数据,将第一元数据节点的节点索引对应的元数据确定为第一元数据,节点缓存表用于存储从节点映射表中历史查找过的至少一个元数据。

在一些实施例中,节点缓存表的形式与节点映射表的形式一致,节点缓存表在内存中存储,节点缓存表的容量小于节点映射表的容量。可选地,节点缓存表中包括第一时间段内访问最频繁的至少一个第一元数据节点的节点索引和该至少一个第一元数据的节点索引分别对应的元数据。节点缓存表也称为节点缓存(Inode Cache)。

表7 节点缓存表

如表7所示,节点缓存表中包括元数据节点的节点索引1对应的元数据。

子步骤335,若节点缓存表中不包括第一元数据节点的节点索引,则从基于第一元数据节点的节点索引从节点映射表中,确定第一元数据的步骤开始执行。

示例性地,在确定出第一元数据节点的节点索引之后,计算机设备在节点缓存表中查找第一元数据节点的节点索引;若节点缓存表中包括第一元数据节点的节点索引,则从节点缓存表中读取第一元数据节点的节点索引对应的元数据;若节点缓存表中不包括第一元数据节点的节点索引,则计算机设备执行子步骤336,从硬盘的节点映射表中获取第一元数据。

在一些实施例中,若节点缓存表中不包括第一元数据节点的节点索引,则计算机设备执行子步骤336,从硬盘中的节点映射表中获取第一元数据。随后,计算机设备将第一元数据节点的节点索引和第一元数据增加到节点缓存表中。

可选地,若节点缓存表达到容量上限,则计算机设备从节点缓存表中确定待删除的节点索引,并将该节点索引以及该节点索引对应的元数据从节点缓存表中删除,并将第一元数据节点的节点索引和第一元数据增加到节点缓存表。

示例性地,删除的节点索引包括以下至少之一:节点缓存表中查找频率最低的节点索引,节点缓存表中最早的节点索引。

由于从硬盘读取元数据到内存的速度较慢,因此在硬盘中的节点映射表中查找元数据之前,先从内存中缓存的内存缓存表中查找元数据,有助于节省元数据的读写耗时,提升主管理节点的读写速度,提升其对文件管理请求的响应速度。

下面通过几个示例性地实施例对另一种第一元数据的确定方法进行介绍说明。

在一些实施例中,步骤330,基于目录映射表和第一元数据的访问目录,确定第一元数据之前,还包括以下几个步骤,以下几个步骤的执行主体为计算机设备。

步骤328,基于第一元数据的访问目录和内存中存储的目录缓存表,确定第一元数据。

在一些实施例中,目录缓存表包括边缘缓存表,边缘缓存表用于存储从边缘键值表中历史查找过的至少一组父子节点。

在一些实施例中,目录缓存表是指在内存中存储的部分目录映射表。可选地,目录缓存表包括目录映射表中访问最频繁的部分子表。目录映射表的形式与目录缓存表的形式一致,有关目录映射表所映射具体内容请参考上文实施例,在此不进行赘述。

可选地,目录缓存表包括以下至少之一:边缘缓存表、节点缓存表、子目录缓存表。其中,边缘缓存表用包括边缘映射表的部分子表,节点缓存表包括边缘映射表的部分子表。示例性地,目录缓存表中包括边缘缓存表。示例性地,目录缓存表中包括节点缓存表。示例性地,目录缓存表中包括子目录缓存表。示例性地,目录缓存表中包括边缘缓存表和节点缓存表。有关子目录缓存表的具体内容参考上文实施例,在此不进行赘述。

可选地,目录缓存表中的存储内容基于最近最少使用(Least Recently Used,LRU)机制维护。也即,对于目录缓存表中包括的任一个缓存表(如上文实施例中的边缘缓存表、节点缓存表),在该缓存表达到容量上限情况下,计算机设备将该缓存表中访问频率最低、写入时刻最早的内容删除,以便向该缓存表增添新的内容。

考虑到节点映射表中包括的元数据的数据量相较于目录缓存表中存储信息的数据量更大,且分布式文件系统中包括的元数据数量较多,节点缓存表的命中效率可能较低。在内存的存储容量紧张的情况下,可以优先在内存中设置边缘缓存表、子目录缓存表,以便获得较大的读写收益。

在一些实施例中,目录缓存表包括边缘缓存表,边缘缓存表用于存储从边缘键值表中历史查找过的至少一组父子节点。在这种情况下,步骤328,基于第一元数据的访问目录和内存中存储的目录缓存表,确定第一元数据,包括以下几个子步骤,以下几个子步骤的执行主体为计算机设备。

子步骤328-a,基于第一元数据的访问目录,从边缘缓存表中确定第一元数据节点的节点索引,第一元数据节点用于存储第一元数据。

在一些实施例中,在该步骤中,计算机设备以多个元数据节点中的根节点作为第一辅助节点,基于第一元数据的访问目录确定第二辅助节点的节点名称。随后计算机设备基于第一辅助节点的节点索引和第二辅助节点的节点名称组成的第一父子节点组合,从边缘缓存表中查找第一父子节点组合对应的子节点的节点索引,作为第二辅助节点的节点索引;若第二辅助节点是第一元数据的访问目录所包括的最后一个元数据节点,则计算机设备将第二辅助节点的节点索引确定为第一元数据节点的节点索引;否则,计算机设备将第二辅助节点作为新的第一辅助节点,再次从基于第一元数据的访问目录确定第二辅助节点的节点名称的步骤开始执行。

该步骤的具体实施方式与上文实施例中的子步骤333-a、子步骤333-c和子步骤333-e类似,具体请参考上文实施例,在此不进行赘述。

可选地,在上述步骤中若计算机设备无法从边缘缓存表中查找第一父子节点组合对应的节点索引,也即,边缘缓存表不包括第一父子节点组合,则计算机设备从硬盘中存储的边缘映射表中查找第一父子节点组合对应的节点索引。示例性地,若计算机设备无法从边缘缓存表中查找第一父子节点组合对应的节点索引,则从硬盘中存储的边缘映射表中查找第一父子节点组合对应的节点索引之后,将该第一父子节点组合对应的节点索引加入到边缘内存表中。

可选地,在目录缓存表包括子目录缓存表,则在计算机设备无法从边缘缓存表中查找第一父子节点组合对应的节点索引的情况下,计算机设备从子目录缓存中查找第一辅助节点的节点索引对应的子目录集,并尝试从子目录集中确定第二辅助节点的节点索引。

子步骤328-b,基于第一元数据节点的节点索引,确定第一元数据。

可选地,在目录缓存表中包括节点缓存表的情况下,计算机设备确定节点缓存表中是否包括第一元数据的节点索引,若节点缓存表中包括第一元数据节点的节点索引,则计算机设备从节点缓存表中获取第一元数据节点的节点索引对应的元数据,将第一元数据节点的节点索引对应的元数据确定为第一元数据。若节点缓存表中不包括第一元数据节点的节点索引,则计算机设备从基于第一元数据节点的节点索引从节点映射表中,确定第一元数据的步骤开始执行。

可选地,在目录缓存表中不包括节点缓存表的情况下,计算机设备基于第一元数据节点的节点索引从节点映射表中,确定第一元数据。有关该步骤的具体实施方式请参考上文实施例,在此不进行限定。

若步骤328无法基于第一元数据的访问目录和目录缓存表确定第一元数据,则计算机设备从基于目录映射表和第一元数据的访问目录,确定第一元数据的步骤开始执行。

通过上述方法在基于第一元数据的访问目录从硬盘中查找第一元数据之前,从内存的目录缓存表中先尝试查找第一元数据,通过这种方式有助于提升主管理节点文件读写效率。

下面通过一个实施例对基于第一元数据的访问目录查找第一元数据的过程进行介绍说明,本示例主要包括以下几个步骤,该几个步骤的执行主体为计算机设备。

步骤B10,在确定出第一元数据的访问目录之后,计算机设备以多个元数据节点中的根节点作为第一辅助节点,基于第一元数据的访问目录确定第二辅助节点的节点名称,并基于第一辅助节点的节点索引和第二辅助节点的节点名称组成的第一父子节点组合,从边缘缓存表中查找第二辅助节点的节点索引。

步骤B20,若从边缘缓存表中包括第二辅助节点的节点索引,则计算机设备从内存中直接获取第二辅助节点的节点索引,并直接执行步骤B60。

步骤B30,若边缘缓存表中不包括第二辅助节点的节点索引,则计算机设备从子目录缓存表中查找第一辅助节点的节点索引对应的第一子目录集,并基于第二辅助节点的节点名称,从第一子目录集查找第二辅助节点的节点索引。

可选地,步骤B30还可以实现成为:计算机设备从子目录缓存表中查找第一辅助节点的节点索引对应的第一子目录集,并基于第一元数据的访问目录确定第一元数据节点的节点名称,基于第一元数据节点的节点名称从第一子目录集查找第二辅助节点的节点索引。若第一子目录集包括第一元数据节点的子目录信息,则基于第一元数据节点的子目录信息,直接得到第一元数据节点的节点随后从步骤B70开始执行。

步骤B40,若子目录缓存表包括第一子目录集,且第一子目录集包括第二辅助节点的子目录信息,则从第二辅助节点的子目录信息中获取第二辅助节点的节点索引,并直接执行B60。

步骤B50,若子目录缓存表不包括第一子目录集,或者第一子目录集不包括第二辅助节点的子目录信息,则基于第一父子节点组合,从边缘映射表中查找第二辅助节点的节点索引。

步骤B60,若第二辅助节点是第一元数据的访问目录所包括的最后一个元数据节点,则将第二辅助节点的节点索引确定为第一元数据节点的节点索引;否则,将第二辅助节点作为新的第一辅助节点,再次从基于第一元数据的访问目录确定第二辅助节点的节点名称的步骤开始执行。

步骤B70,从节点缓存表中查找第一元数据节点的节点索引。

步骤B80,若节点缓存表中包括第一元数据节点的节点索引,则从节点缓存表中获取第一元数据节点的节点索引对应的元数据,将第一元数据节点的节点索引对应的元数据确定为第一元数据。

步骤B90,若节点缓存表中不包括第一元数据节点的节点索引,则从节点映射表中查找第一元数据节点的节点索引对应的元数据;将第一元数据节点的节点索引对应的元数据,确定为第一元数据。

有关本实施例中详细介绍的内容请参考上文实施例,在此不进行赘述。

分布式文件系统在使用一段时间之后,元数据会增多,元数据规模超过100亿后,若用户在读取数据时计算机设备直接从硬盘的RocksDB中存储的目录映射表中读取元数据,则效率很低。本实施例利用缓存将计算机设备已经读过的或者编辑过的目录映射表中的部分表格内容(最近读过的数据+频繁读取的数据),在内存中保留为目录缓存表。用户查询某个元数据时,先从目录缓存表中查找该元数据。如果内存的目录映射表中存在该元数据,则直接将该元数据返回给客户端,不需要在硬盘中查询RocksDB,通过这种方式有助于显著提升主管理节点的读性能。

图6是本申请再一个示例性地实施例提供的分布式文件系统的数据管理方法的示意图。如图6所示,本实施例包括以下几个步骤,该几个步骤的执行主体为计算机设备,也即上文实施例中的主管理节点。

步骤310,获取针对分布式文件系统中第一文件的文件管理请求,文件管理请求用于请求提供关于第一文件的服务。

步骤320,基于文件管理请求,确定第一元数据的访问目录,其中,第一元数据用于在分布式文件系统中管理第一文件,第一元数据的访问目录用于指示获取第一元数据需按序访问的多个元数据节点。

步骤330,基于目录映射表和第一元数据的访问目录,确定第一元数据,其中,目录映射表用于表征元数据与元数据的访问目录之间的映射关系,目录映射表存储在硬盘中。

步骤340,基于第一元数据,执行关于第一文件的服务。

有关步骤310-340的具体介绍请参考上文实施例,在此不进行赘述。

步骤350,若文件管理请求用于更改或者删除第一文件,则将文件管理请求加入系统日志,系统日志用于记录至少一个文件管理请求;更新系统日志的版本号。

在一些实施例中,系统日志包括表征分布式文件系统运行过程接收到的至少一条文件管理请求。以便在分布式文件系统基于系统日志对元数据进行同步更新。系统日志也称为编辑日志。

可选地,在文件管理请求用于请求查询文件的情况下,主管理节点不会将该文件管理请求加入到系统日志中,或者,主管理节点不会将更新系统日志的版本号。可选地,在文件管理请求用于更改或者删除第一文件的情况下,主管理节点将该文件管理请求加入到系统日志中,并更新系统日志的版本号。例如,在将文件管理请求加入到系统日志之后,主管理节点更新系统日志的版本号。

在一些实施例中,系统日志的版本号用于标识一个版本的系统日志。若两个系统日志各自具有的版本号不同,则说明该两个系统日志的日志内容不同;若两个系统日志各自具有的版本号相同,则说明该两个系统日志的日志内容相同。

通过这种方式能够减少对系统日志、系统日志的版本号进行无意义的更新,有助于减轻分布式文件系统中主管理节点对系统日志的维护压力。

在一些实施例中,版本号通过数值表示。可选地,更新后的版本号的数值大于更新前的版本号的数值。示例性地,相比于更新前的版本号,更新后的版本号的数值增加k,k为正数。可选地,更新后的版本号的数值小于更新前的版本号的数值。示例性地,相比于更新前的版本号,更新后的版本号的数值减少k,k为正数。

在一些实施例中,版本号与将文件管理请求增加到系统日志的时刻有关。可选地,系统日志的版本号等于向该系统日志加入文件管理请求时的时刻。示例性地,若某个文件管理请求加入到系统日志的时刻为12:03:10,则更新后的版本号为120310。由于在很短一段时间内,分布式文件系统可能接受到多个文件管理请求,因此这种方式适用于在分布式文件系统中的闲时使用。

步骤360,与备用元数据管理设备进行版本号比较,确定第一系统日志,第一系统日志的版本号为最新版本号;与备用元数据管理设备同步第一系统日志。

备用元数据管理设备也称为从管理节点。有关从管理节点的具体介绍请参考上文实施例。在主管理节点工作过程中,从管理节点处于休眠状态,也即从管理节点无需对文件管理请求进行响应。

为了提升分布式文件系统的稳定性,避免主管理节点发生错误导致整个分布式文件系统无法正常使用,从管理节点与主管理节点之间存在数据同步过程,通过数据同步过程保证从管理节点和主管理节点中分别存储的元数据一致。可选地,主管理节点和从管理节点中具有各自的系统日志,两个管理节点均通过系统日志对各自存储的元数据进行更新。

可选地,第一系统日志是指多个版本的系统日志中,版本号最新的系统日志。示例性地,若更新后的版本号的数值大于更新前的版本号的数值,则第一系统日志是版本号最大的系统日志;若更新后的版本号的数值小于更新前的版本号的数值,则第一系统日志是版本号最小的系统日志。

示例性地,第一系统日志是指多个版本的系统日志中,版本号最靠近当前时刻的系统日志。

在该步骤中,主管理节点与从管理节点进行系统日志的版本号比较,以便从主管理节点中存储的系统日志和从管理节点中存储的系统日志中,确定出第一系统日志。若从管理节点具有第一系统日志,而主管理节点中不具有第一系统日志,则主管理节点在从管理节点处获取第一系统日志,并删除主管理节点中具有其它版本号的系统体日志。若主管理节点具有第一系统日志,而从管理节点中不具有第一系统日志,则从管理节点向主管理节点请求获取第一系统日志,并删除从管理节点中具有其它版本号的系统日志。

步骤370,若存储有除了第一系统日志之外具有其它版本号的系统日志,则删除其它版本号的系统日志。

在一些实施例中,在步骤370之后,本方法还包括:主管理节点根据第一系统日志,对目录映射表中与第一元数据有关的内容进行更新。示例性地,该步骤可以通过主管理节点中的回放线程完成。回放线程用于基于系统日志中的文件管理请求对主管理节点中存储的元数据进行更新。

可选地,在文件管理请求用于删除第一文件的情况下,主管理节点根据第一系统日志获取文件管理请求,并将目录映射表中与第一元数据有关的内容进行删除。示例性地,第一元数据有关的内容包括以下至少之一:第一元数据、第一元数据节点的节点索引、第一元数据节点的节点名称、包括第一元数据节点的父子节点组合。

例如,在目录映射表包括边缘映射表的情况下,主管理节点将边缘映射表中包括第一元数据节点的父子节点组合,以及该父子节点组合对应的子节点的节点索引删除。又例如,在目录映射表包括节点映射表的情况下,主管理节点将节点映射表中包括第一元数据节点的节点索引,以及第一元数据删除。

可选地,在文件管理请求用于编辑第一文件的情况下,主管理节点根据第一系统日志获取文件管理请求,并将目录映射表中与第一元数据有关的内容进行编辑。例如,在编辑后的第一文件划分成的数据块发生变化,或者数据块存储在的数据管理节点发生变化的情况下,主管理节点生成更新后的第一元数据,在目录映射表包括节点映射表的情况下,主管理节点使用更新后的第一元数据替换第一元数据节点的节点索引对应的第一元数据。

从管理节点基于系统日志对元数据进行更新的过程与主管理节点相同,具体请参考上文实施例,在此不进行赘述。

相比于相关技术中使用Fsimage(在某个检查时间点对管理节点的内存进行的内存快照)在主管理节点和从管理节点中实现元数据的同步,本申请实施例中无需在系统内存中加载Fsimage,有助于提升主管理节点的重启耗时。

而且,系统日志的数据量小于Fsimage,有助于减少主管理节点和从管理节点在数据同步过程占用的传输带宽。

图7是相关技术中元数据的更新过程的示意图。

Active Namenode(主管理节点)和Standby Namenode(从管理节点)都会接受日志文件,区别在于Standby Namenode会将日志文件和本地旧的Fsimage文件合并成一个新的Fsimage文件(Fsimage文件中包含了所有namenode(元数据),每次Namenode重启时都需要将Fsimage中的元数据全部加载到内存)。最后Standby Namenode将新的Fsimage发给Active Namenod,这样两边就都有了新的Fsimage。

其中,分布式文件系统将元数据持久化到Fsimage中,每次集群启动时会将元数据从Fsimage加载到内存。也即Fsimage可以理解成从某一检查点对系统内存拍摄的内存快照。Fsimage保存了最新的元数据检查点,在分布式文件系统启动时,主管理节点加载Fsimage的信息,其中包含了整个分布式文件系统的所有目录和文件的信息,也即全部的元数据。对于某个文件来说,用于管理该文件的元数据中包括数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。

图8是本申请一个示例性实施例提供的元数据的更新过程的示意图。

如图8所示,改造后的Namenode不再需要Fsimage,因为元数据会被写到RocksDB中存储的目录映射表中,不需要再往Fsimage写一份。

Active Namenode(可以对外提供服务)接收到写入操作时,需要写入内存并更新Journal(文件日志)中的editlog(系统日志)。Active Namenode内部有个回放editlog线程,会定时批量的将数据回放RocksDB,待对应的editlog被回放完会更新自己的txid(editlog的序号)。

其中,Journal负责存储分布式文件系统的命名空间中的editlog。系统日志接收来自Active Namenode的编辑日志,并将其持久化存储在本地磁盘上。这样,即使ActiveNamenode发生故障,Standby Namenode仍然可以从JournalNode获取最新的编辑日志,以确保数据的一致性和持久性。

Standby Namenode也会有内部线程(相当于Active Namenode的备份),定时回放editlog(系统日志)。并更新最新回放过的txid(版本号)。

删除editlog时,需比较这些Active Namenode和Standby Namenode的txid,选择其中一个旧的txid。并以它为准,比它更旧的editlog就是可以删除的。

图9是基于本申请实施例提供的方案进行实验的效果对比图。

如图9所示,相关技术中5亿元数据需要占用350GB内存,本申请提供的方案中,100亿数据也仅需要60GB内存开销。相关技术中元数据的管理节点(如主管理节点Namenode)进行重启耗时65分钟,本申请提供的方案中,100亿数据的Namenode重启也仅需要4分钟。在8:1的读写比的场景下,使用目录映射表对Namenode的读写性能影响不大。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

图10示出了本申请一个示例性实施例提供的分布式文件系统的数据管理装置的框图。该装置可以通过软件、硬件或者两者的结合实现成为分布式文件系统的数据管理设备的全部或一部分。该装置1000可以包括:请求获取模块1010、目录确定模块1020、数据确定模块1030和服务执行模块1040。

请求获取模块1010,用于获取针对所述分布式文件系统中第一文件的文件管理请求,所述文件管理请求用于请求提供关于所述第一文件的服务。

目录确定模块1020,用于基于所述文件管理请求,确定第一元数据的访问目录,其中,所述第一元数据用于在所述分布式文件系统中管理所述第一文件,所述第一元数据的访问目录用于指示获取所述第一元数据需按序访问的多个元数据节点。

数据确定模块1030,用于基于目录映射表和所述第一元数据的访问目录,确定所述第一元数据,其中,所述目录映射表用于表征元数据与所述元数据的访问目录之间的映射关系,所述目录映射表存储在硬盘中。

服务执行模块1040,用于基于所述第一元数据,执行关于所述第一文件的服务。

在一些实施例中,所述分布式文件系统中包括的各个所述元数据分别对应的所述元数据节点之间连接成树形结构,所述目录映射表包括边缘映射表和节点映射表,其中,所述边缘映射表用于表征所述树形结构中具有父子关系的两个元数据节点之间的映射关系,所述节点映射表用于表征所述元数据节点与所述元数据节点所存储的元数据之间的映射关系;所述数据确定模块1030包括:索引确定单元,用于基于所述第一元数据的访问目录从所述边缘映射表中,确定第一元数据节点的节点索引,所述第一元数据节点是指用于存储所述第一元数据的元数据节点;元数据确定单元,用于基于所述第一元数据节点的节点索引从所述节点映射表中,确定所述第一元数据。

在一些实施例中,所述第一元数据的访问目录中包括所述多个元数据节点各自的节点名称,所述多个元数据节点中相邻的两个元数据节点在所述树形结构中互为父子节点,所述边缘映射表包括父子节点组合和子节点的节点索引之间的映射关系,所述父子节点组合包括父节点的节点索引和所述父节点对应的子节点的节点名称;所述索引确定单元包括:名称确定子单元,用于以所述多个元数据节点中的根节点作为第一辅助节点,基于所述第一元数据的访问目录确定第二辅助节点的节点名称,所述根节点为所述树形结构中的顶层节点,所述根节点的节点索引已知,所述第二辅助节点为所述第一辅助节点的子节点;组合确定子单元,用于基于所述第一辅助节点的节点索引和所述第二辅助节点的节点名称组成的第一父子节点组合,从所述边缘映射表中查找所述第一父子节点组合对应的节点索引,作为所述第二辅助节点的节点索引;索引确定子单元,用于在所述第二辅助节点是所述第一元数据的访问目录所包括的最后一个元数据节点的情况下,将所述第二辅助节点的节点索引确定为所述第一元数据节点的节点索引;否则,将所述第二辅助节点作为新的第一辅助节点,再次从所述基于所述第一元数据的访问目录确定第二辅助节点的节点名称的步骤开始执行。

在一些实施例中,所述装置1000还包括第一缓存查找模块,用于在内存所缓存的子目录缓存表中包括所述第一辅助节点的节点索引对应的第一子目录集的情况下,获取所述第一子目录集,其中,所述第一子目录集中包括至少一个子目录信息,每个所述子目录信息用于表征所述第一辅助节点在所述树形结构中对应的一个子节点,所述子目录信息中包括所述子节点的节点名称和所述子节点的节点索引;所述至少一个子目录信息中包括所述第二辅助节点的子目录信息的情况下,从所述第二辅助节点的子目录信息中确定所述第二辅助节点的节点索引,并跳过所述基于所述第一辅助节点的节点索引和所述第二辅助节点的节点名称,从所述边缘映射表中查找所述第二辅助节点的节点索引的步骤。

在一些实施例中,所述节点映射表包括至少一个所述元数据节点的节点索引和所述元数据节点的节点索引对应的元数据;所述元数据确定单元,包括:从所述节点映射表中查找所述第一元数据节点的节点索引对应的元数据;将所述第一元数据节点的节点索引对应的元数据,确定为所述第一元数据。

在一些实施例中,所述装置1000还包括第二缓存查找模块,用于在内存所缓存的节点缓存表中包括所述第一元数据节点的节点索引的情况下,从所述节点缓存表中获取所述第一元数据节点的节点索引对应的元数据,将所述第一元数据节点的节点索引对应的元数据确定为所述第一元数据,所述节点缓存表用于存储从所述节点映射表中历史查找过的至少一个元数据;在所述节点缓存表中不包括所述第一元数据节点的节点索引的情况下,从所述基于所述第一元数据节点的节点索引从所述节点映射表中,确定所述第一元数据的步骤开始执行。

在一些实施例中,所述装置1000还包括第三缓存查找模块,用于基于所述第一元数据的访问目录和内存中存储的目录缓存表,确定所述第一元数据;若无法基于所述第一元数据的访问目录和所述目录缓存表确定所述第一元数据,则从所述基于目录映射表和所述第一元数据的访问目录,确定所述第一元数据的步骤开始执行。

在一些实施例中,所述目录缓存表包括边缘缓存表,所述边缘缓存表用于存储从边缘键值表中历史查找过的至少一组父子节点;所述第三缓存查找模块,用于基于所述第一元数据的访问目录,从所述边缘缓存表中确定第一元数据节点的节点索引,所述第一元数据节点用于存储所述第一元数据;基于所述第一元数据节点的节点索引,确定所述第一元数据。

在一些实施例中,所述装置1000还包括元数据管理模块,用于在所述文件管理请求用于请求更改所述第一文的在情况下,基于所述文件管理请求修改所述目录映射表中存储的所述第一元数据;在所述文件管理请求用于请求删除所述第一文件的情况下,基于所述文件管理删除所述目录映射表中与所述第一元数据有关的映射关系;在所述文件管理请求用于请求访问所述第一文件的情况下,向客户端发送所述第一元数据,以便所述客户端根据第一元数据从所述分布式文件系统中的文件存储设备中获取所述第一文件的文件内容。

在一些实施例中,所述装置1000还包括日志同步模块,用于若所述文件管理请求用于更改或者删除所述第一文件,则将所述文件管理请求加入系统日志,所述系统日志用于记录至少一个所述文件管理请求;更新所述系统日志的版本号;与备用元数据管理设备进行版本号比较,确定第一系统日志,所述第一系统日志的版本号为最新版本号;与所述备用元数据管理设备同步所述第一系统日志;若存储有除了所述第一系统日志之外具有其它版本号的系统日志,则删除所述其它版本号的系统日志。

在一些实施例中,所述目录确定模块1020,用于从所述文件管理请求中读取所述第一元数据的访问目录;或者,基于所述文件管理请求确定多个元数据节点各自的节点名称,对所述多个元数据节点各自的节点名称进行排序,得到所述第一元数据的访问目录。需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。上述实施例提供的装置的有益效果请参考方法侧实施例的描述,这里也不再赘述。

图11示出了本申请一个示例性实施例提供的计算机设备的结构框图。该计算机设备1100可以是上文介绍的分布式文件系统中的主管理节点。

通常,计算机设备1100包括有:处理器1101和存储器1102。

处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是有形的和非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质存储有至少一段程序,该至少一段程序由处理器1101加载并执行以实现上述各方法实施例提供的分布式文件系统的数据管理方法。

本申请实施例还提供一种计算机可读存储介质,该存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述各方法实施例提供的分布式文件系统的数据管理方法。

该计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括随机存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦写可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦写可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、闪存或其他固态存储技术,DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知该计算机存储介质不局限于上述几种。

本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机程序,以实现上述各方法实施例提供的分布式文件系统的数据管理方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

需要说明的是,本申请在收集用户的相关数据之前以及在记录用户的相关数据(如用户存储的文件、用户对文件进行编辑过程记录的编辑信息)的过程中,都可以显示提示界面、弹窗或输出语音提示信息,该提示界面、弹窗或语音提示信息用于提示用户当前正在搜集其相关数据,使得本申请仅仅在获取到用户对该提示界面或者弹窗发出的确认操作后,才开始执行获取用户相关数据的相关步骤,否则(即未获取到用户对该提示界面或者弹窗发出的确认操作时),结束获取用户相关数据的相关步骤,即不获取用户的相关数据。换句话说,本申请中对用户在分布式文件系统中存储的文件进行的管理,是根据相关国家法律法规的要求,获取个人信息主体的知情同意或单独同意都是在用户同意并授权的情况下进行的,并在法律法规及个人信息主体的授权范围内,开展后续数据使用及处理行为且相关用户数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同切换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 多版本数据存储管理方法及装置、电子设备、存储介质
  • 分布式对象存储数据冗余方法、装置、设备及存储介质
  • 一种数据管理方法、装置、设备及存储介质
  • 绩效数据管理方法、装置、计算机设备及存储介质
  • 业务数据跟踪与管理方法、装置、计算机设备和存储介质
  • 分布式文件系统元数据管理方法、装置、设备及存储介质
  • 分布式文件系统存储管理方法、装置、设备及存储介质
技术分类

06120116586221