CN109684282A - 一种构建元数据缓存的方法及装置 - Google Patents
一种构建元数据缓存的方法及装置 Download PDFInfo
- Publication number
- CN109684282A CN109684282A CN201811405321.4A CN201811405321A CN109684282A CN 109684282 A CN109684282 A CN 109684282A CN 201811405321 A CN201811405321 A CN 201811405321A CN 109684282 A CN109684282 A CN 109684282A
- Authority
- CN
- China
- Prior art keywords
- catalogue
- meta data
- subitem
- cache node
- data server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种构建元数据缓存的方法及装置,包括:MDS接收元数据请求,若树形缓存结构中不存在第一目录的缓存节点且自身为归属MDS,可创建第一目录的缓存节点,根据第一目录的标识读取OSD中存储的第一元数据文件,将第一元数据文件的内容并保存到第一目录对应的缓存节点中。由于第一元数据文件的内容包括第一目录的子项的元数据信息,通过上述处理,无需从OSD中依次读取子树根目录到第一目录的路径上每个目录的元数据文件,就可以构建出满足元数据处理要求的缓存结构,从而有效减少从OSD读盘的次数,缩短元数据请求的处理时间,提高元数据处理效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种构建元数据缓存的方法及装置。
背景技术
分布式文件***中,元数据服务器(metadata server,MDS)通常采用动态子树分区的方式管理元数据缓存,如图1所示,整个用户的目录树被分成多个动态子树分区,每个MDS负责管理其中部分动态子树的元数据缓存,处理动态子树下的元数据操作,并维护元数据缓存与对象存储设备(object storage devices,OSD)中存储的元数据文件的一致性。
由于MDS采用树形的缓存结构管理元数据缓存,当MDS对某一文件或目录的元数据信息进行处理时,MDS需构建出该文件或目录所在的动态子树的子树根目录至该文件或目录的路径上所有目录的缓存结构。
现有技术中,当MDS接收到对某一文件或目录的元数据进行处理的元数据请求,但该MDS中不存在该文件或目录的父目录的元数据缓存时,会触发发现(discover)流程,首先查询该文件或目录所在的动态子树的子树根目录到当前文件或目录的路径,然后由子树根目录开始逐层向下进行查找(lookup)操作。每一次lookup操作中,在父目录的元数据缓存中查找子目录的元数据信息,若子目录的元数据信息不存在,根据父目录的元数据文件在OSD中的存储位置,从OSD中读取父目录的元数据文件的内容,并保存到父目录的元数据缓存中。可以看出,现有技术中每构建一级元数据缓存需要进行一次lookup操作,这使得子树根目录到待操作的文件或目录的路径越长,discover流程中lookup的次数越多,discover流程的耗时也越长。尤其是在MDS刚接管原先由故障MDS管理的动态子树的情况下,由于需要重建动态子树的缓存结构,接管后的前几次元数据请求触发的discover流程几乎每次lookup操作都需要去OSD中读取元数据文件,更是明显增加了discover流程的耗时,使得元数据处理的效率较差。
发明内容
本申请提供一种构建元数据缓存的方法及装置,用以解决现有技术中discover流程耗时较长,元数据处理效率较差的技术问题。
第一方面,本申请实施例提供一种构建元数据缓存的方法,该方法包括:元数据服务器接收客户端代理设备发送的元数据请求,所述元数据请求中包括第一标识和第二标识,所述第一标识为第一目录的标识,所述第二标识为所述第一目录的子项的标识;若所述元数据服务器保存的树形缓存结构中不存在所述第一目录对应的缓存节点,且所述元数据服务器为所述子项所在的动态子树的归属元数据服务器,所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点;所述元数据服务器根据所述第一标识,读取存储设备中存储的第一元数据文件,并将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点,所述第一元数据文件为所述第一目录的元数据文件,所述第一元数据文件的内容包括所述子项的元数据信息。
本申请实施例中,当元数据服务器接收到针对第一目录的子项的元数据请求时,在元数据服务器的树形缓存结构中不存在第一目录的缓存节点,且该元数据服务器为第一目录的子项所在的动态子树的归属元数据服务器的情况下,元数据服务器可在树形缓存结构中创建第一目录对应的缓存节点,并根据第一目录的标识读取存储设备中存储的第一元数据文件,将第一元数据文件的内容保存到第一目录对应的缓存节点中。第一元数据文件的内容包括第一目录的子项的元数据信息,本申请实施例中,通过在树形缓存结构中创建第一目录对应的缓存节点,将第一元数据文件的内容保存到创建的第一目录对应的缓存节点中,可以构建出支持对第一目录的子项进行元数据操作的缓存结构,而无需从上到下依次从存储设备中读取子树根目录到第一目录的目录标识路径上每个目录的元数据文件并保存,因此,本申请实施例提供的方法可以有效减小discover流程从对象存储设备读盘的次数,缩短元数据请求的处理时间,加快流程返回主业务处理。
在一种可能的设计中,所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点,包括:所述元数据服务器获取所述子项所在的动态子树的子树根目录至所述第一目录的目录标识路径;所述元数据服务器按照所述子树根目录至所述第一目录的顺序,依次对所述目录标识路径中的每一个目录执行如下处理,直至所述第一目录对应的缓存节点创建完成:针对所述目录标识路径中的任一目录,若所述树形缓存结构不存在该目录对应的缓存节点,则在所述树形缓存结构中创建该目录对应的缓存节点;
所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点之后,还包括:所述元数据服务器在所述树形缓存结构中创建所述子项对应的缓存节点。
由于采用的是树形缓存结构,必须基于创建的上一级目录的缓存节点,创建下一级目录的缓存节点。因此,本申请实施例中,构建在树形缓存结构中创建第一目录对应的缓存节点或者构建第一目录的缓存结构意味着,从子树根目录开始,由上至下的依次创建子树根目录至第一目录的目录标识路径上每一个目录对应的缓存节点。如此,可支持元数据服务器在第一目录对应的缓存节点中对元数据信息进行处理。
在一种可能的设计中,所述元数据服务器将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还包括:所述元数据服务器为所述第一目录对应的缓存节点设置自身不可信标记和子项可信标记,为所述子项对应的缓存节点设置自身可信标记和子项不可信标记,为所述子树根目录至所述第一目录的目录标识路径中新创建的其它目录对应的缓存节点设置自身不可信标记和子项不可信标记。
本申请实施例中,元数据服务器在创建第一目录对应的缓存节点的过程中,只会创建支持对第一目录的子项的元数据信息进行处理的基本缓存结构,即虽然创建了子树根目录至第一目录的目录标识路径上每一个目录对应的缓存节点,但仅从存储设备中获取第一元数据文件的内容并保存,而对于该目录标识路径上的其它目录对应的缓存节点,则延后获取元数据文件的内容并保存。可以理解,对于树形缓存结构中任一目录对应的缓存节点,如果元数据服务器曾接收到针对该目录的子项的元数据请求或者处理过该目录的子项的元数据信息,那么该缓存节点中保存有该目录的元数据文件的内容,如果元数据服务器未曾接收到针对该目录的子项的元数据请求或者没处理过该目录的子项的元数据信息,那么该缓存节点中仅保存有该目录的标识,并无法支持元数据服务器对该目录的子项的元数据信息进行处理。因此,为了有效标识树形缓存结构中的每个缓存节点是否保存有目录的元数据文件的内容,本申请实施例中,元数据服务器可为每个缓存节点设置相应的状态标识,该状态标记可包括“子项可信标记”、“子项不可信标记”、“自身可信标记”、“自身不可信标记”共四种。
在一种可能的设计中,元数据服务器接收客户端代理设备发送的元数据请求之后,所述方法还包括:若所述元数据服务器保存的树形缓存结构中存在所述第一目录对应的缓存节点,且所述第一目录对应的缓存节点被设置有子项不可信标记,所述元数据服务器根据所述第一标识,读取所述存储设备中存储的第一元数据文件,并将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点;所述元数据服务器将所述第一目录对应的缓存节点的子项不可信标记清除,并为所述第一目录对应的缓存节点设置子项可信标记。
本申请实施例中,若树形缓存结构中存在第一目录对应的缓存节点,但第一目录对应的缓存节点被设置有子项不可信标记,则表示第一目录对应的缓存节点中只保存有第一标识,因此,元数据服务器可根据第一标识读取存储设备中存储的第一元数据文件,并将第一元数据文件的内容并保存在第一目录对应的缓存节点中,以便后续对第一目录的子项的元数据信息进行处理。
在一种可能的设计中,所述元数据服务器读取所述存储设备中存储的第一元数据文件之前,还包括:若所述元数据服务器保存的树形缓存结构中不存在所述子项对应的缓存节点,所述元数据服务器在所述树形缓存结构中创建所述子项对应的缓存节点;
所述元数据服务器将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还包括:所述元数据服务器为所述子项对应的缓存节点设置自身可信标记和子项不可信标记。
本申请实施例中,在树形缓存结构中存在第一目录对应的缓存节点,且第一目录对应的缓存节点被设置有子项不可信标记的情况下,树形缓存结构中可能存在当前请求的子项对应的缓存节点,也可能不存在该子项对应的缓存节点,因此,元数据服务器可在树形缓存结构中不存在该子项对应的缓存节点的情况下,创建子项对应的缓存节点,并设置相应的状态标记。
在一种可能的设计中,所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点之前,还包括:所述元数据服务器获取出生记录服务器中保存的所述第一目录的出生记录,所述第一目录的出生记录中包括所述第一目录的保护级别信息;
所述元数据服务器读取存储设备中存储的第一元数据文件,包括:所述元数据服务器根据所述第一标识和所述第一目录的保护级别信息,确定所述第一元数据文件在所述存储设备中的存储位置,从所述存储位置读取所述第一元数据文件。
本申请实施例中,第一元数据文件在存储设备中的存储位置与第一目录的保护级别信息有关,而该第一目录的保护级别信息则位于第一目录的出生记录中,因此,元数据服务器可先获取出生记录服务器中保存的第一目录的出生记录,得到该第一目录的保护级别信息,进而再根据第一标识和第一目录的保护级别信息,确定出第一元数据文件在存储设备中的存储位置,从该存储位置读取第一元数据文件。
在一种可能的设计中,所述元数据请求中还包括文件操作命令;
所述元数据服务器将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还包括:所述元数据服务器根据所述文件操作命令,对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理。
在一种可能的设计中,所述元数据请求中还包括文件操作命令;
所述元数据服务器接收客户端代理设备发送的元数据请求之后,所述方法还包括:若所述元数据服务器保存的树形缓存结构中存在所述第一目录对应的缓存节点,且所述第一目录对应的缓存节点被设置有子项可信标记,所述元数据服务器根据所述文件操作命令,直接对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理。
本申请实施例中,若树形缓存结构中存在第一目录对应的缓存节点,且第一目录对应的缓存节点被设置有子项可信标记,则表示第一目录对应的缓存节点中保存有第一元数据文件的内容,因此,元数据服务器直接在第一目录对应的缓存节点中对该子项的元数据信息进行处理。
在一种可能的设计中,所述元数据服务器对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理之前,还包括:若所述元数据服务器保存的树形缓存结构中不存在所述子项对应的缓存节点,所述元数据服务器在所述树形缓存结构中创建所述子项对应的缓存节点,并为所述子项对应的缓存节点设置自身可信标记和子项不可信标记。
本申请实施例中,在树形缓存结构中存在第一目录对应的缓存节点,且第一目录对应的缓存节点被设置有子项可信标记的情况下,树形缓存结构中仍有可能不存在当前请求的子项对应的缓存节点,因此,元数据服务器可在树形缓存结构中不存在该子项对应的缓存节点的情况下,创建子项对应的缓存节点,并设置相应的状态标记。
在一种可能的设计中,所述元数据服务器对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理之后,还包括:所述元数据服务器将处理后的所述子项的元数据信息发送给所述存储设备。
本申请实施例中,元数据服务器可在对第一目录的缓存节点中保存的子项的元数据信息进行处理之后,将处理后的该子项的元数据信息发送给对象存储设备,以便对象存储设备更新第一元数据文件的内容。
第二方面,本申请实施例提供一种构建元数据缓存的装置,该装置具有实现上述第一方面或第一方面的任一种可能的设计中元数据服务器的功能,该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,所述装置的结构中包括处理模块和收发模块,所述处理模块被配置为支持该装置执行上述第一方面或第一方面的任一种设计中相应的功能。所述收发模块用于支持该装置与其他通信设备(如出生记录服务器、对象存储设备)之间的通信。所述装置还可以包括存储模块,所述存储模块与处理模块耦合,其保存有装置备必要的程序指令和数据。作为一种示例,处理模块可以为处理器,通信模块可以为收发器,存储模块可以为存储器。
第三方面,本申请实施例提供一种芯片,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的软件程序,以实现上述第一方面中任一种可能的设计中的方法、或实现上述第二方面中任一种可能的设计中的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述第一方面中任一种可能的设计中的方法。
第五方面,本申请实施例提供一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行上述第一方面中任一种可能的设计中的方法。
附图说明
图1为本申请实施例中的动态子树分区的结构示意图;
图2为本申请实施例提供的元数据处理***的***架构图;
图3为本申请实施例中OSD中存储的元数据文件的结构示意图;
图4为本申请实施例提供的元数据处理***中各个类型的网元的交互关系示意图;
图5为本申请实施例提供的一种构建元数据缓存的方法的流程示意图;
图6a为本申请具体实施例中提供的动态子树的结构示意图;
图6b为本申请具体实施例中提供的树形缓存结构的结构示意图;
图7为本申请实施例提供的一种构建元数据缓存的装置的结构示意图;
图8为本申请实施例提供的另一种构建元数据缓存的装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合说明书附图对本申请实施例进行具体描述。需要说明的是,本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
图2为本申请实施例提供的一种元数据处理***的***架构图,如图2所示,该元数据处理***包括由多个客户端代理(client agent,CA)模块组成的NAS集群、由多个MDS组成的MDS集群、由OSD组成的多个数据子域和出生记录服务器(birth server)。下面分别针对该元数据处理***中各个类型的网元进行详细介绍。
1)CA模块
CA模块能够与客户端通信,接收并响应客户端发送的文件访问请求,同时CA模块还是MDS的上层业务接口,能够与MDS进行通信,向MDS发送元数据请求。具体的,CA模块可对客户端发送的文件访问请求中的文件操作字进行语义解析,将文件操作字转化为文件***内部的文件操作命令,进而携带在元数据请求中发送至MDS。需要说明的是,本申请实施例中涉及到的文件操作字可以为新建(creat)、读(read)、写(write)、创建子目录(mkdir)中的任一种或几种,也可以为其它类型的文件操作字,本申请具体不作限定。应理解,本申请实施例中的CA模块可以独立部署在一个物理节点上,也可以和MDS部署在相同的物理节点,但其处理逻辑与MDS保持独立。
2)MDS
MDS负责管理文件***的目录树中的一棵或多棵动态子树的元数据缓存,对外提供元数据业务处理,包括更新元数据缓存的内容、接收CA模块发送的元数据请求,根据文件操作命令对元数据执行元数据操作等。例如,图1中目录树被划分成互不重叠的4棵动态子树分区(可以简称为动态子树),其中,MDS1负责管理动态子树1的元数据缓存,MDS2负责管理动态子树2的元数据缓存,MDS3负责管理动态子树3的元数据缓存,MDS4负责管理动态子树4的元数据缓存。
本申请实施例中,动态子树中的父节点可以代表文件***中的一个目录,而动态子树中的叶子节点可以代表文件***中的一个目录或者一个文件。为了实现元数据的缓存管理,MDS中保存有其管理的动态子树的树形缓存结构,该树形缓存结构可以看做是动态子树的缓存,是伴随着CA模块对元数据的逐步访问逐渐在MDS中创建而成的,它可通过类似于二叉树的数据结构或是其它类型的数据结构来实现,本申请对此不作具体限定。应理解,当MDS负责管理多棵动态子树时,则MDS中也相应地保存有多棵动态子树的树形缓存结构,但本申请实施例仅以MDS管理的其中一个动态子树的树形缓存结构为例说明提供的构建元数据缓存的方法,下文不再赘述。
具体的,树形缓存结构包括至少一个缓存节点,即动态子树的子树根目录对应的缓存节点。树形缓存结构中的缓存节点用于保存对应目录或文件的元数据缓存,元数据缓存是目录或文件的元数据文件(也称为磁盘对象)的内容在MDS中的缓存。本申请实施例中,目录的元数据文件持久性地存储在对象存储设备中,而元数据操作则是在MDS的元数据缓存中进行处理,处理完毕后再发送至对象存储设备中存储。当需要进行元数据操作时,元数据服务器中如果不存在目录的元数据缓存,元数据服务器需从对象存储设备中读取目录的元数据文件的内容,并保存到MDS中再进行处理,即将目录的元数据从对象存储设备加载到MDS的缓存中。需要说明的是,本申请实施例中,元数据缓存的内容可以包括元数据文件的全部内容,也可以仅包括元数据文件的部分内容,如目录的标识。但应注意,仅包括目录的标识的元数据缓存并不能支持MDS进行元数据操作,元数据服务器进行元数据操作时仍需去对象存储设备中读取元数据再保存到MDS的缓存中。
需要说明的是,本申请实施例中动态子树的结构可以根据***的需求动态调整,并不是固定不变的。当动态子树下的所有子项个数多大或者访问量过热时,动态子树也可以被拆分成多棵小的动态子树。访问量过热的动态子树也可以从繁忙的MDS迁移到相对空闲的MDS上进行管理。但是一棵动态子树在某一时刻只能归属一个MDS,不能同时归属两个及以上的MDS,否则会导致元数据下盘冲突。本申请实施例中“归属”是指:若一棵动态子树归属于一个MDS,则该动态子树下的所有元数据处理都在该归属MDS上处理,MDS集群中的其它MDS不能处理该动态子树下的元数据操作。
3)MDS leader
MDS集群中的其中一个MDS还可以作为MDS集群中的MDS leader,该MDS leader除了具有一般MDS的功能外,还具有切分、迁移等管理动态子树的功能,负责维护文件***的各个动态子树与对应的归属MDS之间的对应关系,以及Fsblock等全局对象的管理和下盘。本申请实施例中,全局对象至少包括fsblock对象和globalsubtree对象,其中,fsblock对象记录文件***的名称和***根目录的元数据信息,globalsubtree对象记录文件***中的各个动态子树的根目录和归属MDS的对应关系,该对应关系通过globalsubtree对象下盘到OSD层。需要说明的是,本申请实施例中的每个全局对象具有一个全局的标识,OSD层中存储有这两个全局对象对应的磁盘对象。
例如,当某一普通MDS发生故障时,MDS leader可指定其它正常的MDS接管故障MDS的动态子树。接管MDS接收MDS leader发送的接管通知后,从MDS leader上读取故障MDS原来管理的所有子树根信息,根据这些子树根信息在内存中创建这些动态子树的子树根目录对应的元数据缓存。随着业务的访问,接管MDS逐步从OSD中读取并创建子树根目录下的子项的元数据缓存。在一种可能的设计中,当某一MDS发生故障时,该故障MDS管理的多棵动态子树也可以分别由不同的正常MDS接管,如此,可有效减小接管MDS需接管的动态子树的数量,避免故障MDS管理的动态子树全部由一个MDS接管而造成接管MDS的业务量剧增的情形,降低MDS发生故障时对***性能的影响。
当MDS leader发生故障时,MDS集群中的其它MDS通过一定的竞选规则,比如可以选择ID较小的MDS,在正常的MDS中选择一个MDS作为继任MDS leader。应理解,MDS集群中的每个MDS中均存在一个管理进程,各个MDS之间可以通过心跳包交互MDS之间的状况,当出现MDS leader故障的情形时,其它的正常MDS可以通过这种方式来协商谁来担任新的MDSleader。继任MDS leader不仅要接管前任MDS leader管理的动态子树,还要接管MDSleader的全局对象管理功能。当继任MDS leader得知自己升为leader后,首先启动leader接管流程,从OSD中读取fsblock对象和globalsubtree对象保存到缓存结构中,leader接管成功。随后,MDS leader在保存的globalsubtree对象中查找前任MDS leader管理的动态子树,并在内存中创建这些动态子树的子树根目录对应的元数据缓存。随着业务访问,逐步从OSD中读取并创建子树根目录下的子项的元数据缓存。
4)birth server
birth server用于记录文件***中父目录与子目录之间的父子关系信息。具体的,可使用一条出生(birth)记录来表示一个子目录与其父目录之间的父子关系,例如,在目录“dir1”下包含一个子目录“subdir1”,子目录“subdir1”的birth记录的内容为:{subfid,parentfid,protectlevel,namehash},其中,subfid是指子目录“subdir1”的标识,parentfid是指目录“dir1”的标识,protectlevel是指子目录“subdir1”的保护级别信息,namehash是指“subdir1”这个目录名称通过哈希算法得到的4字节的哈希值。
本申请实施例中,birth server中可包括以子目录的标识为键值而构建的,用于存储文件***中的birth记录的数据库,提供birth记录的增删改查等操作。该birthserver可以是单节点的,也可以是分布式的,由birth记录的总体数量决定,可以部署在独立的物理节点,也可以和MDS部署在同一个物理节点,但处理逻辑与MDS保持独立。如此,通过向birth server进行多次查询可以获取到任意目录到***根目录的路径上所有birth记录,进而得到该任意目录的所有上级目录的标识。
需要说明的是,本申请实施例中涉及到的目录、文件或者上文中提及的全局对象均采用统一的命名方式,***可为各文件、目录或全局对象分配一个全局的标识fid作为文件***内的唯一标识。在一种可能的设计中,该标识可以为8字节的数字。
5)OSD
整个OSD层是一个持久化的存储层,提供可靠的对象存储功能。它可以分为多个数据子域,每个数据子域包括一个或多个OSD节点,每个OSD节点(即对象存储设备OSD)是一个智能设备,具有自己的存储介质、处理器、内存和网络***等,负责管理本地存储的对象。
本申请实施例中,对内OSD层中所有的OSD节点之间可以通过消息进行通信。MDS共享OSD存储层,对外OSD层提供统一的对象存储接口。因此,可以理解MDS集群中的所有MDS共享持久化存储层,每个MDS都能看到所有的OSD节点,并且可以访问该OSD层中的任意OSD节点。
具体的,OSD用于存储文件***中目录或文件的元数据文件(也可称为磁盘对象),每个目录的元数据文件保存有该目录的直接子目录和/或子文件的元数据信息,而子目录的子项的元数据信息则保存在子目录自己的元数据文件中。
在一种可能的设计中,目录或文件的元数据信息使用目录项(dentry)+索引节点(inode)的结构保存,dentry用于保存目录名(或文件名)等信息,inode用于保存目录或文件的基本属性、权限属性和指向子项的元数据缓存的指针,其中,基本属性是指文件的文件大小、访问时间、文件类型等信息,权限属性是指访问权限管理(access control list,ACL)权限、用户组等。
图3示例性示出了OSD中目录的元数据文件的内容,如图3所示,一个目录的元数据文件包括head头部和其子项的dentry和inode的内容,该head头部用于存放子项的个数以及最新子项的修改时间等内容。结合图1可知,***根目录的元数据文件中存放有其子项user和home的元数据内容,包括目录user的dentry和inode,以及目录home的dentry和inode。目录user的元数据文件中存放有其子项file、test和file1的元数据内容,包括file的dentry和inode、test的dentry和inode以及file1的dentry和inode。目录home的元数据文件中存放有子项lib和src的元数据内容,lib的dentry和inode、src的dentry和inode。
需要说明的是,本申请实施例中,目录的元数据文件在OSD中采用镜像的方式存储。镜像的数量与目录的保护级别信息相关,而保护级别信息则记录在目录的birth记录中,保护级别信息越高,镜像的数量也越多。例如,保护级别+2对应OSD中的3个磁盘位置,保护级别+3对应OSD中的4个磁盘位置,保护级别+4对应OSD中的5个磁盘位置。MDS在将某一目录的元数据下盘到OSD存储时,可根据目录的标识、目录的保护级别信息通过哈希算法选择NLUN上的几个磁盘位置写入,每个磁盘位置存储一份当前的元数据。
图4示例性示出了本申请提供的元数据处理***中CA模块、MDS、birthserver、MDSleader、OSD之间的交互关系。如图4所示,CA模块用于向MDS发送元数据请求,并接收MDS发送的元数据请求响应。MDS用于接收元数据请求,构建处理元数据请求需要的缓存结构,处理元数据请求,并将元数据缓存的内容存储到OSD。Birthserver用于提供birth记录的增、删、改、查等操作,支持MDS构建缓存结构,MDS leader用于管理并记录子树根目录和归属MDS的对应关系,并存储到OSD。
基于上述***架构,图5示例性示出了本申请提供的一种构建元数据缓存的方法,如图5所示,该方法包括如下步骤:
步骤S501:元数据服务器接收客户端代理设备发送的元数据请求,该元数据请求中包括第一标识和第二标识,第一标识为第一目录的标识,第二标识为第一目录的子项的标识。
步骤S502:若元数据服务器保存的树形缓存结构中不存在第一目录对应的缓存节点,且元数据服务器为所述子项所在的动态子树的归属元数据服务器,则元数据服务器在树形缓存结构中创建第一目录对应的缓存节点。
步骤S503:元数据服务器根据第一标识,读取存储设备中存储的第一元数据文件,并将第一元数据文件的内容保存到第一目录对应的缓存节点,第一元数据文件为第一目录的元数据文件,第一元数据文件的内容所述子项的元数据信息。
本申请实施例中,若客户端代理设备发送的元数据请求中包含第一目录的第一标识和第一目录的子项的第二标识,则表示客户端代理设备请求元数据服务器对第一目录下具有第二标识的子项的元数据信息进行处理。元数据服务器接收到元数据请求后,在当前保存的树形缓存结构中不存在第一目录的缓存节点,且元数据服务器为第一目录下具有第二标识的子项所在的动态子树的归属元数据服务器的情况下,元数据服务器可在树形缓存结构中创建第一目录对应的缓存节点,并根据第一目录的标识读取存储设备中存储的第一目录的元数据文件,即第一元数据文件,并将该第一元数据文件的内容保存到第一目录对应的缓存节点中。由于第一元数据文件中包括第一目录的子项的元数据信息,因而,元数据服务器在树形缓存结构中创建第一目录对应的缓存节点,并将第一元数据文件的内容保存到创建的缓存节点中后,元数据服务器就构建出可以支持对该具有第二标识的子项的元数据信息进行处理的缓存结构,而无需按照目录层次从上到下地依次从存储设备中读取子树根目录到第一目录的路径上每个目录的元数据文件,从而可有效减少discover流程从存储设备读盘的次数,缩短元数据请求的处理时间,加快流程返回主业务处理。
具体来说,在步骤S501中,第一目录为文件***中的一个目录,它的标识称作第一标识。第一目录下可包括一个或多个子项,第二标识为第一目录下某一个子项的标识,该子项可以是文件***中的一个文件,也可以是一个目录,为了描述简便,在此将该子项称为待操作的子项。元数据服务器可为上述元数据处理***中MDS集群中的任一MDS,客户端代理设备可为上述元数据处理***中的CA模块。
本申请实施例中,客户端代理设备可携带第一标识和第二标识向元数据服务器发送元数据请求,该元数据请求中还可包括文件操作命令,用于指示元数据服务器根据该文件操作命令,对当前请求的这个具有第二标识的子项的元数据信息进行处理。此处,对元数据信息进行处理所涉及到的文件操作命令可以为前面介绍的任一种文件操作字对应的文件操作命令,也可以是其它文件操作命令,具体不作限定。
在步骤S502中,由于待操作的子项的元数据信息位于第一元数据文件中,元数据服务器接收到元数据请求后,可在当前保存的树形缓存结构中查找第一目录对应的缓存节点,以确定第一目录的元数据缓存是否存在。
若当前的树形缓存结构中不存在第一目录对应的缓存节点,元数据服务器可触发discover流程构建第一目录和待操作的子项的元数据缓存。具体的,元数据服务器可以以第一目录为起始,通过出生记录服务器依次获取第一目录至文件***的***根目录的路径上所有目录的出生记录。元数据服务器可将第一标识发送至出生记录服务器,以获取第一目录的出生记录。出生记录服务器可根据该第一标识,从数据库中保存的出生记录中查询键值为第一标识的一条出生记录,并将查询到的出生记录发送给元数据服务器,该出生记录即为第一目录的出生记录,其中包括第一标识、第一目录的父目录的标识、第一目录的保护级别信息等内容。
由于每个目录的出生记录中均包括该目录的父目录的标识,如此,元数据服务器在接收到第一目录的出生记录后可得到第一目录的父目录的标识。假设第一目录的父目录为第三目录,第三目录的标识为第三标识。后续,元数据服务器可将第三标识发送至出生记录服务器,获取第三目录的出生记录,这样从查询到的第三目录的出生记录中就可得到第三目录的父目录的标识。依此类推,元数据服务器将每次从子目录的出生记录中得到的父目录的标识再发送至出生记录服务器,获取父目录的出生记录,得到父目录的父目录的标识,直至查询到的某一条出生记录中的父目录为***根目录为止。
通过获取第一目录至文件***的***根目录的路径上所有的出生记录,元数据服务器可得到该第一目录至***根目录的路径上所有目录的标识。进而,元数据服务器可将这些目录的标识按照***根目录至第一目录的顺序依次用“/”符号拼接,得到***根目录至第一目录的目录标识路径,最后再用“/”符号将待操作的子项的标识拼接在该目录标识路径的最后,得到***根目录至待操作的子项的目录标识路径。
随后,元数据服务器可将***根目录至待操作的子项的目录标识路径发送至子树归属管理服务器(即MDS集群中的MDS leader),以查询待操作的子项所在的动态子树的子树根目录的标识,以及该动态子树的归属元数据服务器。之后,MDS leader可将待操作的子项所在的动态子树的子树根目录的标识和动态子树对应的归属元数据服务器的标识发送给元数据服务器。
若该元数据服务器不是待操作的子项所在的动态子树的归属元数据服务器,元数据服务器可向客户端代理设备发送失败响应消息,从而结束当前的元数据处理过程。本申请实施例中,失败响应消息中包括待操作的子项的归属元数据服务器的标识,该标识可用于客户端代理设备在接收到该失败响应消息后,将元数据请求重新发送至待操作的子项所在的动态子树的归属元数据服务器,由该归属元数据服务器对该元数据请求进行处理。
若该元数据服务器是待操作的子项所在的动态子树的归属元数据服务器,元数据服务器可在当前的树形缓存结构中创建第一目录对应的缓存节点,并在该第一目录对应的缓存节点中保存第一标识。在一种可能的设计中,元数据服务器在树形缓存结构中创建第一目录对应的缓存节点具体包括:首先,元数据服务器根据子树归属管理服务器发送的待操作的子项所在的动态子树的子树根目录的标识,确定该子树根目录至第一目录的目录标识路径;然后,元数据服务器按照子树根目录至第一目录的顺序,遍历该目录标识路径上的每一个目录,针对该目录标识路径上的每一目录执行如下处理:在当前的树形缓存结构中查找当前处理的这个目录对应的缓存节点,若确定树形缓存结构中未包括该目录对应的缓存节点,则在树形缓存结构中创建该目录对应的缓存节点,并在该缓存节点中保存该目录的标识。
如此,依次遍历完子树根目录至第一目录的目录标识路径上的所有目录,树形缓存结构中便包括子树根目录至第一目录的路径上所有目录对应的缓存节点,即构建出了子树根目录至第一目标的路径上所有目录的缓存结构。
进一步地,作为第一目录的子项,树形缓存结构中未包括第一目录的缓存节点的情况下,树形缓存结构中也不包括待操作的子项的缓存节点。在一种可能的设计中,元数据服务器在树形缓存结构中创建第一目录对应的缓存节点之后,还可在创建的第一目录的缓存节点的基础上,在第一目录的缓存节点之下创建待操作的子项的缓存节点,并在该缓存节点中保存第二标识。
需要说明的是,在这一过程中,元数据服务器在为某一目录创建对应的缓存节点时,并没有从存储设备读取该目录的元数据文件的内容,并在缓存节点中保存,因此,新创建的缓存节点中暂且只保存有目录的标识,并未保存有该目录的元数据文件的内容,所以当前的树形缓存结构还不能支持元数据服务器对待操作的子项的元数据信息进行处理。更为具体的,本申请实施例中,为某一目录创建对应的缓存节点可以为,为该目录创建对应的dentry和inode,其中,dentry用于保存目录的标识,inode用于保存目录下子项的元数据信息。在没有从存储设备读取元数据文件的情况下,通常新创建的缓存节点中inode部分是空的,不能支持元数据服务器对目录的子项的元数据信息进行处理。
在步骤S503中,存储设备可为上述元数据处理***中的对象存储设备OSD,元数据服务器可根据第一标识读取对象存储设备中存储的第一元数据文件,并将第一元数据文件的内容保存到第一目录对应的缓存节点中。本申请实施例中,第一元数据文件的内容包括第一目录下各个子项的元数据信息,且每个子项的元数据信息均可包括如3所示的dentry结构和inode结构。可以理解,第一元数据文件中包括待操作的子项的元数据信息,以及第一目录下除待操作的子项之外的其它各个子项的元数据信息。元数据服务器将第一元数据文件的内容保存到树形缓存结构中第一目录的缓存节点后,该第一目录的缓存节点保存有待操作的子项的元数据信息,可支持元数据服务器对待操作的子项的元数据信息进行处理,至此discover流程结束。
在一种可能的设计中,元数据服务器可根据第一标识和从第一目录的出生记录中得到的第一目录的保护级别信息,确定出第一元数据文件在对象存储设备中的存储位置,进而从该存储设备读取第一元数据文件,并将第一元数据文件的内容保存至第一目录对应的缓存节点中。具体的,元数据服务器可根据第一标识和第一目录的保护级别信息通过哈希算法,计算得到第一元数据文件在对象存储设备中的存储位置。在实际应用场景中,根据第一目录的保护级别信息的不同,第一元数据文件在对象存储设备中可能具有多个存储位置,而每个存储位置都存储有一份相同的第一元数据文件。因此,本步骤中元数据服务器确定出的第一元数据文件在对象存储设备中的存储位置,可以是第一元数据文件在对象存储设备的多个存储位置中的其中任一存储位置。
在步骤S503之后,元数据服务器可根据元数据请求中的文件操作命令,对树形缓存结构中第一目录对应的缓存节点中保存的待操作的子项的元数据信息进行处理。在一种可能的设计中,元数据请求中还可包括客户端代理设备根据该文件操作命令为待操作的子项设置的元数据内容,例如,该为待操作的子项设置的元数据内容可以是为待操作的子项设置的文件大小、访问时间、访问权限等属性信息。如此,元数据服务器可根据该文件操作命令和为所述待操作的子项设置的元数据内容,修改待操作的子项的元数据信息。
在步骤S503之后,元数据服务器还可将第一目录对应的缓存节点中保存的第一目录的各个子项的元数据信息发送给对象存储设备,以使对象存储设备对存储的第一元数据文件进行更新。在一种可能的设计中,元数据服务器还可仅将第一目录对应的缓存节点中保存的待操作的子项的元数据信息发送给对象存储设备,从而使对象存储设备用处理后的待操作的子项的元数据信息来替换第一目录的元数据文件中原来的该待操作的子项的元数据信息。此外,元数据服务器还可以向客户端代理设备发送处理成功响应,以通知客户端代理设备请求的元数据信息已经处理完成。
由于每个目录的保护级别信息记录在该目录自己的出生记录中,元数据服务器根据目录的标识以及从目录的出生记录中获取到的保护级别信息,就可得到该目录的元数据文件在对象存储设备中的存储位置,从而将目录的元数据文件的内容保存到树形缓存结构中对应的缓存节点中,而不需要受到该目录的父目录的缓存节点是否保存有该目录的元数据信息的限制。即使当前的树形缓存结构中该目录的父目录对应的缓存节点只保存有父目录的标识,未保存父目录的任何元数据内容,也不会影响元数据服务器获取该目录的元数据文件在对象存储设备中的存储位置,从对象存储设备中读取该目录的元数据文件的内容并保存到对应的缓存节点。
如此,考虑到树形缓存结构要求元数据服务器在操作元数据信息前构建出待操作的子项所在的子树根目录至第一目录的路径上所有目录的缓存结构。本申请实施例中,元数据服务器可在接收到元数据请求,但当前保存的树形缓存结构中不存在第一目录对应的缓存节点的情况下,只构建支持元数据服务器进行元数据操作的基本缓存结构,从而有效缩短元数据请求的响应时间,提高了元数据处理效率。本申请实施例中,构建支持元数据服务器进行元数据操作的基本缓存结构具体是指,在树形缓存结构中创建待操作的子项所在的动态子树的子树根目录至第一目录的路径上每个目录对应的缓存节点(除非目录的缓存节点已经存在),仅针对该路径中第一目录,获取第一元数据文件的内容并保存到第一目录对应的缓存节点,而针对该路径上区别于第一目录的其它目录,元数据服务器不再去对象存储设备中读取元数据文件的内容并保存,而是在创建的缓存节点中只保存目录的标识,待后续接收到请求操作这些目录下子项的元数据信息的元数据请求时,再去对象存储设备中读取需要的元数据内容。如此,可有效减小discover流程从对象存储设备中读取元数据的次数,缩短discover流程的耗时。
采用本申请实施例提供的技术方案,在元数据服务器中保存的树形缓存结构中,子树根目录对应的缓存节点中保存有子树根目录的元数据文件的内容,而动态子树的其他目录对应的缓存节点,则可能保存有该目录的元数据文件的内容,也可能只保存有目录的标识。例如,若元数据服务器在创建该缓存节点后处理过该目录的子项的元数据信息,那么该缓存节点可保存有该目录的元数据文件的内容,若元数据服务器在创建该缓存节点后没有处理过该目录的子项的元数据信息,或者虽然元数据服务器处理过该目录的子项的元数据信息,但该缓存节点中保存的该目录的元数据文件的内容因为时间较久、热度较低等因素在缓存中被淘汰,该缓存节点中可只保存有目录的标识。
因此,为了有效标识元数据服务器是否从对象存储设备中读取过目录的元数据文件的内容,或者说缓存节点是否保存有目录的元数据文件的内容,本申请实施例中,元数据服务器还可为树形缓存结构中的每个缓存节点设置状态标记,该状态标记可包括“子项可信标记”、“子项不可信标记”、“自身可信标记”、“自身不可信标记”共四种。
具体来说,元数据服务器可在树形缓存结构中创建第一目录对应的缓存节点后,为第一目录对应的缓存节点设置“自身不可信标记”和“子项可信标记”,为待操作的子项对应的缓存节点中设置“自身可信标记”和“子项不可信标记”,为子树根目录至第一目录的路径中新创建的其它目录对应的缓存节点设置“自身不可信标记”和“子项不可信标记”。
本申请实施例中,一个目录被设置有“子项可信标记”表示,元数据服务器从对象存储设备中读取过该目录的元数据文件,当前的树形缓存结构中该目录对应的缓存节点中保存有该目录的元数据文件的内容,即保存有该目录下各个子项的元数据信息,相应地,该目录下各个子项对应的缓存节点被设置有“自身可信标记”。而一个目录被设置有“子项不可信标记”表示,元数据服务器暂时不需要从对象存储设备中读取该目录的元数据文件的内容,当前树形缓存结构的该目录对应的缓存节点中暂且只保存有该目录的标识,没有保存该目录的元数据文件的内容,相应地,该目录的各个子项对应的缓存节点被设置有“自身不可信标记”。
由此可知,若元数据服务器接收到客户端代理设备发送的元数据请求时,元数据服务器当前保存的树形缓存结构中不存在第一目录对应的缓存节点,那么元数据服务器可在创建待操作的子项所在的子树根目录至第一目录的目录标识路径上各目录的缓存节点后,仅从对象存储设备中获取第一目录的元数据文件的内容并保存到第一目录对应的缓存节点,同时为第一目录对应的缓存节点设置“子项可信标记”,而针对该目录标识路径上其它暂时不需要从对象存储设备中获取元数据文件的内容的目录对应的缓存节点设置“子项不可信标记”,等待有前台业务请求请求对这些目录的子项的元数据信息进行处理时,再去对象存储设备中获取相应的元数据文件的内容并保存。这样,目录标识路径上除第一目录以外的其它目录的元数据缓存内容延后保存至缓存节点,可使元数据处理***能快速响应前台请求处理,减少MDS故障时接管MDS的性能下降过大的波动,同时也可解决对文件***目录深度的限制。
在一种可能的设计中,元数据服务器也可只为树形缓存结构中的缓存节点设置“子项可信标记”和“自身可信标记”。如此,当某一目录的缓存节点未被设置有“子项可信标记”时,可表示该缓存节点是子项不可信的,元数据服务器暂时不需要读取该目录的元数据文件的内容并保存至该缓存节点;当一个目录的缓存节点未被设置“自身可信标记”时,可表示该缓存节点是自身不可信的,元数据服务器暂时不需要读取该目录的父目录的元数据文件的内容并保存至父目录的缓存节点。
鉴于此,在步骤S502中,若元数据服务器接收客户端代理设备发送的元数据请求后,元数据服务器当前保存的树形缓存结构中存在第一目录对应的缓存节点,且该第一目录对应的缓存节点被设置有子项不可信标记,那么元数据服务器可同样需要根据第一标识读取存储设备中存储的第一元数据文件,并将第一元数据文件的内容保存到第一目录对应的缓存节点。具体的,元数据服务器可根据第一标识和第一目录的保护级别信息,确定第一元数据文件在对象存储设备中的存储位置,从该存储位置获取第一元数据文件的内容,并保存到第一目录对应的缓存节点;随后,元数据服务器还可将第一目录对应的缓存节点的子项不可信标记清除,并设置子项可信标记;进而,再根据元数据请求中的文件操作命令,对所述第一目录的缓存节点中保存的待操作的子项的元数据信息进行处理。
若元数据服务器接收客户端代理设备发送的元数据请求后,元数据服务器当前保存的树形缓存结构中存在第一目录对应的缓存节点,且第一目录对应的缓存节点被设置有子项可信标记,那么元数据服务器可根据元数据请求中的文件操作命令,直接对第一目录的缓存节点中保存的待操作的子项的元数据信息进行处理。
需要说明的是,在元数据服务器接收客户端代理设备发送的元数据请求后,元数据服务器当前保存的树形缓存结构中存在第一目录对应的缓存节点的情况下,若第一目录对应的缓存节点被设置有子项不可信标记,那么当前的树形缓存结构中可能存在也可能不存在待操作的子项对应的缓存节点。因此,元数据服务器可在确定第一元数据文件在对象存储设备中的存储位置之前,若确定树形缓存结构中不存在待操作的子项对应的缓存节点,则创建该子项对应的缓存节点,并为该子项对应的缓存节点设置自身可信标记和子项不可信标记。
同理,在元数据服务器接收客户端代理设备发送的元数据请求后,元数据服务器当前保存的树形缓存结构中存在第一目录对应的缓存节点的情况下,若第一目录对应的缓存节点被设置有子项可信标记,当前的树形缓存结构中还是有可能不存在待操作的子项对应的缓存节点。因此,元数据服务器可在对第一目录的缓存节点中保存的待操作的子项的元数据信息进行处理之前,在树形缓存结构中创建该子项对应的缓存节点,并为该子项对应的缓存节点设置自身可信标记和子项不可信标记。
下面通过一个具体实施例来详细说明本申请实施例提供的元数据处理方法。
图6a示例性示出了本具体实施例中的动态子树,如图6a所示,***根目录为400,动态子树的子树根目录为目录2100,该目录2100下又包括三个子目录分别为目录2200、目录2201、目录2202,其中,在目录2200下又包括三个子目录分别为目录2300、目录2301、目录2302,目录2300下又包括两个子目录分别是目录2400和目录2401。
图6b示例性示出了MDS1中保存的与图6a所示动态子树对应的树形缓存结构。假设图6a中的这棵动态子树归属于MDS2管理,但由于MDS2出现故障,MDS1接管了这棵子树。在MDS1接收客户端代理设备发送的元数据请求前,MDS1刚接管这棵动态子树,MDS1中保存的树形缓存结构中仅包括子树根目录2100对应的缓存节点。
首先,MDS1接收CA模块发送的元数据请求,该元数据请求中包括目录2300和目录2400的标识。
随后,MDS1在图6b中所示的树形缓存结构中查找目录2300对应的缓存节点。查找发现树形缓存结构中不存在目录2300对应的缓存节点,则触发discover流程。MDS1向birthserver发送目录2300的标识,获取目录2300的出生记录,该目录2300的birth记录中包括目录2300的标识、目录2200的标识和目录2300的保护级别等内容。之后,MDS1向birth server发送目录2200的标识,获取目录2200的birth记录,该目录2200的birth记录中包括目录2200的标识、目录2100的标识和目录2200的保护级别等内容。依此类推,MDS1获取到目录2300至***根目录400之间所有目录的出生记录,并根据这些目录的标识得到目录2300至***根目录400的目录标识路径:“400/2100/2200/2300”。元数据服务器将目录2400的标识拼接在目录2300至***根目录的目录标识路径之后,得到目录2400至***根目录400的目录标识路径:“400/2100/2200/2300/2400”。
进而,MDS1将目录2400至***根目录400的目录标识路径,发送至MDS leader,获取目录2400所在的动态子树的子树根目录和归属MDS。相应地,MDS leader将目录2100的标识和MDS1的标识返回至MDS1。MDS1确定自己就是目录2400所在的动态子树的归属MDS后,于是,按照由上至下的顺序,依次在树形缓存结构中创建目录2200的缓存节点、目录2300的缓存节点和目录2400的缓存节点。这里创建的每个缓存节点均包括dentry和inode两部分,其中,dentry用于保存目录的标识,inode用于保存目录的各个子项的元数据信息。但是,由于在创建这三个缓存节点时没有从OSD中读取元数据内容,所以缓存节点的inode部分实际上还为包括子项的元数据信息。
更进一步地,MDS1可根据目录2300的标识和从目录2300的birth记录中获取到的保护级别,确定出目录2300的元数据文件在OSD中的存储位置,并从该存储位置获取目录2300的元数据文件的内容,并保存到目录2300的缓存节点,目录2300的元数据文件中包括目录2400和目录2401的元数据信息。这样,MDS1就可为目录2300的缓存节点设置子项可信标记和自身不可信标记,为目录2400设置子项不可信标记和自身可信标记,为目录2200的缓存节点设置子项不可信和自身不可信标记,至此discover流程结束。
最后,MDS1可根据元数据请求中的文件操作命令为目录2300的缓存节点中保存的2400的元数据信息进行处理,处理完毕后再将目录2300的缓存节点中保存的元数据内容发送至OSD中存储。
此外,当MDS1后续接收到请求对目录2300的子项的元数据进行处理的元数据请求时,MDS1可以直接在目录2300的缓存节点中进行操作,不需要再触发discover流程。当MDS1后续接收到请求对目录2200的子项的元数据进行处理的元数据请求时,MDS1可根据目录2200设置的子项不可信标记,再去OSD中读取目录2200的元数据文件的内容并保存至目录2200的缓存节点中。
由于目录2300的保护级别信息存在于目录2300的birth记录中,在创建子树根目录2100至目录2300的路径上各目录的缓存节点时,MDS1可以直接根据目录2300的标识和目录2300的保护级别信息去OSD中读取目录2300的元数据文件的内容,而不是必须先读取目录2200的元数据文件的内容后才能读取目录2300的元数据文件的内容。这样,处理元数据请求时MDS1就可以仅从对象存储设备中读取一次元数据内容,从而可有效降低discover流程中的读盘次数,提高元数据处理的响应速度,避免接管动态子树造成接管MDS的性能下降以及由于目录深度过深导致的MDS处理超时等问题。
基于相同的发明构思,本申请实施例还提供一种构建元数据缓存的装置,请参见图7所示,为本申请实施例提供的一种构建元数据缓存的装置的结构示意图。如图7所示,该装置包括:收发模块710和处理模块720。
收发模块710,用于执行接收客户端代理设备发送的元数据请求的操作;处理模块720,用于执行在本装置保存的树形缓存结构中不存在第一目录对应的缓存节点,且本装置为当前请求的第一目录的子项所在的动态子树的归属元数据服务器的情况下,在树形缓存结构中创建第一目录对应的缓存节点,根据第一标识读取存储设备中存储的第一元数据文件的内容,并将该第一元数据文件的内容保存到第一目录对应的缓存节点。应理解,本发明实施例中的处理模块720可以由处理器或处理器相关电路组件实现,收发模块710可以由收发器或收发器相关电路组件实现。
请参见图8所示,为本申请实施例中提供的构建元数据缓存的装置的另一种结构示意图。如图8所示,该装置800包括处理器810,存储器820、和网络接口80。可选地,该装置800还包括输入设备840、输出设备850和总线860。其中,处理器80、存储器820、网络接口830以及输入设备840、输出设备860通过总线850相互连接。存储器820中存储指令或程序,处理器810用于执行存储器820中存储的指令或程序。存储器820中存储的指令或程序被执行时,该处理器810用于执行上述方法实施例中处理模块720执行的操作,网络接口830用于执行上述实施例中收发模块710执行的操作。
需要说明的是,本申请实施例提供的装置700或800可对应于本发明实施例提供的元数据处理方法S501至S505中的元数据服务器,并且装置700或装置800中的各个模块的操作和/或功能分别为了实现图5所示方法的相应流程,为了简洁,在此不再赘述。
应理解,本申请实施例中提及的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datarate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (22)
1.一种构建元数据缓存的方法,其特征在于,所述方法包括:
元数据服务器接收客户端代理设备发送的元数据请求,所述元数据请求中包括第一标识和第二标识,所述第一标识为第一目录的标识,所述第二标识为所述第一目录的子项的标识;
若所述元数据服务器保存的树形缓存结构中不存在所述第一目录对应的缓存节点,且所述元数据服务器为所述子项所在的动态子树的归属元数据服务器,所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点;
所述元数据服务器根据所述第一标识,读取存储设备中存储的第一元数据文件,并将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点,所述第一元数据文件为所述第一目录的元数据文件,所述第一元数据文件的内容包括所述子项的元数据信息。
2.根据权利要求1所述的方法,其特征在于,所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点,包括:
所述元数据服务器获取所述子项所在的动态子树的子树根目录至所述第一目录的目录标识路径;
所述元数据服务器按照所述子树根目录至所述第一目录的顺序,依次对所述目录标识路径中的每一个目录执行如下处理,直至所述第一目录对应的缓存节点创建完成:
针对所述目录标识路径中的任一目录,若所述树形缓存结构不存在该目录对应的缓存节点,则在所述树形缓存结构中创建该目录对应的缓存节点;
所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点之后,还包括:
所述元数据服务器在所述树形缓存结构中创建所述子项对应的缓存节点。
3.根据权利要求2所述的方法,其特征在于,所述元数据服务器将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还包括:
所述元数据服务器为所述第一目录对应的缓存节点设置自身不可信标记和子项可信标记,为所述子项对应的缓存节点设置自身可信标记和子项不可信标记,为所述子树根目录至所述第一目录的目录标识路径中新创建的其它目录对应的缓存节点设置自身不可信标记和子项不可信标记。
4.根据权利要求1所述的方法,其特征在于,元数据服务器接收客户端代理设备发送的元数据请求之后,所述方法还包括:
若所述元数据服务器保存的树形缓存结构中存在所述第一目录对应的缓存节点,且所述第一目录对应的缓存节点被设置有子项不可信标记,所述元数据服务器根据所述第一标识,读取所述存储设备中存储的第一元数据文件,并将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点;
所述元数据服务器将所述第一目录对应的缓存节点的子项不可信标记清除,并为所述第一目录对应的缓存节点设置子项可信标记。
5.根据权利要求4所述的方法,其特征在于,所述元数据服务器读取所述存储设备中存储的第一元数据文件之前,还包括:
若所述元数据服务器保存的树形缓存结构中不存在所述子项对应的缓存节点,所述元数据服务器在所述树形缓存结构中创建所述子项对应的缓存节点;
所述元数据服务器将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还包括:
所述元数据服务器为所述子项对应的缓存节点设置自身可信标记和子项不可信标记。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述元数据服务器在所述树形缓存结构中创建所述第一目录对应的缓存节点之前,还包括:
所述元数据服务器获取出生记录服务器中保存的所述第一目录的出生记录,所述第一目录的出生记录中包括所述第一目录的保护级别信息;
所述元数据服务器读取存储设备中存储的第一元数据文件,包括:
所述元数据服务器根据所述第一标识和所述第一目录的保护级别信息,确定所述第一元数据文件在所述存储设备中的存储位置,从所述存储位置读取所述第一元数据文件。
7.根据权利要求6所述的方法,其特征在于,所述元数据请求中还包括文件操作命令;
所述元数据服务器将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还包括:
所述元数据服务器根据所述文件操作命令,对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理。
8.根据权利要求1所述的方法,其特征在于,所述元数据请求中还包括文件操作命令;
所述元数据服务器接收客户端代理设备发送的元数据请求之后,所述方法还包括:
若所述元数据服务器保存的树形缓存结构中存在所述第一目录对应的缓存节点,且所述第一目录对应的缓存节点被设置有子项可信标记,所述元数据服务器根据所述文件操作命令,直接对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理。
9.根据权利要求8所述的方法,其特征在于,所述元数据服务器对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理之前,还包括:
若所述元数据服务器保存的树形缓存结构中不存在所述子项对应的缓存节点,所述元数据服务器在所述树形缓存结构中创建所述子项对应的缓存节点,并为所述子项对应的缓存节点设置自身可信标记和子项不可信标记。
10.根据权利要求7或8所述的方法,其特征在于,所述元数据服务器对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理之后,还包括:
所述元数据服务器将处理后的所述子项的元数据信息发送给所述存储设备。
11.一种构建元数据缓存的装置,其特征在于,所述装置包括:
收发模块,用于接收客户端代理设备发送的元数据请求,所述元数据请求中包括第一标识和第二标识,所述第一标识为第一目录的标识,所述第二标识为所述第一目录的子项的标识;
处理模块,用于在本装置保存的树形缓存结构中不存在所述第一目录对应的缓存节点,且本装置为所述子项所在的动态子树的归属元数据服务器的情况下,在所述树形缓存结构中创建所述第一目录对应的缓存节点;
所述处理模块,还用于根据所述第一标识,读取存储设备中存储的第一元数据文件,并将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点,所述第一元数据文件为所述第一目录的元数据文件,所述第一元数据文件的内容包括所述子项的元数据信息。
12.根据权利要求11所述的装置,其特征在于,所述处理模块具体用于:
获取所述子项所在的动态子树的子树根目录至所述第一目录的目录标识路径;
按照所述子树根目录至所述第一目录的顺序,依次对所述目录标识路径中的每一个目录执行如下处理,直至所述第一目录对应的缓存节点创建完成:
针对所述目录标识路径中的任一目录,若所述树形缓存结构不存在该目录对应的缓存节点,则在所述树形缓存结构中创建该目录对应的缓存节点;
所述处理模块在所述树形缓存结构中创建所述第一目录对应的缓存节点之后,还包括:
在所述树形缓存结构中创建所述子项对应的缓存节点。
13.根据权利要求12所述的装置,其特征在于,所述处理模块将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还包括:
为所述第一目录对应的缓存节点设置自身不可信标记和子项可信标记,为所述子项对应的缓存节点设置自身可信标记和子项不可信标记,为所述子树根目录至所述第一目录的目录标识路径中新创建的其它目录对应的缓存节点设置自身不可信标记和子项不可信标记。
14.根据权利要求11所述的装置,其特征在于,在所述收发模块接收客户端代理设备发送的元数据请求之后,所述处理模块还用于:
在本装置保存的树形缓存结构中存在所述第一目录对应的缓存节点,且所述第一目录对应的缓存节点被设置有子项不可信标记的情况下,根据所述第一标识,读取所述存储设备中存储的第一元数据文件,并将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点;
将所述第一目录对应的缓存节点的子项不可信标记清除,并为所述第一目录对应的缓存节点设置子项可信标记。
15.根据权利要求14所述的装置,其特征在于,所述处理模块在读取所述存储设备中存储的第一元数据文件之前,还用于:
在本装置保存的树形缓存结构中不存在所述子项对应的缓存节点的情况下,所述处理模块在所述树形缓存结构中创建所述子项对应的缓存节点;
所述处理模块在将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还用于:
为所述子项对应的缓存节点设置自身可信标记和子项不可信标记。
16.根据权利要求11至15中任一项所述的装置,其特征在于,所述处理模块在所述树形缓存结构中创建所述第一目录对应的缓存节点之前,还用于:
获取出生记录服务器中保存的所述第一目录的出生记录,所述第一目录的出生记录中包括所述第一目录的保护级别信息;
所述处理模块读取存储设备中存储的第一元数据文件,包括:
根据所述第一标识和所述第一目录的保护级别信息,确定所述第一元数据文件在所述存储设备中的存储位置,从所述存储位置读取所述第一元数据文件。
17.根据权利要求16所述的装置,其特征在于,所述元数据请求中还包括文件操作命令;
所述处理模块在将所述第一元数据文件的内容保存到所述第一目录对应的缓存节点之后,还用于:
根据所述文件操作命令,对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理。
18.根据权利要求11所述的装置,其特征在于,所述元数据请求中还包括文件操作命令;
所述收发模块接收客户端代理设备发送的元数据请求之后,所述处理模块还用于:
在本装置保存的树形缓存结构中存在所述第一目录对应的缓存节点,且所述第一目录对应的缓存节点被设置有子项可信标记的情况下,根据所述文件操作命令,直接对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理。
19.根据权利要求18所述的装置,其特征在于,所述处理模块在对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理之前,还用于:
在本装置保存的树形缓存结构中不存在所述子项对应的缓存节点的情况下,在所述树形缓存结构中创建所述子项对应的缓存节点,并为所述子项对应的缓存节点设置自身可信标记和子项不可信标记。
20.根据权利要求17或18所述的装置,其特征在于,所述处理模块对所述第一目录的缓存节点中保存的所述子项的元数据信息进行处理之后,所述收发模块还用于:
将处理后的所述子项的元数据信息发送给所述存储设备。
21.一种构建元数据缓存的装置,其特征在于,包括至少一个处理器,所述至少一个处理器与至少一个存储器耦合:
所述至少一个处理器,用于执行所述至少一个存储器中存储的计算机程序或指令,以使得所述装置执行如权利要求1至10中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当计算机读取并执行所述计算机程序或指令时,使得计算机执行如权利要求1至10中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811405321.4A CN109684282B (zh) | 2018-11-23 | 2018-11-23 | 一种构建元数据缓存的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811405321.4A CN109684282B (zh) | 2018-11-23 | 2018-11-23 | 一种构建元数据缓存的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109684282A true CN109684282A (zh) | 2019-04-26 |
CN109684282B CN109684282B (zh) | 2021-01-01 |
Family
ID=66185586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811405321.4A Active CN109684282B (zh) | 2018-11-23 | 2018-11-23 | 一种构建元数据缓存的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109684282B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046070A (zh) * | 2019-11-21 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 一种智能缓存数据方法、装置、计算机设备及存储介质 |
CN111143293A (zh) * | 2019-12-22 | 2020-05-12 | 浪潮电子信息产业股份有限公司 | 一种元数据获取方法、装置、设备及计算机可读存储介质 |
CN111399760A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视***技术有限公司 | Nas集群元数据处理方法、装置、nas网关及介质 |
CN112597120A (zh) * | 2020-11-30 | 2021-04-02 | 新华三大数据技术有限公司 | 一种目录管理方法及装置 |
CN113282539A (zh) * | 2021-05-14 | 2021-08-20 | 北京达佳互联信息技术有限公司 | 信息加载方法、装置、电子设备及存储介质 |
CN114116613A (zh) * | 2021-11-26 | 2022-03-01 | 北京百度网讯科技有限公司 | 基于分布式文件***的元数据查询方法、设备和存储介质 |
WO2022052586A1 (zh) * | 2020-09-11 | 2022-03-17 | 苏州浪潮智能科技有限公司 | 一种分布式存储***中对象元数据检索列举方法及装置 |
WO2023083114A1 (en) * | 2021-11-15 | 2023-05-19 | International Business Machines Corporation | Dynamic database object description adjustment |
CN117493276A (zh) * | 2024-01-03 | 2024-02-02 | 柏科数据技术(深圳)股份有限公司 | 针对Ceph文件的读取方法、装置、服务器及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020107892A1 (en) * | 2000-12-12 | 2002-08-08 | Oracle Corporation | Dynamic tree control system |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN101697168A (zh) * | 2009-10-22 | 2010-04-21 | 中国科学技术大学 | 一种分布式文件***动态元数据管理方法及*** |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件***元数据管理方法 |
CN103793534A (zh) * | 2014-02-28 | 2014-05-14 | 苏州博纳讯动软件有限公司 | 分布式文件***及均衡元数据存储和访问负载的实现方法 |
CN106598744A (zh) * | 2017-01-13 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种元数据集群动态子树分区方法及装置 |
US20170329541A1 (en) * | 2016-05-11 | 2017-11-16 | Hitachi, Ltd. | Data storage system, process and computer program for such data storage system for reducing read and write amplifications |
CN108446356A (zh) * | 2018-03-12 | 2018-08-24 | 上海哔哩哔哩科技有限公司 | 数据缓存方法、服务器及数据缓存*** |
-
2018
- 2018-11-23 CN CN201811405321.4A patent/CN109684282B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020107892A1 (en) * | 2000-12-12 | 2002-08-08 | Oracle Corporation | Dynamic tree control system |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN101697168A (zh) * | 2009-10-22 | 2010-04-21 | 中国科学技术大学 | 一种分布式文件***动态元数据管理方法及*** |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件***元数据管理方法 |
CN103793534A (zh) * | 2014-02-28 | 2014-05-14 | 苏州博纳讯动软件有限公司 | 分布式文件***及均衡元数据存储和访问负载的实现方法 |
US20170329541A1 (en) * | 2016-05-11 | 2017-11-16 | Hitachi, Ltd. | Data storage system, process and computer program for such data storage system for reducing read and write amplifications |
CN106598744A (zh) * | 2017-01-13 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种元数据集群动态子树分区方法及装置 |
CN108446356A (zh) * | 2018-03-12 | 2018-08-24 | 上海哔哩哔哩科技有限公司 | 数据缓存方法、服务器及数据缓存*** |
Non-Patent Citations (1)
Title |
---|
SIYANG LI等: "A Flattened Metadata Service for Distributed File Systems", 《 IEEE并行和分布式***事务》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399760A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视***技术有限公司 | Nas集群元数据处理方法、装置、nas网关及介质 |
CN111399760B (zh) * | 2019-11-19 | 2023-01-24 | 杭州海康威视***技术有限公司 | Nas集群元数据处理方法、装置、nas网关及介质 |
CN111046070A (zh) * | 2019-11-21 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 一种智能缓存数据方法、装置、计算机设备及存储介质 |
CN111046070B (zh) * | 2019-11-21 | 2023-08-18 | 深圳前海环融联易信息科技服务有限公司 | 一种智能缓存数据方法、装置、计算机设备及存储介质 |
CN111143293A (zh) * | 2019-12-22 | 2020-05-12 | 浪潮电子信息产业股份有限公司 | 一种元数据获取方法、装置、设备及计算机可读存储介质 |
CN111143293B (zh) * | 2019-12-22 | 2022-06-07 | 浪潮电子信息产业股份有限公司 | 一种元数据获取方法、装置、设备及计算机可读存储介质 |
WO2022052586A1 (zh) * | 2020-09-11 | 2022-03-17 | 苏州浪潮智能科技有限公司 | 一种分布式存储***中对象元数据检索列举方法及装置 |
US12013861B2 (en) | 2020-09-11 | 2024-06-18 | Inspur Suzhou Intelligent Technology Co., Ltd. | Method and apparatus for retrieving and enumerating object metadata in distributed storage system |
CN112597120B (zh) * | 2020-11-30 | 2022-05-27 | 新华三大数据技术有限公司 | 一种目录管理方法及装置 |
CN112597120A (zh) * | 2020-11-30 | 2021-04-02 | 新华三大数据技术有限公司 | 一种目录管理方法及装置 |
CN113282539A (zh) * | 2021-05-14 | 2021-08-20 | 北京达佳互联信息技术有限公司 | 信息加载方法、装置、电子设备及存储介质 |
WO2023083114A1 (en) * | 2021-11-15 | 2023-05-19 | International Business Machines Corporation | Dynamic database object description adjustment |
CN114116613A (zh) * | 2021-11-26 | 2022-03-01 | 北京百度网讯科技有限公司 | 基于分布式文件***的元数据查询方法、设备和存储介质 |
CN117493276A (zh) * | 2024-01-03 | 2024-02-02 | 柏科数据技术(深圳)股份有限公司 | 针对Ceph文件的读取方法、装置、服务器及存储介质 |
CN117493276B (zh) * | 2024-01-03 | 2024-04-09 | 柏科数据技术(深圳)股份有限公司 | 针对Ceph文件的读取方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109684282B (zh) | 2021-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684282A (zh) | 一种构建元数据缓存的方法及装置 | |
US10949551B2 (en) | Policy aware unified file system | |
US10496627B2 (en) | Consistent ring namespaces facilitating data storage and organization in network infrastructures | |
CN110275884B (zh) | 数据存储方法及节点 | |
CN105324770B (zh) | 有效读出副本 | |
CN103116618B (zh) | 基于客户端持久缓存的远程文件***镜像方法及*** | |
CN102779185B (zh) | 一种高可用分布式全文索引方法 | |
CN102708165B (zh) | 分布式文件***中的文件处理方法及装置 | |
CN106294352B (zh) | 一种文件处理方法、装置和文件*** | |
CN104516974B (zh) | 一种文件***目录项的管理方法及装置 | |
CN105190623A (zh) | 日志记录管理 | |
CN102169507A (zh) | 一种分布式实时搜索引擎 | |
CN102158540A (zh) | 分布式数据库实现***及方法 | |
JP5638608B2 (ja) | メタデータに従ってファイルシステムのファイルにアクセスする方法、およびその方法を実装する装置 | |
CN106326239A (zh) | 分布式文件***及其文件元信息管理方法 | |
CN103312624A (zh) | 一种消息队列服务***和方法 | |
CN104423982B (zh) | 请求的处理方法和处理设备 | |
CN109408689A (zh) | 数据获取方法、装置、***及电子设备 | |
CN109542861A (zh) | 一种文件管理方法、装置和*** | |
US7080102B2 (en) | Method and system for migrating data while maintaining hard links | |
CN109328331A (zh) | 用于异步存储服务的自组织存储*** | |
JP6034512B2 (ja) | 計算機システム及びデータ管理方法 | |
CN106294842A (zh) | 一种数据交互方法、平台及分布式文件*** | |
JP6221717B2 (ja) | ストレージ装置、ストレージシステム及びデータ管理プログラム | |
US6952699B2 (en) | Method and system for migrating data while maintaining access to data with use of the same pathname |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |