CN101247417B - 双层元数据处理系统及方法 - Google Patents
双层元数据处理系统及方法 Download PDFInfo
- Publication number
- CN101247417B CN101247417B CN2008101015210A CN200810101521A CN101247417B CN 101247417 B CN101247417 B CN 101247417B CN 2008101015210 A CN2008101015210 A CN 2008101015210A CN 200810101521 A CN200810101521 A CN 200810101521A CN 101247417 B CN101247417 B CN 101247417B
- Authority
- CN
- China
- Prior art keywords
- metadata
- processing server
- module
- metadata processing
- object storage
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机存储系统体系结构领域,公开了一种双层元数据处理系统及方法。在本发明中,通过在元数据服务器中设置元数据处理服务器模块和元数据对象存储服务器模块,将对元数据进行的读取和修改操作请求进行了合理的分流,使得不同类型的元数据操作请求在不同的层次上进行处理,从而能够针对元数据操作请求的类型进行优化,同时,在处理读取元数据的操作请求时,可以根据请求创建多个元数据复本,以平衡对读取元数据操作的访问负载。
Description
技术领域
本发明涉及计算机存储系统体系结构领域,特别是一种双层元数据处理系统及方法。
背景技术
随着世界信息化的不断推进,计算机已成为各行业中不可缺少的工具。在计算机中,承载信息的存储管理软件随着信息量的突增而日益受到了人们的重视。
存储管理软件的功能是将物理存储介质(如磁盘、盘阵等)组织成逻辑分组,以实现各种功能和特性。操作系统可以通过调用存储管理软件的接口为上层用户提供存储服务。
在存储系统中所进行处理的数据有两类,一类是用户使用的普通数据,另一类是存储系统用于管理用户数据的数据,即元数据(Metadata)。普通数据访问的特点是IO量大、CPU利用率低以及对网络带宽的要求高;元数据访问的特点是IO量小、CPU利用率高以及对网络延迟的要求高。由于上述两类数据间存在着差异,因此存储系统将这两类数据的信息和控制流区分,分别定义了普通数据和元数据处理的功能操作,并将对上述两类数据的管理分离到独立部件。其中,处理普通数据的部件称为数据存储服务器,处理元数据的部件称为元数据服务器。
对于数据存储服务器的设计主要有两类:第一类采用传统的块接口存储设计,即数据存储服务器对数据块进行管理;第二类采用面向对象接口的设计,即数据存储服务器对对象进行管理。对于第一类的设计,在国际上主要有两种基于块的形式的网络化存储架构,这两种架构通过命令集来进行区分,一种是SAN(Storage Area Network)结构,其采用SCSI块IO的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,SAN结构具有高带宽、低延迟的优势,在高性能计算中占有一席之地,但是,由于采用SAN结构系统的价格较高且可扩展性较差,目前已不能满足拥有成千上万个CPU规模的系统的需求。另一种第一类的设计是NAS(NetworkAttached Storage)结构,其采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,具有可扩展性好、价格便宜、用户易管理等优点,如目前在集群计算中应用较多的NFS文件系统就属于NAS结构,但是,由于NAS结构的协议开销高、带宽低、延迟大,因此不利于在高性能集群中应用。对于第二类的设计,其运用一个对象存储设备存放对象,以控制着从对象到物理介质的映射图,设备同时也跟踪作为属性的元数据,例如建立时间标记,从而允许在客户端非常容易地共享数据元数据,对象存储技术的最大优点在于它结合了SAN结构的可扩展性以及NAS结构的数据共享,它将客户端和OSD设备直接联系起来,并不需要中间环节来管理元数据。
元数据服务器的设计从系统构成角度可以划分为两类:一类是单元数据服务器,另一类是多元数据服务器。单元数据服务器由一台元数据服务器为整个系统提供元数据服务,所有客户端的请求都发送到一台元数据服务器上并被执行。单元数据服务器的设计方式的优点是元数据请求都在一台服务器中完成,不需要服务器之间进行交互操作,具有实现相对简单、易于管理等特点,其缺点是扩展性差,当分布式文件系统面对较大规模的密集元数据请求时,元数据服务器会成为性能瓶颈,从而降低整个系统的处理性能。多元数据服务器是由多台元数据服务器为整个分布式文件系统共同提供元数据服务器。在这种元数据服务器中,元数据请求划分到其中一个元数据服务器进行处理。多元数据服务器结构的优点是扩展性好,能够适用于较大规模的机群运算环境,其缺点是多元数据服务器之间的负载平衡难以维持,对元数据的一致性维护复杂,可靠性实现复杂。
在分布式文件系统领域中,元数据处理的重要性正越来越多的得到人们的关注,提升元数据的处理性能也成为了当前元数据研究中的热点问题之一。在对元数据处理性能需求较高的应用领域中,单元数据服务器结构由于性能受到扩展性的限制而不能满足应用中的需要,多元数据服务器结构则由于其具有良好的扩展性而得到了广泛的关注。
对于多元数据服务器结构,其需要解决的主要问题是多元数据服务器之间的负载均衡问题。现有的多元数据服务器一般采用两种技术来解决该问题:一种是动态迁移技术,另一种是复本技术。动态迁移技术是指当其中一个服务器出现过载问题(由于客户端对服务器中的数据所发出的读取和修改请求过多,从而导致服务器的负载过大,进而影响服务器的正常工作)时,将该服务器中的热点元数据(被客户端频繁进行读取的元数据)转移到负载较轻的服务器上,后续对热点元数据的访问请求将发送到转移后的服务器。复本技术是指当其中一个服务器出现过载问题时,将该服务器中的热点元数据复制一份到负载较轻的服务器,后续对热点元数据的访问请求可以由原服务器和复本所在的服务器共同处理。对于动态迁移技术,由于确定负载较轻的元数据的时刻和后续的元数据访问是分离的,所以会造成元数据迁移后在转移服务器形成新的访问热点,因而这种技术并不能彻底解决负载均衡的问题。此外,由于元数据转移会使得原有的元数据与服务器之间的映射关系发生改变,因此会给元数据的管理维护带来困难。对于复本技术,尽管增加元数据复本个数并将其放在不同服务器上能够解决只读访问的热点问题,但是,由于对元数据进行修改操作时,需要同步多个元数据复本的修改,因此在修改操作与只读操作的交互模式下,多个元数据复本之间的一致性维护开销同样会减弱系统由于平衡负载所带来的优势。
发明内容
本发明的目的在于,提供一种双层元数据处理系统及方法,以解决现有的多元数据服务器结构不能同时避免热点问题和实现负载均衡的问题。
为了实现上述目的,本发明提供了一种双层元数据处理系统,包括多个元数据服务器以及客户端,所述客户端用于向所述元数据服务器发出读取元数据以及修改元数据的请求,所述元数据服务器用于接收所述客户端发送而来的读取元数据以及修改元数据的请求,并按照请求类型的不同分别进行相应的元数据读取和元数据修改的操作。
较佳的,在所述双层元数据处理系统中,所述元数据服务器中,包括元数据处理服务器模块以及元数据对象存储服务器模块112;
所述元数据处理服务器模块用于处理由客户端发送而来的元数据读取请求以及缓存元数据,所述元数据对象存储服务器模块用于元数据的存储以及处理由客户端发送而来的元数据修改请求。
较佳的,在所述双层元数据处理系统中,同一元数据分别缓存在多个元数据处理服务器模块中。
较佳的,在所述双层元数据处理系统中,同一元数据分别缓存在除存储有所述元数据的元数据服务器外的多个元数据服务器的元数据处理服务器模块中。
较佳的,在所述双层元数据处理系统中,所述元数据处理服务器模块分别具有不同的元数据处理服务器编号,所述元数据对象存储服务器模块分别具有不同的元数据对象存储服务器编号,所述元数据处理服务器编号和所述元数据对象存储服务器编号分别构成元数据处理服务器编号数组和元数据对象存储服务器编号数组,并存储在所述双层元数据处理系统中。
较佳的,在所述双层元数据处理系统中,所述元数据处理服务器模块中,包括第一元数据对象存储服务器确定函数模块,所述第一元数据对象存储服务器确定函数模块用于,当客户端向所述元数据处理服务器模块发出读取某个元数据的请求,但所述元数据处理服务器模块中没有缓存所述元数据时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
较佳的,在所述双层元数据处理系统中,所述第一元数据对象存储服务器确定函数模块通过存储在所述第一元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,确定需要进行操作的元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
较佳的,在所述双层元数据处理系统中,所述元数据对象存储服务器模块中,包括元数据处理服务器存储缓存表模块,用于为存储在所述元数据对象存储服务器模块中的元数据提供元数据处理服务器存储缓存表,所述元数据处理服务器存储缓存表用于存储缓存有与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号。
较佳的,在所述双层元数据处理系统中,所述客户端中,包括元数据处理服务器获取函数模块、元数据处理服务器读取缓存表模块以及第二元数据对象存储服务器确定函数模块;
所述元数据处理服务器获取函数模块用于为所述客户端提供一个供所述客户端发送读取元数据的请求以读取某一特定元数据的元数据处理服务器模块的元数据处理服务器编号;
所述元数据处理服务器读取缓存表模块用于为存储在所述双层元数据处理系统中的元数据提供元数据处理服务器读取缓存表,所述元数据处理服务器读取缓存表用于存储可供所述客户端发送读取元数据的请求以读取与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号及其访问频度;
所述第二元数据对象存储服务器确定函数模块用于当所述客户端需要进行元数据修改的操作时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
较佳的,在所述双层元数据处理系统中,所述元数据处理服务器读取缓存表中的表项按照所述元数据处理服务器模块的访问频度由小到大的顺序进行排列。
较佳的,在所述双层元数据处理系统中,所述第二元数据对象存储服务器确定函数模块通过存储在所述第二元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
较佳的,在所述双层元数据处理系统中,所述元数据具有元数据编号、元数据名称以及元数据路径的属性信息。
较佳的,在所述双层元数据处理系统中,所述元数据编号,包含有与所述元数据编号相对应的元数据的存储位置信息,通过所述存储位置信息可以得到存储有所述元数据的元数据对象存储服务器模块的元数据对象存储服务器编号。
较佳的,在所述双层元数据处理系统中,所述元数据名称和元数据路径,用于利用hash函数进行计算以获得一hash值,使用所述hash值作为索引,从由所述双层元数据处理系统中的所有元数据对象存储服务器模块的元数据对象存储服务器编号所构成的数组中,搜索出存储有所需进行操作的元数据的元数据对象存储服务器模块的元数据对象存储服务器编号。
为了实现上述目的,本发明还公开了一种双层元数据处理方法,包括以下步骤:
步骤100,对双层元数据处理系统进行初始化;
步骤200,根据客户端的操作,对存储在双层元数据处理系统中的元数据进行读取或修改操作。
较佳的,所述双层元数据处理方法中,所述步骤100中,包括以下步骤:
步骤110,在所述双层元数据处理系统中的元数据服务器中分别设置元数据处理服务器模块以及元数据对象存储服务器模块,为每个元数据处理服务器模块分别设置元数据处理服务器编号,为每个元数据对象存储服务器模块分别设置元数据对象存储服务器编号,为所有元数据处理服务器编号和所有元数据对象存储服务器编号分别设置存储在所述双层元数据处理系统中的元数据处理服务器编号数组和元数据对象存储服务器编号数组,为每个元数据处理服务器模块设置初始的访问频度以及最大访问频度;
步骤120,在所述元数据处理服务器模块中设置第一元数据对象存储服务器确定函数模块以及在所述元数据对象存储服务器模块中设置元数据处理服务器存储缓存表模块;
步骤130,在所述双层元数据处理系统中的客户端中设置元数据处理服务器获取函数模块、元数据处理服务器读取缓存表模块以及第二元数据对象存储服务器确定函数模块。
较佳的,所述双层元数据处理方法中,所述元数据处理服务器模块用于处理由客户端发送而来的元数据读取请求以及缓存元数据,所述元数据对象存储服务器模块用于元数据的存储以及处理由客户端发送而来的元数据修改请求。
较佳的,所述双层元数据处理方法中,同一元数据分别缓存在多个元数据处理服务器模块中。
较佳的,所述双层元数据处理方法中,所述第一元数据对象存储服务器确定函数模块用于,当客户端向所述元数据处理服务器模块发出读取某个元数据的请求,但所述元数据处理服务器模块中没有缓存所述元数据时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
较佳的,所述双层元数据处理方法中,所述元数据处理服务器存储缓存表模块,用于为存储在所述元数据对象存储服务器模块中的元数据提供元数据处理服务器存储缓存表,所述元数据处理服务器存储缓存表用于存储缓存有与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号。
较佳的,所述双层元数据处理方法中,所述元数据处理服务器获取函数模块用于为所述客户端提供一个供所述客户端发送读取元数据的请求以读取某一特定元数据的元数据处理服务器模块的元数据处理服务器编号;
所述元数据处理服务器读取缓存表模块用于为存储在所述双层元数据处理系统中的元数据提供元数据处理服务器读取缓存表,所述元数据处理服务器读取缓存表用于存储可供所述客户端发送读取元数据的请求以读取与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号及其访问频度;
所述第二元数据对象存储服务器确定函数模块用于当所述客户端需要进行元数据修改的操作时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
较佳的,所述双层元数据处理方法中,当所述客户端进行读取元数据的操作时,所述步骤200中包括以下步骤:
步骤211,客户端通过存储在所述元数据处理服务器获取函数模块中的元数据处理服务器获取函数,获取到一个元数据处理服务器模块的元数据处理服务器编号,并向所述元数据处理服务器编号所指定的元数据处理服务器模块发送元数据读取请求,进入步骤212;
步骤212,所述元数据处理服务器模块接收到由所述客户端发送来的元数据读取请求后,搜索在所述元数据处理服务器模块的缓存设备中是否缓存有用户需要读取的元数据,如果所述元数据处理服务器模块的缓存设备中缓存有所需读取的元数据,则将所述元数据、所述元数据处理服务器模块的元数据处理服务器编号以及所述元数据处理服务器模块的访问频度返回给所述客户端,进入步骤214,如果所述元数据处理服务器模块的缓存设备中没有缓存所需读取的元数据,则将所述客户端发送来的元数据读取请求、所述元数据处理服务器模块的元数据处理服务器编号和所述元数据处理服务器模块的访问频度发送给存储有所述元数据的元数据对象存储服务器模块,进入步骤S213;
步骤213,所述元数据对象存储服务器模块接收到由所述元数据处理服务器模块转发来的所述客户端发送的元数据读取请求后,将与所述请求一同发送而来的所述元数据处理服务器模块的元数据处理服务器编号记录到存储在所述元数据对象存储服务器模块的元数据处理服务器存储缓存表模块中的,与所述需要读取的元数据相对应的所述元数据的元数据处理服务器存储缓存表中,而后,将所述需要读取的元数据及与所述请求一起发送至所述元数据对象存储服务器模块的所述元数据处理服务器模块的元数据处理服务器编号与所述元数据处理服务器模块的访问频度一并发送给所述客户端,同时,将所述需要读取的元数据发送给所述元数据处理服务器模块,进入步骤214;
步骤214,所述客户端接收到由所述元数据处理服务器模块或所述MOS模块传送而来的元数据后,将与所述元数据一起传送而来的所述元数据处理服务器模块的元数据处理服务器编号以及所述元数据处理服务器模块的访问频度记录在所述客户端的所述元数据处理服务器读取缓存表模块中所存储的,与所述元数据相对应的元数据处理服务器读取缓存表中,其中,若所述元数据处理服务器读取缓存表中没有与所述元数据处理服务器模块相对应的表项,则添加相应的表项,并按照访问频度由小到大的顺序将所添加的表项插入到所述元数据处理服务器读取缓存表中,若所述元数据处理服务器读取缓存表中有与所述元数据处理服务器模块相对应的表项,则取下该表项,更新该表项中所记录的所述元数据处理服务器模块的访问频度,并按照访问频度由小到大的顺序将该表项插入到所述元数据处理服务器读取缓存表中,操作结束。
较佳的,所述双层元数据处理方法中,所述元数据处理服务器获取函数用以实现以下功能:根据客户端所需要读取的元数据的元数据编号,或所述元数据的元数据名称和元数据路径的信息组合,查询存储在客户端的,与所述客户端需要读取的元数据相对应的该元数据的元数据处理服务器读取缓存表是否为空;
如果所述元数据处理服务器读取缓存表为空,则随机选择一个可以用于缓存所述元数据的元数据处理服务器模块,并将所述元数据处理服务器模块的元数据处理服务器编号和所述元数据处理服务器模块的初始的访问频度加入到所述元数据的元数据处理服务器读取缓存表中,而后将所述元数据处理服务器模块的元数据处理服务器编号返回给客户端;
如果所述元数据处理服务器读取缓存表不为空,则选取所述元数据处理服务器读取缓存表中的第一项,如果所述第一项中的元数据处理服务器模块的访问频度大于初始化时所设定的所述元数据处理服务器模块的最大访问频度,且所述元数据处理服务器读取缓存表的总项数小于初始化时设定的所述元数据处理服务器读取缓存表的最大项数,则随机选择未被该元数据的元数据处理服务器读取缓存表所记录的可以用于缓存所述元数据的元数据处理服务器模块中的一个,将该元数据处理服务器模块的元数据处理服务器编号和访问频度加入到所述元数据处理服务器读取缓存表中,并将该元数据处理服务器模块的元数据处理服务器编号返回给客户端;
否则,直接将所述元数据处理服务器读取缓存表中第一项所记录的元数据处理服务器模块的元数据处理服务器编号返回给客户端。
较佳的,所述双层元数据处理方法中,所述客户端向所述MPS模块发送元数据读取请求中,包括所需读取的元数据的元数据编号,或所述元数据的元数据名称和元数据路径的信息组合。
较佳的,所述双层元数据处理方法中,在步骤212中,所述元数据处理服务器模块通过所述元数据处理服务器模块中的元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,以确定需要读取的元数据存储在哪个元数据对象存储服务器模块中。
较佳的,所述双层元数据处理方法中,所述元数据对象存储服务器确定函数用以实现以下功能:
当从所述客户端发送而来的元数据操作请求是INODE操作请求时,所述元数据对象存储服务器确定函数通过所述INODE操作请求中所包含的需要进行操作的元数据的元数据编号,获取与所述元数据编号相对应的元数据对象存储服务器编号信息,所述元数据对象存储服务器编号即为存储有需要进行操作的元数据的MOS模块的编号;
当从所述客户端发送而来的元数据操作请求是LOOKUP操作请求时,所述元数据对象存储服务器确定函数通过所述LOOKUP操作请求中所包含的需要进行操作的元数据的元数据名称以及元数据路径,利用hash函数获得一hash值,并使用此hash值作为索引,从由所述双层元数据处理系统中的所有元数据对象存储服务器模块的元数据对象存储服务器编号所构成的数组中,搜索出存储有所需进行操作的元数据的元数据对象存储服务器模块的元数据对象存储服务器编号。
较佳的,所述双层元数据处理方法中,当所述客户端进行修改元数据的操作时,所述步骤200中包括以下步骤:
步骤221,所述客户端通过存储在所述客户端的第二元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,确定存储有需要进行修改的元数据的元数据对象存储服务器模块,并向所述元数据对象存储服务器模块发送元数据修改请求,进入步骤222;
步骤222,所述存储有需要进行修改的元数据的元数据对象存储服务器模块接收到所述元数据修改请求后,查询存储在所述元数据对象存储服务器模块的元数据处理服务器存储缓存表模块中的与所要修改的元数据相对应的元数据处理服务器存储缓存表,并向与所述元数据处理服务器存储缓存表中每一项所对应的元数据处理服务器模块发送修改后的元数据以及元数据替换请求,所述元数据处理服务器模块接收到所述修改后的元数据以及元数据替换请求后,使用所述修改后的元数据替换缓存在所述元数据处理服务器模块的缓存设备中的相应的元数据,并向所述元数据对象存储服务器模块返回更新成功的消息,所述元数据对象存储服务器模块接收到所有更新成功的消息后,向所述客户端发送元数据更新成功的消息。
本发明的有益效果是:采取本发明中的双层元数据处理系统及方法,对元数据操作请求进行了合理的分流,使得不同类型的元数据操作请求在不同的层次上进行处理,从而能够针对元数据操作请求的类型进行优化,同时,在处理读取元数据的操作请求时,可以根据请求创建多个元数据复本,以平衡对读取元数据操作的访问负载。具体来讲,本发明中的双层元数据处理系统及方法,其本质是在客户端与元数据存储服务器之间增加了一级用于处理元数据读取操作请求的元数据处理服务器,采取这种两级的元数据处理结构,第一,由于读取元数据的操作请求在元数据访问中所占的比例相当大,因此允许元数据在多个元数据处理服务器上保存复本,可以大大提高元数据访问的处理性能;第二,由于元数据的热点访问通常也是元数据的读取访问,因此,通过在多个元数据处理服务器上有同一元数据的复本,可以解决元数据热点访问的问题;第三,采取两级结构,使元数据的修改操作访问同读取操作访问分离,分别由元数据对象存储服务器和元数据处理服务器来处理,也可以有效减轻元数据对象存储服务器的负担,有助于提高元数据修改访问的处理性能;第四,通过对元数据处理服务器和元数据对象存储服务器的功能划分,元数据处理服务器只处理元数据读取的访问,元数据对象存储服务器只处理元数据修改的访问,有助于两者在实现过程中针对各自的功能进行性能优化。
附图说明
图1为本发明的双层元数据处理系统的结构图;
图2为本发明的双层元数据处理系统的运作示意图;
图3为本发明的双层元数据处理方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的双层元数据处理系统及方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
元数据访问热点,指被客户端频繁进行操作的元数据,其可以从属性上分为两类,一类是元数据只读访问热点,另一类是元数据修改访问热点。本发明主要解决第一类元数据只读访问热点的问题。
为了充分发挥所有元数据服务器的处理能力,将访问负载能够均衡地分布到多个元数据服务器上,本技术方案将元数据的处理与元数据的存储分离,采用一种两级的元数据服务器结构,这样不仅有利于解决访问负载均衡问题,而且也有利于解决热点访问问题。
请参照图1,此为本发明的双层元数据处理系统的结构图,本发明的双层元数据处理系统10中,包括多个元数据服务器11以及客户端12,所述客户端12用于向所述元数据服务器11发出读取元数据以及修改元数据的请求,所述元数据服务器11用于接收所述客户端12发送而来的读取元数据以及修改元数据的请求,并进行相应的元数据读取和元数据修改操作。
所述元数据服务器11中,包括元数据处理服务器(Metadata ProcessingServer,简称为MPS)模块111(第一级元数据处理设备)以及元数据对象存储服务器(Metadata Object Storage Server,简称为MOS)模块112(第二级元数据处理设备)。所述MPS模块111用于处理由客户端12发送而来的元数据读取请求以及缓存元数据,所述MOS模块112用于元数据的存储以及处理由客户端12发送而来的元数据修改请求,其中,同一个元数据可以分别缓存在多个MPS模块111中但只能存储在一个MOS模块112中,同时,如果某个元数据服务器11的MOS模块112中存储了一个元数据,则这个元数据服务器11的MPS模块111中不能缓存同一个元数据。每个MPS模块111都具有一可唯一确定其身份的MPS编号(MPS_ID)。每个MOS模块112都具有一可唯一确定其身份的MOS编号(MOS_ID)。所有MPS_ID和所有MOS_ID分别构成MPS_ID数组和MOS_ID数组,并存储在所述双层元数据处理系统10中。每个元数据服务器11的MPS模块111中,都包括存储有MOS确定函数模块的第一MOS确定函数模块1111,用于当客户端向这个元数据服务器11的MPS模块111发出读取某个元数据的请求,但这个元数据服务器11的MPS模块111中没有缓存所述元数据时,通过MOS确定函数确定所述元数据存储在哪个元数据服务器11的MOS模块112中。每个元数据服务器11的MOS模块112中,都包括MPS存储缓存表模块1121,用于为每个存储在这个元数据服务器11的MOS模块112中的元数据提供MPS存储缓存表,存储在MOS模块112中的元数据与MPS存储缓存表之间是一一对应关系。所述MPS存储缓存表用于存储那些缓存有与所述MPS存储缓存表相对应的元数据的MPS模块111的MPS_ID。
所述客户端12中,包括存储有MPS获取函数的MPS获取函数模块121、MPS读取缓存表模块122以及第二MOS确定函数模块123。所述MPS获取函数模块121用于通过MPS获取函数为所述客户端12提供一个供所述客户端发送读取元数据的请求以读取某一特定元数据的MPS模块111的MPS_ID。所述MPS读取缓存表模块122用于为每个存储在所述双层元数据处理系统10中的元数据提供MPS读取缓存表,存储在所述双层元数据处理系统10中的元数据与MPS读取缓存表之问是一一对应关系。所述MPS读取缓存表用于存储那些可供所述客户端12发送读取元数据的请求以读取与所述MPS存储缓存表相对应的元数据的MPS模块111的MPS_ID及其访问频度f,所述MPS读取缓存表中的表项按照所述MPS模块的访问频度f由小到大的顺序进行排列。所述第二MOS确定函数模块123中存储有MOS确定函数,所述第二MOS确定函数模块123用于当所述客户端12需要进行元数据修改的操作时,通过MOS确定函数确定所述元数据存储在哪个元数据服务器11的MOS模块112中。
存储在所述双层元数据处理系统10中的每个元数据,都具有元数据编号I_NUMBER,元数据名称NAME以及元数据路径DIR_I_NUMBER等属性信息,通过I_NUMBER或通过NAME和DIR_I_NUMBER的信息组合,可以唯一的确定一个特定的元数据,因此,在所述双层元数据处理系统10中,当需要确定一个元数据时,可以通过将I_NUMBER或将NAME和DIR_I_NUMBER的信息组合作为输入信息以确定所述元数据。在本发明的具体实施例中,所述I_NUMBER中,包含有与其相对应的元数据的存储位置信息,通过所述存储位置信息可以得到存储有与所述I_NUMBER相对应的元数据的MOS模块的MOS_ID,同时,当得知一个元数据的NAME和DIR_I_NUMBER后,可以使用这两个属性信息,利用hash函数进行计算以获得一hash值,并使用此hash值作为索引,从由所述双层元数据处理系统中的所有MOS模块的MOS_ID所构成的数组中,搜索出存储有所需进行操作的元数据的MOS模块的MOS_ID,其中,所述hash函数可以使用如LINUX系统中的hash函数等hash函数。
请参照图2,此为本发明的双层元数据处理系统的运作示意图。在本发明的双层元数据处理系统10中,当所述客户端12需要读取元数据时,直接向缓存有所述元数据的所述MPS模块111(即第一级元数据处理设备)发出读取元数据的请求,并从所述MPS模块111中的缓存设备中读取所述元数据;当所述客户端12需要修改元数据时,直接向存储有所述元数据的所述MOS模块112(即第二级元数据处理设备)发出修改元数据的请求,并直接修改存储在所述MOS模块112中的所述元数据。
本发明的双层元数据处理系统10的运作过程,请参照下述的双层元数据处理方法。
请参照图3,此为本发明的双层元数据处理方法的流程图,本发明的双层元数据处理方法中,包括以下步骤:
步骤S100,对双层元数据处理系统进行初始化。
双层元数据处理系统的基本组成设备是元数据服务器和客户端,在初始化的过程中,需要在所述元数据服务器中分别设置元数据处理服务器(MPS)模块以及元数据对象存储服务器(MOS)模块,根据配置文件信息为每个MPS模块分别设置MPS_ID和为每个MOS模块设置MOS_ID,为所有MPS_ID和所有MOS_ID分别设置存储在所述双层元数据处理系统中的MPS_ID数组和MOS_ID数组,并为每个MPS模块设置初始的访问频度f以及最大访问频度MAX_FREQUENCY。所述MPS模块用于处理由客户端发送而来的元数据读取请求以及缓存元数据,所述MOS模块用于元数据的存储以及处理由客户端发送而来的元数据修改请求,同一个元数据可以分别缓存在多个MPS模块中但只能存储在一个MOS模块中,如果某个元数据服务器的MOS模块中存储了一个元数据,则这个元数据服务器的MPS模块中不能缓存同一个元数据。
在设置了所述元数据处理服务器(MPS)模块以及所述元数据对象存储服务器(MOS)模块后,在所述元数据处理服务器(MPS)模块中设置第一MOS确定函数模块以及在所述元数据对象存储服务器(MOS)模块中设置MPS存储缓存表模块。所述第一MOS确定函数模块,用于当客户端向某个元数据服务器的MPS模块发出读取某个元数据的请求,但这个元数据服务器的MPS模块中没有缓存所述元数据时,通过存储在所述第一MOS确定函数模块中的MOS确定函数确定所述元数据存储在哪个元数据服务器的MOS模块中。所述MPS存储缓存表模块,用于为每个存储在同一MOS模块中的元数据提供MPS存储缓存表,存储在MOS模块中的元数据与MPS存储缓存表之间是一一对应关系。所述MPS存储缓存表用于存储那些缓存有与所述MPS存储缓存表相对应的元数据的MPS模块的MPS_ID。
在初始化过程中,还需要在每个客户端中设置MPS获取函数模块、MPS读取缓存表模块以及第二MOS确定函数模块。所述MPS获取函数模块用于通过存储在所述MPS获取函数模块中的MPS获取函数,为所述客户端提供一个供所述客户端发送读取元数据的请求以读取某一特定元数据的MPS模块的MPS_ID。所述MPS读取缓存表模块用于为每个存储在所述双层元数据处理系统中的元数据提供MPS读取缓存表,存储在所述双层元数据处理系统中的元数据与MPS读取缓存表之间是一一对应关系。所述MPS读取缓存表用于存储那些可供所述客户端发送读取元数据的请求以读取与所述MPS存储缓存表相对应的元数据的MPS模块的MPS_ID及其访问频度f,在初始化过程中,还需要为每个元数据的MPS读取缓存表设置一个最大项数MAX_MPS_NUM。所述第二MOS确定函数模块用于当所述客户端需要进行元数据修改的操作时,通过存储在所述第二MOS确定函数模块中的MOS确定函数以确定所述元数据存储在哪个元数据服务器的MOS模块中。
步骤S200,根据客户端的操作,对存储在双层元数据处理系统中的元数据进行读取或修改操作。
在步骤S200中,当客户端进行读取元数据的操作时,所述步骤S200中包括以下步骤:
步骤S211,客户端通过存储在所述MPS获取函数模块中的MPS获取函数,获取到一个MPS模块的MPS_ID,并向所述MPS_ID所指定的MPS模块发送元数据读取请求,进入步骤S212。
其中,所述MPS获取函数用以实现以下功能:根据客户端所需要读取的元数据的I_NUMBER,或所述元数据的NAME和DIR_I_NUMBER的信息组合,查询存储在客户端的,与所述客户端需要读取的元数据相对应的该元数据的MPS读取缓存表是否为空;如果所述MPS读取缓存表为空,则随机选择一个可以用于缓存所述元数据的MPS模块(即除存储有所述元数据的元数据服务器外的任一元数据服务器中的MPS模块),并将所述MPS模块的MPS_ID和所述MPS模块的初始的访问频度f加入到所述元数据的MPS读取缓存表中,而后将所述MPS模块的MPS_ID返回给客户端;如果所述MPS读取缓存表不为空,则选取所述MPS读取缓存表中的第一项,如果所述第一项中的MPS模块的访问频度f大于初始化时所设定的所述MPS模块的最大访问频度MAX_FREQUENCY,且所述MPS读取缓存表的总项数小于初始化时设定的所述MPS读取缓存表的最大项数MAX_MPS_NUM,则随机选择未被该元数据的MPS读取缓存表所记录的可以用于缓存所述元数据的MPS模块(即除存储有所述元数据的元数据服务器外的任一元数据服务器中的MPS模块)中的一个,将该MPS模块的MPS_ID和访问频度f加入到所述MPS读取缓存表中,并将该MPS模块的MPS_ID返回给客户端;否则,直接将所述MPS读取缓存表中第一项所记录的MPS模块的MPS_ID返回给客户端。
其中,所述客户端向所述MPS模块发送元数据读取请求中,包括所需读取的元数据的I_NUMBER,或所述元数据的NAME和DIR_I_NUMBER的信息组合。
步骤S212,所述MPS模块接收到由所述客户端发送来的元数据读取请求后,搜索在所述MPS模块的缓存设备中是否缓存有用户需要读取的元数据,如果所述MPS模块的缓存设备中缓存有所需读取的元数据,则将所述元数据、所述MPS模块的MPS_ID以及所述MPS模块的访问频度f返回给所述客户端,进入步骤S214;如果所述MPS模块的缓存设备中没有缓存所需读取的元数据,则将所述客户端发送来的元数据读取请求、所述MPS模块的MPS_ID和所述MPS模块的访问频度f发送给存储有所述元数据的MOS模块,进入步骤S213,其中,所述MPS模块通过所述MPS模块中的MOS确定函数模块中的MOS确定函数,以确定需要读取的元数据存储在哪个MOS模块中。
其中,所述MOS确定函数用以实现以下功能:当从所述客户端发送而来的元数据操作请求是INODE操作请求(元数据节点操作请求,即所述元数据操作请求中包括所需操作的元数据的I_NUMBER)时,所述MOS确定函数通过所述INODE操作请求中所包含的需要进行操作的元数据的I_NUMBER,获取与所述I_NUMBER相对应的MOS_ID信息,所述MOS_ID即为存储有需要进行操作的元数据的MOS模块的编号;当从所述客户端发送而来的元数据操作请求是LOOKUP操作请求(元数据查找操作请求,即所述元数据操作请求中包括所需操作的元数据的NAME以及DIR_I_NUMBER)时,所述MOS确定函数通过所述LOOKUP操作请求中所包含的需要进行操作的元数据的NAME以及DIR_I_NUMBER,利用hash函数获得一hash值,并使用此hash值作为索引,从由所述双层元数据处理系统中的所有MOS模块的MOS_ID所构成的数组中,搜索出存储有所需进行操作的元数据的MOS模块的MOS_ID。其中,所述hash函数可以使用如LINUX系统中的hash函数等hash函数。
步骤S213,所述MOS模块接收到由所述MPS模块转发来的所述客户端发送的元数据读取请求后,将与所述请求一同发送而来的所述MPS模块的MPS_ID记录到存储在所述MOS模块的MPS存储缓存表模块中的,与所述需要读取的元数据相对应的所述元数据的MPS存储缓存表中,而后,将所述需要读取的元数据及与所述请求一起发送至所述MOS模块的所述MPS模块的MPS_ID与所述MPS模块的访问频度f一并发送给所述客户端,同时,将所述需要读取的元数据发送给所述MPS模块,进入步骤S214。
步骤S214,所述客户端接收到由所述MPS模块或所述MOS模块传送而来的元数据后,将与所述元数据一起传送而来的所述MPS模块的MPS_ID以及所述MPS模块的访问频度f记录在所述客户端的所述MPS读取缓存表模块中所存储的,与所述元数据相对应的MPS读取缓存表中,其中,若所述MPS读取缓存表中没有与所述MPS模块相对应的表项,则添加相应的表项,并按照访问频度f由小到大的顺序将所添加的表项插入到所述MPS读取缓存表中;若所述MPS读取缓存表中有与所述MPS模块相对应的表项,则取下该表项,更新该表项中所记录的所述MPS模块的访问频度f,并按照访问频度f由小到大的顺序将该表项插入到所述MPS读取缓存表中;操作结束。
在步骤S200中,当客户端进行修改元数据的操作时,所述步骤S200中包括以下步骤:
步骤S221,所述客户端通过存储在所述客户端的第二MOS确定函数模块中的MOS确定函数,确定存储有需要进行修改的元数据的MOS模块,并向所述MOS模块发送元数据修改请求,进入步骤S222。其中,所述MOS确定函数的所实现的功能请参照前述,在此不再赘述。
步骤S222,所述存储有需要进行修改的元数据的MOS模块接收到所述元数据修改请求后,查询存储在所述MOS模块的MPS存储缓存表模块中的与所要修改的元数据相对应的MPS存储缓存表,并向与所述MPS存储缓存表中每一项所对应的MPS模块发送修改后的元数据以及元数据替换请求,所述MPS模块接收到所述修改后的元数据以及元数据替换请求后,使用所述修改后的元数据替换缓存在所述MPS模块的缓存设备中的相应的元数据,并向所述MOS模块返回更新成功的消息,所述MOS模块接收到所有更新成功的消息后,向所述客户端发送元数据更新成功的消息。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (23)
1.一种双层元数据处理系统,其特征在于,采用将元数据的处理与元数据的存储分离的两级元数据服务器结构,其包括多个元数据服务器以及客户端,其中:
所述客户端用于向所述元数据服务器发出读取元数据以及修改元数据的请求;
所述元数据服务器用于接收所述客户端发送而来的读取元数据以及修改元数据的请求,并按照请求类型的不同分别进行相应的元数据读取和元数据修改的操作,其中,所述元数据服务器中,包括元数据处理服务器模块以及元数据对象存储服务器模块;
所述元数据处理服务器模块用于处理由客户端发送而来的元数据读取请求以及缓存元数据,所述元数据对象存储服务器模块用于元数据的存储以及处理由客户端发送而来的元数据修改请求;
当所述客户端需要读取元数据时,直接向缓存有所述元数据的所述元数据处理服务器模块发出读取元数据的请求,并从所述元数据处理服务器模块中的缓存设备中读取所述元数据;当所述客户端需要修改元数据时,直接向存储有所述元数据的所述元数据对象存储服务器模块发出修改元数据的请求,并直接修改所述元数据。
2.根据权利要求1所述的一种双层元数据处理系统,其特征在于,同一元数据分别缓存在多个元数据处理服务器模块中。
3.根据权利要求1所述的一种双层元数据处理系统,其特征在于,同一元数据分别缓存在除存储有所述元数据的元数据服务器外的多个元数据服务器的元数据处理服务器模块中。
4.根据权利要求1所述的一种双层元数据处理系统,其特征在于,所述元数据处理服务器模块分别具有不同的元数据处理服务器编号,所述元数据对象存储服务器模块分别具有不同的元数据对象存储服务器编号,所述元数据处理服务器编号和所述元数据对象存储服务器编号分别构成元数据处理服务器编号数组和元数据对象存储服务器编号数组,并存储在所述双层元数据处理系统中。
5.根据权利要求1所述的一种双层元数据处理系统,其特征在于,所述元数据处理服务器模块中,包括第一元数据对象存储服务器确定函数模块,所述第一元数据对象存储服务器确定函数模块用于,当客户端向所述元数据处理服务器模块发出读取某个元数据的请求,但所述元数据处理服务器模块中没有缓存所述元数据时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
6.根据权利要求5所述的一种双层元数据处理系统,其特征在于,所述第一元数据对象存储服务器确定函数模块通过存储在所述第一元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,确定需要进行操作的元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
7.根据权利要求1所述的一种双层元数据处理系统,其特征在于,所述元数据对象存储服务器模块中,包括元数据处理服务器存储缓存表模块,用于为存储在所述元数据对象存储服务器模块中的元数据提供元数据处理服务器存储缓存表,所述元数据处理服务器存储缓存表用于存储缓存有与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号。
8.根据权利要求1所述的一种双层元数据处理系统,其特征在于,所述客户端中,包括元数据处理服务器获取函数模块、元数据处理服务器读取缓存表模块以及第二元数据对象存储服务器确定函数模块;
所述元数据处理服务器获取函数模块用于为所述客户端提供一个供所述客户端发送读取元数据的请求以读取某一特定元数据的元数据处理服务器模块的元数据处理服务器编号;
所述元数据处理服务器读取缓存表模块用于为存储在所述双层元数据处理系统中的元数据提供元数据处理服务器读取缓存表,所述元数据处理服务器读取缓存表用于存储供所述客户端发送读取元数据的请求以读取与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号及其访问频度;
所述第二元数据对象存储服务器确定函数模块用于当所述客户端需要进行元数据修改的操作时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
9.根据权利要求8所述的一种双层元数据处理系统,其特征在于,所述元数据处理服务器读取缓存表中的表项按照所述元数据处理服务器模块的访问频度由小到大的顺序进行排列。
10.根据权利要求8所述的一种双层元数据处理系统,其特征在于,所述第二元数据对象存储服务器确定函数模块通过存储在所述第二元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
11.根据权利要求4所述的一种双层元数据处理系统,其特征在于,所述元数据具有元数据编号、元数据名称以及元数据路径的属性信息。
12.根据权利要求11所述的一种双层元数据处理系统,其特征在于,所述元数据编号,包含有与所述元数据编号相对应的元数据的存储位置信息,通过所述存储位置信息得到存储有所述元数据的元数据对象存储服务器模块的元数据对象存储服务器编号。
13.根据权利要求11所述的一种双层元数据处理系统,其特征在于,所述元数据名称和元数据路径,用于利用hash函数进行计算以获得一hash值,使用所述hash值作为索引,从由所述双层元数据处理系统中的所有元数据对象存储服务器模块的元数据对象存储服务器编号所构成的数组中,搜索出存储有所需进行操作的元数据的元数据对象存储服务器模块的元数据对象存储服务器编号。
14.一种双层元数据处理方法,其特征在于,采用将元数据的处理与元数据的存储分离的两级元数据服务器结构,其包括以下步骤:
步骤100,对双层元数据处理系统进行初始化,在所述双层元数据处理系统中的元数据服务器中分别设置元数据处理服务器模块以及元数据对象存储服务器模块,其中:
所述元数据处理服务器模块用于处理由客户端发送而来的元数据读取请求以及缓存元数据,所述元数据对象存储服务器模块用于元数据的存储以及处理由客户端发送而来的元数据修改请求;
步骤200,根据客户端的操作,对存储在双层元数据处理系统中的元数据进行读取或修改操作,其中:
当所述客户端需要读取元数据时,直接向缓存有所述元数据的所述元数据处理服务器模块发出读取元数据的请求,并从所述元数据处理服务器模块中的缓存设备中读取所述元数据;当所述客户端需要修改元数据时,直接向存储有所述元数据的所述元数据对象存储服务器模块发出修改元数据的请求,并直接修改所述元数据。
15.根据权利要求14所述的一种双层元数据处理方法,其特征在于,所述步骤100中,包括以下步骤:
步骤110,为每个元数据处理服务器模块分别设置元数据处理服务器编号,为每个元数据对象存储服务器模块分别设置元数据对象存储服务器编号,为所有元数据处理服务器编号和所有元数据对象存储服务器编号分别设置存储在所述双层元数据处理系统中的元数据处理服务器编号数组和元数据对象存储服务器编号数组,为每个元数据处理服务器模块设置初始的访问频度以及最大访问频度;
步骤120,在所述元数据处理服务器模块中设置第一元数据对象存储服务器确定函数模块以及在所述元数据对象存储服务器模块中设置元数据处理服务器存储缓存表模块,其中:
所述第一元数据对象存储服务器确定函数模块用于,当客户端向所述元数据处理服务器模块发出读取某个元数据的请求,但所述元数据处理服务器模块中没有缓存所述元数据时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中;;
所述元数据处理服务器存储缓存表模块,用于为存储在所述元数据对象存储服务器模块中的元数据提供元数据处理服务器存储缓存表,所述元数据处理服务器存储缓存表用于存储缓存有与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号;
步骤130,在所述双层元数据处理系统中的客户端中设置元数据处理服务器获取函数模块、元数据处理服务器读取缓存表模块以及第二元数据对象存储服务器确定函数模块;
所述元数据处理服务器获取函数模块用于为所述客户端提供一个供所述客户端发送读取元数据的请求以读取某一特定元数据的元数据处理服务器模块的元数据处理服务器编号;
所述元数据处理服务器读取缓存表模块用于为存储在所述双层元数据处理系统中的元数据提供元数据处理服务器读取缓存表,所述元数据处理服务器读取缓存表用于存储供所述客户端发送读取元数据的请求以读取与所述元数据处理服务器存储缓存表相对应的元数据的元数据处理服务器模块的元数据处理服务器编号及其访问频度;
所述第二元数据对象存储服务器确定函数模块用于当所述客户端需要进行元数据修改的操作时,确定所述元数据存储在哪个元数据服务器的元数据对象存储服务器模块中。
16.根据权利要求15所述的一种双层元数据处理方法,其特征在于,所述元数据处理服务器模块用于处理由客户端发送而来的元数据读取请求以及缓存元数据,所述元数据对象存储服务器模块用于元数据的存储以及处理由客户端发送而来的元数据修改请求。
17.根据权利要求16所述的一种双层元数据处理方法,其特征在于,同一元数据分别缓存在多个元数据处理服务器模块中。
18.根据权利要求14所述的一种双层元数据处理方法,其特征在于,当所述客户端进行读取元数据的操作时,所述步骤200中包括以下步骤:
步骤211,客户端通过存储在所述元数据处理服务器获取函数模块中的元数据处理服务器获取函数,获取到一个元数据处理服务器模块的元数据处理服务器编号,并向所述元数据处理服务器编号所指定的元数据处理服务器模块发送元数据读取请求,进入步骤212;
步骤212,所述元数据处理服务器模块接收到由所述客户端发送来的元数据读取请求后,搜索在所述元数据处理服务器模块的缓存设备中是否缓存有用户需要读取的元数据,如果所述元数据处理服务器模块的缓存设备中缓存有所需读取的元数据,则将所述元数据、所述元数据处理服务器模块的元数据处理服务器编号以及所述元数据处理服务器模块的访问频度返回给所述客户端,进入步骤214,如果所述元数据处理服务器模块的缓存设备中没有缓存所需读取的元数据,则将所述客户端发送来的元数据读取请求、所述元数据处理服务器模块的元数据处理服务器编号和所述元数据处理服务器模块的访问频度发送给存储有所述元数据的元数据对象存储服务器模块,进入步骤S213;
步骤213,所述元数据对象存储服务器模块接收到由所述元数据处理服务器模块转发来的所述客户端发送的元数据读取请求后,将与所述请求一同发送而来的所述元数据处理服务器模块的元数据处理服务器编号记录到存储在所述元数据对象存储服务器模块的元数据处理服务器存储缓存表模块中的,与所述需要读取的元数据相对应的所述元数据的元数据处理服务器存储缓存表中,而后,将所述需要读取的元数据及与所述请求一起发送至所述元数据对象存储服务器模块的所述元数据处理服务器模块的元数据处理服务器编号与所述元数据处理服务器模块的访问频度一并发送给所述客户端,同时,将所述需要读取的元数据发送给所述元数据处理服务器模块,进入步骤214;
步骤214,所述客户端接收到由所述元数据处理服务器模块或所述元数据对象存储服务器模块传送而来的元数据后,将与所述元数据一起传送而来的所述元数据处理服务器模块的元数据处理服务器编号以及所述元数据处理服务器模块的访问频度记录在所述客户端的所述元数据处理服务器读取缓存表模块中所存储的,与所述元数据相对应的元数据处理服务器读取缓存表中,其中,若所述元数据处理服务器读取缓存表中没有与所述元数据处理服务器模块相对应的表项,则添加相应的表项,并按照访问频度由小到大的顺序将所添加的表项插入到所述元数据处理服务器读取缓存表中,若所述元数据处理服务器读取缓存表中有与所述元数据处理服务器模块相对应的表项,则取下该表项,更新该表项中所记录的所述元数据处理服务器模块的访问频度,并按照访问频度由小到大的顺序将该表项插入到所述元数据处理服务器读取缓存表中,操作结束。
19.根据权利要求18所述的一种双层元数据处理方法,其特征在于,所述元数据处理服务器获取函数用以实现以下功能:根据客户端所需要读取的元数据的元数据编号,或所述元数据的元数据名称和元数据路径的信息组合,查询存储在客户端的,与所述客户端需要读取的元数据相对应的该元数据的元数据处理服务器读取缓存表是否为空;
如果所述元数据处理服务器读取缓存表为空,则随机选择一个用于缓存所述元数据的元数据处理服务器模块,并将所述元数据处理服务器模块的元数据处理服务器编号和所述元数据处理服务器模块的初始的访问频度加入到所述元数据的元数据处理服务器读取缓存表中,而后将所述元数据处理服务器模块的元数据处理服务器编号返回给客户端;
如果所述元数据处理服务器读取缓存表不为空,则选取所述元数据处理服务器读取缓存表中的第一项,如果所述第一项中的元数据处理服务器模块的访问频度大于初始化时所设定的所述元数据处理服务器模块的最大访问频度,且所述元数据处理服务器读取缓存表的总项数小于初始化时设定的所述元数据处理服务器读取缓存表的最大项数,则随机选择未被该元数据的元数据处理服务器读取缓存表所记录的用于缓存所述元数据的元数据处理服务器模块中的一个,将该元数据处理服务器模块的元数据处理服务器编号和访问频度加入到所述元数据处理服务器读取缓存表中,并将该元数据处理服务器模块的元数据处理服务器编号返回给客户端;
否则,直接将所述元数据处理服务器读取缓存表中第一项所记录的元数据处理服务器模块的元数据处理服务器编号返回给客户端。
20.根据权利要求18所述的一种双层元数据处理方法,其特征在于,所述客户端向所述元数据处理服务器模块发送元数据读取请求中,包括所需读取的元数据的元数据编号,或所述元数据的元数据名称和元数据路径的信息组合。
21.根据权利要求18所述的一种双层元数据处理方法,其特征在于,在步骤212中,所述元数据处理服务器模块通过所述元数据处理服务器模块中的元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,以确定需要读取的元数据存储在哪个元数据对象存储服务器模块中。
22.根据权利要求21所述的一种双层元数据处理方法,其特征在于,所述元数据对象存储服务器确定函数用以实现以下功能:
当从所述客户端发送而来的元数据操作请求是INODE操作请求时,所述元数据对象存储服务器确定函数通过所述INODE操作请求中所包含的需要进行操作的元数据的元数据编号,获取与所述元数据编号相对应的元数据对象存储服务器编号信息,所述元数据对象存储服务器编号即为存储有需要进行操作的元数据的元数据对象存储服务器模块的编号;
当从所述客户端发送而来的元数据操作请求是LOOKUP操作请求时,所述元数据对象存储服务器确定函数通过所述LOOKUP操作请求中所包含的需要进行操作的元数据的元数据名称以及元数据路径,利用hash函数获得一hash值,并使用此hash值作为索引,从由所述双层元数据处理系统中的所有元数据对象存储服务器模块的元数据对象存储服务器编号所构成的数组中,搜索出存储有所需进行操作的元数据的元数据对象存储服务器模块的元数据对象存储服务器编号。
23.根据权利要求14所述的一种双层元数据处理方法,其特征在于,当所述客户端进行修改元数据的操作时,所述步骤200中包括以下步骤:
步骤221,所述客户端通过存储在所述客户端的第二元数据对象存储服务器确定函数模块中的元数据对象存储服务器确定函数,确定存储有需要进行修改的元数据的元数据对象存储服务器模块,并向所述元数据对象存储服务器模块发送元数据修改请求,进入步骤222;
步骤222,所述存储有需要进行修改的元数据的元数据对象存储服务器模块接收到所述元数据修改请求后,查询存储在所述元数据对象存储服务器模块的元数据处理服务器存储缓存表模块中的与所要修改的元数据相对应的元数据处理服务器存储缓存表,并向与所述元数据处理服务器存储缓存表中每一项所对应的元数据处理服务器模块发送修改后的元数据以及元数据替换请求,所述元数据处理服务器模块接收到所述修改后的元数据以及元数据替换请求后,使用所述修改后的元数据替换缓存在所述元数据处理服务器模块的缓存设备中的相应的元数据,并向所述元数据对象存储服务器模块返回更新成功的消息,所述元数据对象存储服务器模块接收到所有更新成功的消息后,向所述客户端发送元数据更新成功的消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101015210A CN101247417B (zh) | 2008-03-07 | 2008-03-07 | 双层元数据处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101015210A CN101247417B (zh) | 2008-03-07 | 2008-03-07 | 双层元数据处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101247417A CN101247417A (zh) | 2008-08-20 |
CN101247417B true CN101247417B (zh) | 2011-07-27 |
Family
ID=39947614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101015210A Active CN101247417B (zh) | 2008-03-07 | 2008-03-07 | 双层元数据处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101247417B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751415B (zh) * | 2008-12-09 | 2012-03-28 | 中国移动通信集团公司 | 元数据服务系统、元数据同步方法与写服务器更新方法 |
CN101706805B (zh) * | 2009-10-30 | 2011-11-09 | 中国科学院计算技术研究所 | 对象存储方法及其系统 |
CN102055795A (zh) * | 2010-11-04 | 2011-05-11 | 天津曙光计算机产业有限公司 | 一种分布式文件系统元数据管理方法 |
CN102111438B (zh) * | 2010-12-24 | 2014-08-06 | 华为技术有限公司 | 参数调整方法、装置和分布式计算平台系统 |
CN102929958A (zh) * | 2012-10-10 | 2013-02-13 | 无锡江南计算技术研究所 | 元数据的处理方法,代理、转发设备,服务器及计算系统 |
CN103838757B (zh) * | 2012-11-26 | 2017-06-09 | 腾讯科技(深圳)有限公司 | 对用户的长关系链数据的处理系统和方法 |
CN103294786A (zh) * | 2013-05-17 | 2013-09-11 | 华中科技大学 | 一种分布式文件系统的元数据组织管理方法和系统 |
CN103716253A (zh) * | 2013-12-27 | 2014-04-09 | 广州华多网络科技有限公司 | 一种请求数据的方法及装置 |
CN104571952B (zh) * | 2014-12-25 | 2017-08-01 | 华中科技大学 | 一种分开处理数据与元数据读写请求的方法 |
CN107958033A (zh) * | 2017-11-20 | 2018-04-24 | 郑州云海信息技术有限公司 | 元数据的查找方法、装置、分布式文件系统及存储介质 |
CN110046133B (zh) * | 2019-04-12 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种存储文件系统的元数据管理方法、装置及系统 |
CN112799835A (zh) * | 2021-01-27 | 2021-05-14 | 浪潮云信息技术股份公司 | 一种分布式数据库系统元数据的处理方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1728665A (zh) * | 2005-07-26 | 2006-02-01 | 华中科技大学 | 一种可扩展的基于对象的存储系统及其控制方法 |
CN101079902A (zh) * | 2007-06-29 | 2007-11-28 | 清华大学 | 海量数据分级存储方法 |
-
2008
- 2008-03-07 CN CN2008101015210A patent/CN101247417B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1728665A (zh) * | 2005-07-26 | 2006-02-01 | 华中科技大学 | 一种可扩展的基于对象的存储系统及其控制方法 |
CN101079902A (zh) * | 2007-06-29 | 2007-11-28 | 清华大学 | 海量数据分级存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101247417A (zh) | 2008-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101247417B (zh) | 双层元数据处理系统及方法 | |
JP6584575B2 (ja) | グラフ・データの分散キャッシュ | |
CN102971732B (zh) | 键/值存储器的集成分级查询处理的系统结构 | |
CN100595761C (zh) | 一种拆分名字空间的元数据管理方法 | |
CN102708165B (zh) | 分布式文件系统中的文件处理方法及装置 | |
US8255420B2 (en) | Distributed storage | |
US20150215405A1 (en) | Methods of managing and storing distributed files based on information-centric network | |
US10482062B1 (en) | Independent evictions from datastore accelerator fleet nodes | |
CN113377868B (zh) | 一种基于分布式kv数据库的离线存储系统 | |
CN102541990A (zh) | 利用虚拟分区的数据库重新分布方法和系统 | |
CN107003814A (zh) | 存储系统中的有效元数据 | |
CN102314506B (zh) | 基于动态索引的分布式缓冲区管理方法 | |
CN104679665A (zh) | 一种实现分布式文件系统块存储的方法及系统 | |
CN107302561A (zh) | 一种云存储系统中热点数据副本放置方法 | |
CN111159176A (zh) | 一种海量流数据的存储和读取的方法和系统 | |
CN103595799A (zh) | 一种实现分布式共享数据库的方法 | |
CN102664914A (zh) | 一种IS/DFS-Image分布式文件存储查询系统 | |
CN104184812A (zh) | 一种基于私有云的多点数据传输方法 | |
WO2013172405A1 (ja) | ストレージシステムおよびデータアクセス方法 | |
WO2024021470A1 (zh) | 一种跨区域的数据调度方法、装置、设备及存储介质 | |
US20050193021A1 (en) | Method and apparatus for unified storage of data for storage area network systems and network attached storage systems | |
JP6035934B2 (ja) | データストア管理装置、データ提供システム及びデータ提供方法 | |
JPH04313126A (ja) | 分散ファイルシステムのファイル入出力方式 | |
CN114385577A (zh) | 一种分布式文件系统 | |
CN110633256A (zh) | 一种分布式集群系统中Session会话的共享方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |