元数据管理方法和装置制造方法

文档序号:6494495研发日期:2012年阅读:263来源:国知局
技术简介:
本专利针对集群文件系统中元数据迁移导致的跨机器操作效率低、分布零散问题,提出通过设置子树标志实现整体迁移的解决方案。方法包括:获取迁移负载信息,查找具有子树标志且负载匹配的目录,确定其根目录下的所有子树作为迁移目标,整体迁移以减少跨MDS操作,提升元数据管理效率。
关键词:元数据迁移,子树标志
元数据管理方法和装置制造方法
【专利摘要】本发明提供一种元数据管理方法和装置,其中方法包括:获取将迁移的负载信息;查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;将所述目标子树整体迁移。本发明提高了文件系统的元数据管理效率。
【专利说明】元数据管理方法和装置
【技术领域】
[0001]本发明涉及存储技术,尤其涉及一种元数据管理方法和装置。
【背景技术】
[0002]集群文件系统是对集群中包括的多台机器的文件进行统一管理的系统,该文件系统对多台机器提供统一的存储空间称为名字空间,该名字空间用于存储集群中的各台机器中的文件的存放路径;例如,文件a的存放路径是C/aa/c/a(其中的C/aa/c可以称为目录);元数据包括所述的用于表示文件存放路径的信息。名字空间被分割为多份,每份分配给集群中的一台机器,用于存储对应机器中的元数据;假设在某台机器中的C目录下的空间存储了两个文件路径,分别为C/aa/c/a和C/bb/d,则可以将C/aa/c/a称为一个子树,C/bb/d也称为一个子树,aa/c/a也可以称为一个子树,即子树实际上也是元数据,只是根据元数据中的目录或文件之间的层次连接关系设定的形象称谓。
[0003]在集群的运行过程中,文件会被用户的应用所访问,文件的访问量可以用负载表示,某台机器的文件访问量越大该机器的负载较高。为了使得集群中的各机器的负载均衡,现有技术会在某台机器的负载较重时,将该机器的一部分负载迁移到另一台机器上(实际是文件的迁移);相应的,该机器的元数据也要随着负载的移动进行更新,将与迁移负载对应的子树也迁移到另一台机器,即负载迁移其对应的元数据也会迁移,元数据的分布发生了改变。
[0004]但是,在为了负载均衡而进行的负载迁移和子树迁移中,会使得元数据在集群中的分布较为零散,有可能出现的情况是,假设用户要将某个文件从一个目录迁移到另一个目录下时,而这两个目录分别位于不同的机器上,造成对元数据的分布管理就要进行跨机器操作,即将元数据从一个机器发送到另一台机器,从而导致文件系统在用户进行文件操作时相应进行的元数据分布管理的效率较低,影响集群对用户应用的访问性能。

【发明内容】

[0005]本发明提供一种元数据管理方法和装置,以提高文件系统的元数据管理效率。
[0006]第一方面,提供一种元数据管理方法,包括:
[0007]获取将迁移的负载信息;
[0008]查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;
[0009]将所述目标子树整体迁移。
[0010]结合第一方面,在第一种可能的实现方式中,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
[0011]结合第一方面,在第二种可能的实现方式中,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
[0012]结合第一方面,在第三种可能的实现方式中,在查找元数据中的目录的目录属性之前,还包括:在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;所述选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有及子树标志的目录为目标目录,包括:选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录。
[0013]结合第一方面的第一种可能的实现方式至第三种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录,包括:从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
[0014]结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述目录属性是接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
[0015]第二方面,提供一种元数据管理装置,包括:
[0016]负载确定单兀,用于获取将迁移的负载信息;
[0017]子树查找单元,用于查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;
[0018]子树迁移单元,用于将所述目标子树整体迁移。
[0019]结合第二方面,在第一种可能的实现方式中,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
[0020]结合第二方面,在第二种可能的实现方式中,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
[0021]结合第二方面,在第三种可能的实现方式中,还包括:属性设置单元,用于在所述子树查找单元查找元数据中的目录的目录属性之前,在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;所述子树查找单元,具体用于查找元数据中的目录的目录属性,选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中。
[0022]结合第二方面的第一种可能的实现方式至第三种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述子树查找单元,具体用于从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、`以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
[0023]结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,还包括--属性获取单元,用于接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
[0024]第三方面,提供一种用于元数据管理的计算节点,所述计算节点包括:处理器、通信接口、存储器和总线;其中,所述处理器、通信接口和存储器通过所述总线完成相互间的通信;
[0025]所述通信接口,用于所述元数据管理的计算节点接收程序;
[0026]所述处理器,用于执行程序;
[0027]所述存储器,用于存放程序;[0028]所述程序包括:负载确定单元、子树查找单元和子树迁移单元;
[0029]所述负载确定单元,用于获取将迁移的负载信息;
[0030]所述子树查找单元,用于查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;
[0031 ] 所述子树迁移单元,用于将所述目标子树整体迁移。
[0032]结合第三方面,在第一种可能的实现方式中,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
[0033]结合第三方面,在第二种可能的实现方式中,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
[0034]结合第三方面,在第三种可能的实现方式中,还包括:属性设置单元,用于在所述子树查找单元查找元数据中的目录的目录属性之前,在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;所述子树查找单元,具体用于查找元数据中的目录的目录属性,选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中。
[0035]结合第三方面的第一种可能的实现方式至第三种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述子树查找单元,具体用于从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
[0036]结合第三方面的第三种可能的实现方式,在第五种可能的实现方式中,还包括--属性获取单元,用于接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
[0037]第四方面,提供一种修复数据的计算机程序产品,包括存储了程序代码的计算机可读存储介质;
[0038]所述程序代码包括的指令,用于获取将迁移的负载信息;查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;将所述目标子树整体迁移。
[0039]本发明提供的元数据管理方法和装置的技术效果是:通过在目录属性中设置子树标志,并将以具有子树标志的目录为根目录的所有子树作为将迁移的目标子树整体迁移,相对于现有技术中的元数据分散的迁移方式,能够有效减少跨MDS的元数据操作,节省了跨MDS时不同MDS之间信息传输的时间,元数据分布管理的效率得到提高。
【专利附图】

【附图说明】
[0040]图1为本发明元数据管理方法实施例应用的文件系统的元数据分布图;
[0041]图2为本发明元数据管理方法一实施例的流程示意图;
[0042]图3为本发明元数据管理方法另一实施例的流程示意图;
[0043]图4为本发明元数据管理方法另一实施例的文件系统元数据分布图;
[0044]图5为本发明元数据管理方法实施例的MDS集群整体性能对比图表一;
[0045]图6为本发明元数据管理方法实施例的MDS集群整体性能对比图表二 ;
[0046]图7为本发明元数据管理方法实施例的改进前的MDS集群负载分布图表;
[0047]图8为本发明元数据管理方法实施例的改进后的MDS集群负载分布图表;
[0048]图9为本发明元数据管理装置一实施例的结构示意图;
[0049]图10为本发明元数据管理装置另一实施例的结构示意图;
[0050]图11为本发明元数据管理的计算节点实施例的结构示意图。
【具体实施方式】
[0051]为了使得本发明实施例的元数据管理方法更加容易理解,首先结合图1,对本发明实施例中涉及到的一些基本概念进行说明,图1为本发明元数据管理方法实施例应用的文件系统的元数据分布图。本实施例的元数据管理实际上是对文件系统中的元数据进行管理,具体是对元数据分布的管理;所述的元数据是关于目录或者文件等的管理信息,例如,目录或者文件的名称、属性、层次关系等。
[0052]参见图1,以元数据服务器(Metadata server,简称:MDS)集群为例,在该集群中,包括多个MDS,每个MDS负责管理一台机器的元数据;所述的元数据即为图1中所示的由相互连接的各个方框组成的树状信息,例如,kl、bucket_l等。图1中用虚线框出了三个存储空间的范围,分别属于MDS1、MDS2和MDS3,例如,虚线框PI中的是存储在MDSI中的元数据,虚线框p2中的是存储在MDS2中的元数据,虚线框p3中的是存储在MDS3中的元数据。未在虚线框范围内的元数据是其他MDS上的元数据。
[0053]该MDS集群的元数据是以图1所示的树状结构存储的,该树状结构的元数据涉及到如下一些概念,其中,需要说明的是,如下所提到的目录、文件、子树、节点等均是指的元数据,本发明实施例讨论的是元数据的分布结构,例如,所提到的图1中的文件1& avi,实际是文件1& avi的元数据;此外,本发明实施例中所提到的负载也是指的对于元数据访问的负载,不过该元数据负载的更新也是由对于文件或目录的实际访问所引起的。
[0054]目录:例如图1中所示的kobe、james、bucket_l等;
[0055]文件:例如图1中所示的k_e.av1、k_d.avi等,文件是位于目录下的,比如,k_e.avi是位于目录k3下,该目录k3的上一级目录是k2,目录k2的上一级目录是kl_l,依次类推,该树状结构顶部的目录“/”是总的根目录;
[0056]上述的文件和目录、及其之间的层次关系(即文件位于某个目录下)组成了文件的存储路径;例如,文件k_b.avi的存储路径是/kobe/bucket_l/kl/k_b.avi。又例如,图1中的目录bucket_2下还未放置文件。
[0057]子树:如果将图1中的树状结构顶部的目录“/”比喻成大树的根,则该大树的任何一个分支都可以称为一个子树;
[0058]例如,目录kobe及其下属的所有元数据(包括所有的目录和文件)的整体称为一个子树,目录kl及其下属的所有元数据的整体称为一个子树(即kl-k_b.avi),目录k2及其下属的所有元数据的整体称为一个子树(该子树包括了 k2、k3、k_e.av1、k_c.avi)。可以看到,子树即以某个目录为根,包括该目录以及连接到该目录下的所有分支,这个整体称为一个子树。
[0059]在后续所述的元数据的迁移中,均是以子树的迁移来描述,因为元数据的迁移是以子树为单位的。
[0060]节点:将图1中的每个方框都称为一个节点,该节点可以是目录也可以是文件;例如,k_e.av1、bucket_l、kobe 等都是一个节点;
[0061]节点的属性和负载:节点的属性例如包括创建时间、负载值等,每个目录或者文件都会有个创建时间,该创建时间就是节点的一个属性;负载值可以参见图1中的每个节点左上角标示的数字,例如,bucket_l左上角的31、kobe左上角的71等。节点的负载值表示了该节点的当前负载,是表征节点下的文件的访问量的参数,通常文件的访问量越大负载也就越高,所以节点的负载值实际上也是该节点所在的MDS所承受的负载,当然,整个MDS的负载是位于其上的所有节点的负载值的总和。
[0062]比如,bucket_l的负载值是31, kobe的负载值是71 ;某个目录的负载值是连接在该目录下的下一级节点(目录或者文件)的负载值的总和,比如,从图1可以看到,文件k_e.avi是在目录k3下,该文件1& avi的负载值是2 (负载值是根据文件访问量或访问频率等按照某种算法计算得到的一个表征值),目录k3的负载值与该文件k_e.avi的负载值相同;而目录k2的负载值是其下属的文件k_e.avi和文件k_c.avi的负载值的总和,k2的负载值=k3的负载值+k_c.avi的负载值。
[0063]子树的迁移:图1中包括很多子树,并且这多个子树是分别属于不同的MDS的;比如,子树bucket_l/kl/k_b.avi位于MDSl上,也即表示文件k_b.av1、目录kl和目录bucket_l的元数据是由MDSl管理和提供服务的,对该文件k_b.av1、目录kl和目录bucket_l的元数据的访问量较大将使得MDSl的负载较大;而子树k2_l/k_d.avi是存储在MDS2上的,也即表示文件k_d.avi和目录k2_l的元数据存储在MDS2,对该文件k_d.avi或者目录k2_l的访问量较大将使得MDS2的负载较大。MDS的负载指的是该MDS上的元数据的负载,而元数据的负载也是由该元数据对应的实际的目录或文件的访问而引起的。举例如下:假设对文件k_b.avi进行了实际访问,则相对应的存储在MDSl上的该文件k_b.avi的元数据的负载值将增加,并且,文件k_b.avi的元数据的负载值增加后,其上级目录的负载值也会随之增加,例如目录bucket_l/kl的元数据负载值增加;或者,假设对目录k2_l进行了访问,则相对应的存储在MDS2上的该目录k2_l的元数据的负载值将增加。[0064]为了在这多个MDS之间保持负载均衡,通常会在当前MDS的负载较大时,迁移一部分负载到另一个MDS,实际上是将某些文件和目录的元数据迁移到另一个MDS,这样就由另一个MDS对该迁移的文件和目录的访问服务,降低了当前MDS的负载。负载迁移时,文件和目录的元数据的存储位置发生变化,比如由MDS2转移到了 MDS3。需要说明的是,元数据的迁移是以子树为单元的,比如只能将子树k2_l/k_d.avi迁移。子树的迁移是将子树的存储位置发生改变,相当于将图1中的虚线框P3框住子树k2_l/k_d.avi,但是该子树在整个树状结构的连接关系是没有变化的,比如,该子树k2_l/k_d.avi仍然是连接在目录kl_l下。
[0065]在上述说明的基础上,下面详细描述本发明实施例的元数据管理方法:
[0066]实施例一
[0067]图2为本发明元数据管理方法一实施例的流程示意图,如图2所示,该方法可以包括:
[0068]201、获取将迁移的负载信息;
[0069]其中,所述的负载信息指的是负载值,比如图1中所示的在每个节点左上角标示的数字,例如,bucket_l左上角的31。
[0070]本实施例获取的是将迁移的负载信息,举例如下:集群中包括三个MDS,每个MDS都会根据其自身负责的文件和目录的访问量等访问信息,更新对应的元数据中的负载值,并且可以定期检测自身所承载的总的负载值与其他MDS负载值之间的差值,当该差值超出了一定的阈值则表明各MDS之间的负载分布不均衡,则负载较重的MDS将启动负载均衡处理,将自身的一部分负载迁移到其他的MDS上。实际上该负载的迁移是元数据中的某个子树的迁移,是将该子树对应的访问迁移到另一个MDS,由另一个MDS来服务所述的访问,相应的负载较重的MDS所承载的负载得到降低。
[0071]本实施例中,例如某个MDS获取到得将迁移的负载信息是7个负载值,即需要将7个负载值迁移到其他MDS。
[0072]202、查找元数据中的目录的目录属性,选择目录属性中包括与将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;子树标志预先设置在被子树标志标识出的根目录的目录属性中;
[0073]其中,在201中确定将要迁移的负载信息后,将查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录;该目标目录的目录属性中的负载信息表示以该目标目录为根目录的最大的子树对应的负载值。需要说明的是,所述的相匹配指的是,子树对应的负载值与所述的负载信息不一定相等,可以是相近,具体的数值相近范围可以由常用的负载均衡的模糊匹配算法确定,本发明实施例不再详述。
[0074]举例如下:可以参见图1,假设是MDS2要将自身的7个负载值迁移出去,在图2中可以看到,子树k2_l/k_d.avi的负载就是7个负载值(目录k21左上角标注的负载值是7,该负载值也是目录k2_l的其中一个属性,可以称为负载属性);此时,子树对应的负载值与所述的负载信息是相等。而如果MDS2要将自身的8个负载值迁移出去,并且假设其不存在具有完全相等的负载值的子树,也可以将上述的负载值为7的子树k2_l/k_d.avi迁移出去,8和7数值相近,可以认为子树对应的负载值与所述的负载信息相匹配。[0075]需要说明的是,本实施例中所选择的迁移的子树,不仅负载值与所述负载信息相匹配,并且该子树的根目录即目录k2_l的属性还包括子树标志属性。
[0076]前边已经结合图1说明过子树的概念,子树即以某个目录为根,包括该目录以及连接到该目录下的所有分支,这个整体称为一个子树;则该为根的目录这里称为根目录。比如,子树k2_l/k_d.avi的根目录是目录k2_l ;包括k2/k3/k_e.avi和k2/k_c.avi两个分支的子树,其根目录是目录k2。本实施例所选择的要迁移的子树,其根目录必须具有子树标
O
[0077]所述的子树标志是用于表示以所述目标目录为根目录的所有子树仅能以整体方式迁移,本实施例确定以所述目标目录为根目录的所有子树作为将迁移的目标子树。
[0078]可选的,本实施例的以所述目标目录为根目录的目标子树可以具有如下的特点:该目标子树包括的元数据是对应业务访问操作范围的最小单元的,例如,用户在执行某一业务时,使用了一个应用(即用户使用的某个应用程序),该应用对该子树对应的目录或者文件的访问,基本上都是该子树内部的访问,目标子树包括了应用访问操作对应的所有元数据(该所有元数据可以相当于业务访问操作范围的最小单元)。或者,用户在执行某一业务时,使用了两个应用A和B,A涉及到了一部分元数据的变更,B涉及到了另一部分元数据的变更,这两部分元数据具有交集,则可以将A涉及到的元数据和B涉及到的元数据作为一个整体(该整体可以相当于业务访问操作范围的最小单元),该整体完全被包括在所述目标子树中。或者,上述两个应用A和B涉及到的元数据之间没有交集,则可以将应用A涉及到的元数据单独作为一个整体(该整体可以相当于业务访问操作范围的最小单元),所述目标子树完全包括该整体。以上只是举例,具体实施中可以灵活变通不局限于此。
[0079]可以结合图1中 子树为例说明一种可选的所述的目标子树包括的元数据的意思:比如,图1中的包括k2/k3/k_e.avi和k2/k_c.avi两个分支的子树,将该子树的根目录k2设置子树标志属性,则该子树为一个整体;用户应用对该子树的访问例如包括:用户将文件k_e.avi从目录k3下移动到目录k2下,或者,将文件k_c.avi从目录k2移动到目录k3,或者,在目录k3下再创建一个文件等。可以看到,这些操作都是在所述子树内部的操作,不涉及到子树之外的其他子树,所述的子树已经包括了应用访问操作对应的元数据,例如,应用访问操作是将k_e.avi从目录k3下移动到目录k2下,其涉及到的元数据是k_e.av1、k3、k2,这些兀数据都在该子树内部;假设将目录k3设置为子树标志,对应的子树k3/k_e.avi实际上没有包括应用访问操作涉及到的元数据k2,即只包括了一部分元数据,这种情况就不符合本实施例所述的目标子树包括的元数据的情况。
[0080]可选的,本实施例的以所述目标目录为根目录的目标子树还可以具有如下的特点:该目标子树包括的元数据是对应经验迁移规律的;即,可以根据该各个MDS中的元数据变更的特点进行子树标志的设置,例如,如果发现某一部分元数据经常在一段时间内被同时访问到,并且在预设时间段内这部分元数据的访问频度达到了预设阈值,例如,该预设阈值是50次,在预设时间段内元数据的访问频度达到了 50次,则可以确定将包括这些元数据的子树整体作为目标子树。
[0081]所述的将设置了子树标志的目录对应的子树整体迁移的意思是,以包括k2/k3/k_e.avi和k2/k_c.avi两个分支的子树为例,对子树标志属性的作用进行说明:假设该子树的根目录k2没有设置子树标志属性,则该子树的分支其实也是可以分割的,比如,将其分支k3/k_e.avi单独迁移(该分支其实也是一个子树),即迁移出了 2个负载值;但是,如果将根目录k2设置子树标志属性,则表明所述的包括k2/k3/k_e.avi和k2/k_c.avi两个分支的子树,不能再被分割,而是只能整体迁移,不能再仅迁移其中的一部分。
[0082]在具体实施中,查找要迁移的子树时,本实施例是以查找元数据中的目录来执行的,如果某个目录的属性包括子树标志、且所述目录的负载属性与所述负载信息相匹配,则表明,以该目录为根目录的子树的负载值就是要迁移的负载值,并且该子树只能以整体方式迁移,这就是要迁移的子树,本实施例将查找到得该子树的根目录称为目标目录。
[0083]203、将所述目标子树整体迁移。
[0084]本实施例的元数据管理方法,是这样实现提高文件系统的元数据管理效率的:通过在目录属性中设置子树标志,并将以具有子树标志的目录为根目录的所有子树作为将迁移的目标子树整体迁移,相对于现有技术中的元数据分散的迁移方式,由于目标子树包括的这部分元数据始终以整体方式迁移,必然能够有效减少跨MDS的元数据操作,例如当某些涉及到变更的元数据实际都是该目标子树内部的元数据时,就仅在该目标子树内部变动即可,不会涉及到跨MDS的操作,从而节省了跨MDS时不同MDS之间信息传输的时间,元数据分布管理的效率得到提高。
[0085]即,一方面,元数据的分布是由MDS自身管理的,MDS负责在负载较重时进行负载迁移;元数据在各个MDS之间分布时,会将具有子树标记属性的根目录所在的子树整体放置在同一个MDS中,而不会将这种类型的子树中的各部分分别放置在不同MDS的,因此,在元数据分布时,就可以根据该子树标记属性,将以具有子树标记属性的目录为根目录的子树整体位于同一个MDS。另一方面,在负载均衡的处理中,即使要迁移包括目标目录的子树,也是将该子树整体迁移,而不会仅分割该子树的一部分迁移,这样就可以保证该子树的整体总是处于同一个MDS,而不会分别位于不同的MDS。
[0086]再以目标子树包括的元数据是某个应用涉及到的所有元数据为例说明该效果的体现:假设某用户应用的访问操作是,将文件1& avi从目录k3移动到目录k2_l下,相应的,由于该文件的存储路径变化,对应的元数据(可以理解为元数据就是表示文件的存储路径的)也要相应变化,具体到图1就是,将图1中的树状结构中的k_e.avi连接在目录k3更改为连接至目录k2_l ;如果子树k2_l/k_d.avi是位于MDS3上,而子树k3/k_e.avi位于MDS2上,则元数据分布变更时,MDS2就要将文件k_e.avi的元数据通过跨MDS操作发送到MDS3,由MDS3来存储更新后的元数据即子树k2_l/k_e.avi,后续文件k_e.avi的访问时就由MDS3提供文件存储路径的服务,该文件的访问实际就成为了 MDS3的负载。如果子树k2_l/k_d.avi和子树k3/k_e.avi都位于MDS2,则上述的元数据分布变更就在MDS内部操作即可,省去了跨MDS时不同MDS之间信息传输的时间,元数据分布更新的效率得到提高。
[0087]下面的实施例二和实施例三,将通过两个可选的具体的例子,来详细描述本发明实施例的元数据分布管理方法的实施。
[0088]实施例二
[0089]图3为本发明元数据管理方法另一实施例的流程示意图,本实施例主要描述如何从某个MDS中迁移出一定的负载值;图4为本发明元数据管理方法另一实施例的文件系统元数据分布图,该图4示出的是集群中的其中一个MDS上的元数据分布结构。结合图3和图4所示,该方法包括:[0090]301、为目录设置子树标志属性;
[0091]其中,集群中是包括多个MDS的,统一管理该集群的元数据的集群文件系统在将集群元数据在多个MDS进行分布之前,可以首先设置该元数据的属性,所述的设置元数据属性的工作是由该集群的元数据控制模块执行;该元数据控制模块负责为元数据设置属性并将元数据分布至集群中的多个MDS。在完成初始的元数据分布后,后续的集群运行过程中的元数据分布处理例如负载均衡等,就由各MDS自己执行,各MDS分别管理自己存储的元数据,并根据负载管理所述元数据的分布。
[0092]本实施例中,所述的元数据控制模块为元数据中的目录设置了子树标志属性;所述的子树标志属性的设置原则是这样的:将应用访问所涉及到的元数据作为一个整体,将该整体对应的子树的根目录设置子树标志属性,以保证应用的访问对应的是以所述目标目录为根目录的子树内部的元数据变更。
[0093]举例如下:用户在启用某个应用程序时,该应用程序对应的访问操作包括将文件k_e.avi从目录k3下移动到目录k2_l下,或者将文件k_c.avi从目录k2移动到目录k3,或者在目录k3下新创建一个文件等。根据该应用程序的访问特点可以得到,如果将包括kl_l、k2_l、k2、k3、k_e.av1、k_c.avi和k_d.avi的元数据作为一个整体,那么就可以使得上述应用的访问对应的是该整体内部的元数据变更;该整体为一个子树,将该整体的根目录kl_l设置子树标志属性,所述的子树标志用于表示该根目录kl_l对应的子树仅能以整体方式迁移。
[0094]由上述也可以得知,实际上子树标志属性是根据应用的访问特点设置的,基于此,本实施例设置了如下两种属性设置方式:
[0095]—种方式是,提供给用户应用程序编程接口(Application ProgrammingInterface,简称:API),由用户根据用户的应用的访问特点,直接对目录的属性进行设置;即如果应用具有上述的访问特点,则用户就可以据此将目录的属性设置为子树标志。
[0096]另一种方式是,由上述的元数据控制模块自动执行目录属性的设置;例如,可以由用户为该元数据控制模块设置一属性设置策略,该策略例如即为上述的“将对应应用访问的元数据变更为子树内部变更的子树设置为一个整体”等;在设置好策略后,元数据控制模块就可以在集群的运行过程中发生的应用访问操作,检测该应用访问操作的访问特点,如果符合上述策略,则元数据控制模块可以根据该策略,将该整体子树的根目录的属性设置为子树标志。
[0097]具体实施中,参见图4,为了方便后续查找哪些目录具有子树标志属性,可以设置一个子树队列,可以是各MDS在其内部各自建立对应自身存储元数据的子树队列,该子树队列中包括了所有已经设置子树标志属性的目录;或者,MDS设置一包括了其所有元数据的子树队列,并在子树队列插入一个指针,该指针指向设置了子树标志属性的目录。例如,本实施例中,目录kl_l、jl和j2设置了子树标志属性。
[0098]元数据控制模块还为元数据设置其他属性,例如,目录或者文件的创建时间、负载值等;在按照上述规则为集群元数据设置属性后,元数据控制模块将元数据分布在各MDS,其中,设置了上述子树标志属性的根目录对应的子树将整体被分配在同一个MDS中。
[0099]需要说明的是,本实施例仅以在初始时设置子树标记属性为例进行说明;但是具体实施中并不局限于此,该元数据属性的设置例如包括该子树标记属性的设置,其设置时间没有限制,也可以在MDS系统运行中随时根据应用的特点设置该子树标记属性。当在系统运行中设置了该子树标记属性时,如果以该子树标记属性的目录为根目录的子树整体是分布在不同的MDS上,则系统会根据该子树标记属性,将该子树整体迁移到同一个MDS上。在系统运行中设置子树标记属性的方式与前述的方式相同,例如API方式或者自动设置。
[0100]302、获取将迁移的负载信息;
[0101]其中,在集群的运行过程中,由各MDS自己管理存储的元数据的分布,并执行各MDS之间的负载均衡处理。
[0102]以图4中所示的MDSl为例,该MDSl会根据应用的访问更新自己存储的元数据的负载值属性,比如,用户启用的某个应用当前多次访问了文件1^_13.avi, MDSl会为该文件访问提供路径服务,即根据所存储的文件路径指引应用访问到文件k_b.avi,并且相应的,MDSl会根据上述文件访问,将该访问所涉及到的元数据的负载值进行更新,具体是例如更新文件k_b.avi的负载值,由10增加到12,相应的,该文件k_b.avi的上级目录,比如目录kl、bucket_l、kobe和/都会进行负载值更新,增加两个负载值。
[0103]在更新负载值之外,MDSl还会定期检测各MDS之间的负载差值;在包括多个MDS的集群中,各MDS之间是相互通信的,可以交互其各自的负载信息等,所以,MDSl是能够获取到其他MDS的负载信息的,并将自身的负载信息与其他MDS的负载信息进行比较,判断是否达到了执行负载均衡的触发条件。例如,可以设定如果MDSl的负载与其他某个MDS之间的负载差值达到20个负载值时,就触发进行负载均衡,以平衡各MDS之间的负载分布。本实施例中,假设MDSl经过检测,确定自身负载过重,需要将8个负载值迁移到其他MDS,即获取到的将迁移的负载信息是8个负载值。
[0104]303、查找是否存在目标目录,属性包括子树标志且负载属性与负载信息相匹配;
`[0105]具体的,本步骤是查找元数据中是否存在目标目录,所述目标目录属性包括子树标志、且所述目标目录的负载属性与所述负载信息相匹配。
[0106]其中,仍以图4中的MDSl为例,MDSl在确定将迁移的负载信息后,将优先查找其存储的元数据中的设置了子树标志属性的目录,并判断以该目录的负载属性(即负载值)是否与所述的将迁移的负载信息相匹配。本实施例中,将优先查找具有与负载信息相等的负载值的子树。
[0107]举例如下:MDS1将优先在目录kl_l、jl和j2中查找,因为这三个目录都设置了子树标志属性;判断这三个目录中是否有负载属性与所述的将迁移的负载信息相匹配的目录。经过判断,这三个目录的负载值都不是8,因此,没有合适的目录。
[0108]在本步骤中,如果经过查找,存在所述的目标目录,即属性是子树标志其负载属性与所述负载信息相同,则继续执行305,将以该目标目录为根目录的子树整体迁移;否则,如果经过查找,发现不存在所述的目标目录,则继续执行304。
[0109]304、从本MDS的动态子树根开始遍历寻找合适的目录,进入递归;
[0110]其中,所述的本MDS的动态子树根,即指的是MDSl中的目录kobe、目录james,从图4中也可以看到,这两个目录是MDSl中的所有元数据的起始根目录,其他的目录或文件都是从这两个目录分割延伸的,所以可以称为子树根;并且,由于本实施例的子树都是可以分割的,比如,将某个目录分割为两个子目录等,所以称为动态子树根。
[0111]所述的遍历寻找合适的目录,进入递归,指的是,沿着图4中所示的目录层次,逐级寻找是否有与负载信息相匹配的负载值的目录;当在寻找过程中遇到带有子树标志属性的目录时,则停止并返回上一级目录。
[0112]举例如下:当将迁移的负载信息是8个负载值时,MDSl从目录kobe开始逐级向下寻找,并判断目录的负载值是否是8,例如,按照如下顺序,kobe—bucket_l—kl—k_b.avi,kobe—bucket_l—kl_ l,等,其中,实际上在所述的 kobe—bucket_l—kl—k_b.avi 路径中,就已经发现目录kl的负载值是8,则继续执行305。
[0113]假设MDSl先搜索k0be--buCket_l—kl_l路径,则查找到目录kl_l时,发现该目录kl_l具有子树标志属性,则不会再继续查找该目录kl_l下的子目录或者文件(比如目录k2、文件k_e.avi等),因为具有子树标志属性的根目录的子树是一个整体,没有必要再继续在该整体子树的内部查找了。则MDSl将在目录kl_l处停止,返回上一级目录即bucket_l,再从该 bucket_l 沿着 bucket_l—kl—k_b.avi 的路径查找。
[0114]305、选中与将迁移的负载信息相匹配的子树,进行迁移。
[0115]其中,如上所述的,目录kl的负载值是8,则确定子树kl_k_b.avi为迁移的子树。
[0116]从上述的流程可以看到,在要从某个MDS中迁移出一定的负载值时,将优先查找设置了子树标志属性的目录;并且,在具有子树标志属性的根目录的子树中的子树是不会被选择的,即具有子树标志属性的根目录的子树是一个整体,将整体迁移,其实相当于“静态子树”,因为该子树是不会再被分割的。这种方式避免元数据分割的过于零碎,有利于将对应应用访问操作对应的元数据包括在同一个子树中,使得应用访问的元数据变更在一个MDS内进行,不会出现跨MDS的情况,有效降低了子树的迁移频率。
[0117]实施例三
[0118]本实施例也是描述如何从某个MDS中迁移出一定的负载值,但是与实施例二的主要区别是,本实施例还设置了并发组的概念,以在提高元数据分布管理的效率的基础上,进一步提闻负载均衡的效果。
[0119]首先说明并发组的概念:在设置子树标志属性的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并且所述并发组中的每个子树的根目录都设置并发组属性。一方面,并发组中包括多个子树,并且每个子树的根目录都是设置了子树标志属性的目录。另一方面,并发组中的这多个子树的特点就是,具有相同的负载变化趋势。
[0120]所述的相同的负载变化趋势指的是,例如,假设并发组中有两个子树,这两个子树的负载值总是在某段时间内均大幅上升,或者在某段时间内均大幅下降,比如在某个一小时间隔内,这两个子树的负载值都上升了 10,或者也可以是一个子树上升了 9个负载值,另一个子树上升了 10个负载值,即仅强调该两个子树的负载值均发生上升,对其上升的具体数值可以有些偏差,而其他的子树都基本未发生变化;或者,在某段时间内这两个子树的负载值都下降了 8个负载值。
[0121]相同的负载变化趋势通常就表明,这两个子树对应的文件通常都会同时访问,所以才会同时出现负载的变化;以图4为例,对于以目录kl_l为根目录的子树、以及以目录jl为根目录的子树,这两个子树就属于一个并发组,当用户在启用应用时,既要访问文件k-e.avi,通常也会访问文件james.avi,因为这两个文件是有联系的,所以导致上述的两个子树的负载值总是出现同步的上升或者下降,这也就是“并发”的意思,用户应用在同一段时间同时访问相同组内的多个子树。[0122]如果在同一个MDS内具有并发组,表明该MDS的负载的变化会很大,比如假设该MDS中存在一个包括5个子树的并发组,则可能会出现某个时间段内这5个子树的负载值均增加,使得该MDS会很快出现大幅的负载值增加,MDS的负担会很大;所以,本实施例设置并发组属性来区分这类子树,并且设置的规则是,如果要迁移子树,尽量优先选择并发组中的子树进行迁移,避免并发组中的子树在同一个MDS内加重MDS的负担。
[0123]以图4中要迁移15个负载值的子树为例,该将迁移的子树的查找过程与实施例二相同,不再详细,仅说明在查找过程中与并发组有关的一些步骤:比如,在优先查找设置了子树标志的目录的过程中,发现目录kl_l、目录j I和目录j2都设置了子树标志属性,并且,目录kl_l和目录j2的负载值都是15,此时就要判断是选择目录kl_l对应的子树还是目录J2对应的子树。
[0124]具体的,判断目录kl_l和目录j2是否具有并发组属性,如果具有并发组属性,则表明以该目录为根目录的子树是并发组中的一个子树,优先选择该子树。例如,目录kl_l是具有并发组属性的,目录kl_l对应的子树与目录jl对应的子树是属于同一个并发组的;则优先选择以目录kl_l为根目录的子树进行迁移,该目录kl_l也称为要查找的目标目录。
[0125]通过为目录设置并发组属性,优先迁移并发组中的子树,可以分割MDS的负担;t匕如上述的图4中的目录kl_l对应的子树与目录jl对应的子树,如果将目录kl_l对应的子树迁出,即使这两个子树的负载变化趋势相同,比如某段时间内负载值均增加,也是在两个MDS中分别增加,而不会只在MDSl中增加,从而使得负载在各MDS之前的分配更加均衡。本实施例的并发组属性的设置方式与子树标志属性的设置方式相同,不再赘述。
[0126]进一步的,MDS中有可能存在多个并发组,假设有两个并发组中都存在适合的子树,即负载属性与将迁移的负载信息相同,此时如何在两个并发组中选择子树,本实施例设定的规则是,确定所选择的子树所在的并发组,是多个并发组中的包括子树数量最多的并发组;比如,其中一个并发组中包括5个子树,另一个并发组中包括2个子树,则优先选择包括5个子树的并发组中的子树,因为包括的子树越多,在负载均上升时导致的MDS负担越大。
[0127]本发明实施例通过为目录设置子树标志属性和并发组属性,使得元数据分布的管理效率更高,负载均衡的效果也更好,提高了 MDS集群的整体性能。
[0128]例如,通过设置子树标志属性,将以子树标志属性的根目录对应的子树整体设置在同一个MDS内,可以减少跨MDS的操作,元数据的变更在MDS内部执行,这样就节省了跨MDS操作时信息传输的时间,MDS就能够处理更多的元数据分布管理任务。
[0129]参见图5和图6,图5为本发明元数据管理方法实施例的MDS集群整体性能对比图表一,图6为本发明元数据管理方法实施例的MDS集群整体性能对比图表二,这两个表的纵坐标都表示负载值,从图中可以看到,采用本发明实施例的方案后(即改进后),比实施之前(即改进前)各项指标的负载值都得到了提高。比如图中所示的文件创建(filecreation)负载、文件删除(file removal)负载、目录创建(directory creation)负载、目录删除(directory removal)负载、子树创建(tree creation)负载和子树删除(treeremoval)负载,以及文件启动(file start)负载、目录启动(directory start)负载,这些所述的负载是MDS集群接收和处理相关的应用访问操作而对应的负载,比如处理文件创建操作引起的负载。改进后比改进前的上述负载增加,表明改进后MDS集群处理的应用访问操作任务比之前增多了,例如某段时间内改进前仅能处理2个文件创建操作,改进后能够处理5个文件创建操作了,明显提升了该MDS的性能。
[0130]又例如,通过设置并发组属性,优先选择属于同一个并发组内的子树进行迁移,以使得并发组中的多个子树能够分布在多个MDS中,避免集中在同一个MDS而带来的MDS负担过大。经过这样的负载均衡处理后,减轻了 MDS的负担,MDS的元数据处理效率就会提高,就能处理更高的应用访问操作;例如,图4中的MDSl在改进前由于其中存在并发组,导致该MDSl的负载较重,MDSl的处理效率就会变慢,而改进后由于进行了负载均衡,该MDSl的负担得到减轻,提高元数据处理效率,处理的任务量也就更多。
[0131]参见图7和图8,图7为本发明元数据管理方法实施例的改进前的MDS集群负载分布图表,图8为本发明元数据管理方法实施例的改进后的MDS集群负载分布图表,这两个表的纵坐标都表示负载值。从图中可以看到,改进前的MDSO和MDSl的负载分布很不平衡,柱状图形参差不齐,纵坐标显示的处理负载值也较低,表明处理任务量较少;而改进后,MDSO和MDSl的负载分布已经得到均衡,负载均衡效果明显比改进前得到提高,并且,纵坐标显示的处理负载值相对改进前也有了大幅提高,提升了 MDS的性能。
[0132]需要说明的是,本发明实施例是以集群文件系统的MDS为对象,说明元数据分布管理的方法,但具体实施中,并不局限于MDS场景,本发明实施例的方法可用于其他需要管理文件系统元数据服务分布的系统。
[0133]实施例四
[0134]图9为本发明元数据管理装置一实施例的结构示意图,该装置可以执行本发明任意实施例的方法,如图9所示,该装置可以包括:负载确定单元91、子树查找单元92和子树迁移单元93 ;其中,
[0135]负载确定单元91,用于获取将迁移的负载信息;
[0136]子树查找单元92,用于查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;
[0137]子树迁移单元93,用于将所述目标子树整体迁移。
[0138]进一步的,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
[0139]进一步的,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
[0140]图10为本发明元数据管理装置另一实施例的结构示意图,本实施例在图9所示结构的基础上,元数据管理装置还包括:属性设置单元94,用于在所述子树查找单元查找元数据中的目录的目录属性之前,在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;
[0141]所述子树查找单元92,具体用于查找元数据中的目录的目录属性,选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中。
[0142]进一步的,子树查找单元92,具体用于从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
[0143]进一步的,本实施例的元数据管理装置,还包括:属性获取单元95,用于接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
[0144]实施例五
[0145]图11为本发明元数据管理的计算节点实施例的结构示意图,如图11,本实施例提供了一种计算节点700的示意图。该计算节点700可能是包含计算能力的主机服务器,或者是个人计算机(personal computer,简称:PC),或者是可携带的便携式计算机或终端等等,本发明具体实施例并不对计算节点的具体实现做限定。
[0146]该计算节点700 包括:处理器(processor) 710,通信接口(CommunicationsInterface) 720,存储器(memory) 730,总线740。处理器710、通信接口 720、存储器730通过总线740完成相互间的通信。
[0147]通信接口 720,用于与网元通信接收程序。
[0148]处理器710,用于执行程序732。具体地,程序732可以包括程序代码,所述程序代码包括计算机操作指令。
[0149]处理器710可能是一个中央处理器(Central Processing Unit,简称:CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0150]存储器730,用于存放程序732。存储器730可能包含高速随机存储器(randomaccess memory,简称:RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序732具体可以包括:
[0151]负载确定单元91,用于获取将迁移的负载信息;
[0152]子树查找单元92,用于查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;
[0153]子树迁移单元93,用于将所述目标子树整体迁移。
[0154]程序732中各单元的具体实现参见图9-图10所示实施例中的相应单元,在此不赘述。
[0155]进一步的,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
[0156]进一步的,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
[0157]进一步的,所述程序还包括:
[0158]属性设置单元,用于在所述子树查找单元查找元数据中的目录的目录属性之前,在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;
[0159]所述子树查找单元,具体用于查找元数据中的目录的目录属性,选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中。
[0160]进一步的,所述子树查找单元,具体用于从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
[0161]进一步的,所述程序还包括:
[0162]属性获取单元,用于接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
[0163]本发明实施例还提供了一种修复数据的计算机程序产品,包括存储了程序代码的计算机可读存储介质;
[0164]所述程序代码包括的指令,用于获取将迁移的负载信息;查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;将所述目标子树整体迁移。
[0165]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0166]在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0167]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0168]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0169]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称:R0M)、随机存取存储器(Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0170] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种元数据管理方法,其特征在于,包括:获取将迁移的负载信息;查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;将所述目标子树整体迁移。
2.根据权利要求1所述的元数据管理方法,其特征在于,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
3.根据权利要求1所述的元数据管理方法,其特征在于,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
4.根据权利要求1所述的元数据管理方法,其特征在于,在查找元数据中的目录的目录属性之前,还包括:在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;所述选择目录 属性中包括与所述将迁移的负载信息相匹配的负载信息且具有及子树标志的目录为目标目录,包括:选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录。
5.根据权利要求2-4任一所述的元数据管理方法,其特征在于,所述选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录,包括:从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
6.根据权利要求4所述的元数据管理方法,其特征在于,所述目录属性是接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
7.—种元数据管理装置,其特征在于,包括:负载确定单元,用于获取将迁移的负载信息;子树查找单元,用于查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;子树迁移单元,用于将所述目标子树整体迁移。
8.根据权利要求7所述的元数据管理装置,其特征在于,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
9.根据权利要求7所述的元数据管理装置,其特征在于,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
10.根据权利要求7所述的元数据管理装置,其特征在于,还包括:属性设置单元,用于在所述子树查找单元查找元数据中的目录的目录属性之前,在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;所述子树查找单元,具体用于查找元数据中的目录的目录属性,选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中。
11.根据权利要求8-10任一所述的元数据管理装置,其特征在于,所述子树查找单元,具体用于从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
12.根据权利要求10所述的元数据管理装置,其特征在于,还包括:属性获取单元,用于接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
13.—种元数据管理的计算节点,其特征在于,所述计算节点包括:处理器、通信接口、存储器和总线;其中,所述处理器、通信接口和存储器通过所述总线完成相互间的通信;所述通信接口,用于所述元数据管理的计算节点接收程序;所述处理器,用于执行程序;所述存储器,用于存放程序;所述程序包括:负载确定单元、子树查找单元和子树迁移单元;所述负载确定单元,用于获取将迁移的负载信息;所述子树查找单元,用于查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;所述子树迁移单元,用于将所述目标子树整体迁移。
14.根据权利要求13所述的元数据管理的计算节点,其特征在于,所述子树标志标识的根目录的子树中包括业务访问操作范围的最小单元对应的元数据。
15.根据权利要求13所述的元数据管理的计算节点,其特征在于,所述子树标志标识的根目录的子树中包括在预设时间段内访问频度达到预设阈值的元数据。
16.根据权利要求13所述的元数据管理的计算节点,其特征在于,所述程序还包括:属性设置单元,用于在所述子树查找单元查找元数据中的目录的目录属性之前,在根目录的目录属性具有子树标志的至少两个子树中,选择具有相同负载变化趋势的多个子树作为一个并发组,并将所述并发组中的每个子树的根目录的目录属性中设置并发组标志;所述子树查找单元,具体用于查找元数据中的目录的目录属性,选择目录属性中不仅包括所述负载信息且具有子树标志,还包括所述并发组标志的目录作为所述目标目录确定以所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中。
17.根据权利要求14-16任一所述的元数据管理的计算节点,其特征在于,所述子树查找单元,具体用于从包括子树数量最多的并发组中,选择目录属性中不仅包括所述负载信息、以及子树标志,还包括所述并发组标志的目录作为所述目标目录。
18.根据权利要求16所述的元数据管理的计算节点,其特征在于,所述程序还包括:属性获取单元,用于接收用户通过应用程序编程接口 API设置的属性,所述属性包括所述子树标志和并发组标志。
19.一种修复数据的计算机程序产品,其特征在于,包括存储了程序代码的计算机可读存储介质;所述程序代码包括的指令,用于获取将迁移的负载信息;查找元数据中的目录的目录属性,选择目录属性中包括与所述将迁移的负载信息相匹配的负载信息且具有子树标志的目录为目标目录,确定以 所述目标目录为根目录的所有子树作为将迁移的目标子树;所述子树标志预先设置在被所述子树标志标识出的根目录的目录属性中;将所述目标子树整体迁移。
【文档编号】G06F17/30GK103688257SQ201280002998
【公开日】2014年3月26日 申请日期:2012年11月27日 优先权日:2012年11月27日
【发明者】过晓春 申请人:华为技术有限公司
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!