一种读取目录子项元数据的方法及装置的制造方法_2

文档序号:9911258阅读:来源:国知局
中读取目录子项元数据方法的流程示意图;
[0020]图4为本发明实施例中读取目录子项元数据装置的结构示意框图;
[0021 ]图5为本发明实施例中读取目录子项元数据设备的结构示意框图。
【具体实施方式】
[0022]下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
[0023]在文件系统中,一个目录包含有大量文件或子目录,统称为目录的子项,每个目录子项均对应有元数据,称为目录子项元数据。元数据对象为存放元数据的对象,一个目录的多个目录子项元数据被分散存放在多个元数据对象之中。目录自身的元数据之中保存有目录的子项的信息,其中就包括存放目录子项的元数据(即,目录子项元数据)的元数据对象的属性信息,例如,每个元数据对象存放的目录子项元数据的数目,又如,管理该元数据对象的元数据管理模块的信息,等等。
[0024]图2为本发明实施例中文件系统的示意图,其中,每个服务器均可以包括客户端代理(Client Agent;简称:CA)模块、元数据管理模块以及存储模块,上述CA模块以及元数据管理模块可以通过软件实体实现,也可以为相应的硬件模块(如集成芯片),上述存储模块可以为服务器的全部或部分硬盘。所有服务器中的CA模块一起形成CA集群,所有服务器中的元数据管理模块形成元数据管理集群,所有服务器中的硬盘形成存储集群。
[0025]其中,服务器中的CA模块用于处理客户端发送的读取目录子项元数据的请求,实际情况中,由客户端中的协议客户端模块与服务器中的CA模块进行通信;存储节点用于存储元数据对象,而元数据对象中存放有目录的目录子项元数据;元数据管理节点用于管理元数据对象,CA可以通过元数据管理节点读取元数据对象中的目录子项元数据。
[0026]图3为本发明实施例提供的读取目录子项元数据方法的流程示意图,该方法包括如下步骤:
[0027]步骤101:目标服务器接收客户端发送的第一请求,第一请求用于请求读取第一目录的目录子项元数据,第一请求包括第一目录的标识以及定位标识,定位标识指向至少两个元数据对象中的第k个元数据对象,k为正整数;
[0028]步骤102:目标服务器根据第一目录的标识获得第一目录的元数据,第一目录的元数据包含至少两个元数据对象的属性信息;
[0029]步骤103:目标服务器根据单次交付量阈值,以及属性信息中的第k个元数据对象及第k个元数据对象之后的元数据对象各自包含的目录子项元数据的数量,确定本次需读取第k至第(k+m)个元数据对象中的目录子项元数据,其中,单次交付量阈值为目标服务器单次可向客户端发送的目录子项元数据的最大量,m为正整数;
[0030]步骤104:目标服务器根据属性信息中的用于确定第k至第(k+m)个元数据对象各自存储位置的信息,并行从上述存储位置获得第k至第(k+m)个元数据对象包含的目录子项元数据;
[0031]步骤105:目标服务器根据接收的目录子项元数据形成本次交付元数据,并向客户端发送本次交付数据,其中,本次交付元数据的大小不大于单次交付量阈值。
[0032]具体的,步骤101中,可由目标服务器中的CA模块接收客户端的协议客户端发送的第一请求。第一请求中的定位标识用于表明从哪个元数据对象开始读取目录子项元数据。
[0033]步骤102中,在接收到第一请求后,目标服务器首先根据第一请求中包含的第一目录的标识确定第一目录的元数据。实际情况中,目标服务器的CA模块可能缓存有目录元数据,目标服务器可以先在该缓存中搜索第一目录的元数据,若未命中,即可根据第一目录的标识定位出所述第一目录的父目录的元数据,其父目录的元数据中包括第一目录的元数据的路径信息,目标服务器可以根据该路径信息确定出第一目录的元数据。
[0034]第一目录的元数据中包含有第一目录的子项的信息,其中包括存放第一目录的子项的元数据(即,第一目录的目录子项元数据)的元数据对象的属性信息,属性信息包括该元数据对象中存放了第一目录的哪些目录子项元数据,以及该元数据对象归属的元数据管理模块的信息。
[0035]然后,目标服务器根据该属性信息获知第k个元数据对象以及第k个元数据之后的每个元数据包含的元数据个数。
[0036]然后,步骤103中,目标服务器根据上述元数据对象包含的目录子项元数据的数量信息,以及单次交付量阈值,确定本次需读取哪些元数据对象。其具体实现方式包括:
[0037]其一,目标服务器从第k个元数据对象开始,进行目录子项元数据的累加,直至目录子项元数据的总量达到所述单次交付量阈值。
[0038]例如,一种可行的算法为:在计算出第k个元数据对象至第(k+m-Ι)个元数据对象包括的目录子项元数据总量不大于单次交付量阈值,以及计算出第k个元数据对象至第(k+m)个元数据对象包括的目录子项元数据总量大于单次交付量阈值时,可以确定本次需读取第k个元数据对象至第(k+m)个元数据对象中包含的目录子项元数据。
[0039]又例如,另一种可行的算法为:在计算出第k个元数据对象至第(k+m)个元数据对象包括的目录子项元数据总量不大于单次交付量阈值,以及计算出第k个元数据对象至第(k+m+1)个元数据对象包括的目录子项元数据总量大于单次交付量阈值时,可以确定本次需读取第k个元数据对象至第(k+m)个元数据对象中包含的目录子项元数据。
[0040]其中,上述第一种算法能够保证每次读取的目录子项元数据填满协议缓存区,增加每次向客户端返回的目录子项元数据的个数;而上述第二种算法能够避免读取本次无法交付的目录子项元数据,节约传输资源。
[0041]其二,定位标识指向第k个元数据对象中的第i个目录子项元数据,用于表明第i个目录子项元数据为首个需读取的目录子项元数据。
[0042]目标服务器从第k个元数据对象中第i个目录子项元数据开始,进行目录子项元数据的累加,计算出第k个元数据对象中第i个目录子项元数据至第(k+m)个元数据对象中第j个目录子项元数据的总量不大于单次交付量阈值,并且第k个元数据对象中第i个目录子项元数据至第(k+m)个元数据对象中第(j+Ι)个目录子项元数据的总量大于单次交付量阈值,则确定第k个元数据对象中第i个目录子项元数据至第(k+m-Ι)个元数据对象中第j个目录子项元数据为本次需读取目录子项元数据。
[0043]上述第二种实现方式能够精确地确定本次需读取的目录子项元数据,便于更高效以及更有针对性地进行目录子项元数据的读取。
[0044]实际情况中,在对元数据对象包含的目录子项元数据的大小进行上述累加时,SP需要元数据对象包含的目录子项元数据的数量的信息,也需要获得每个目录子项元数据的大小的信息。元数据对象中目录子项元数据的大小信息可以包含在上述属性信息中,也可以由目标服务器获得目录子项元数据大小的平均值,用该平均值进行上述累加。目录子项元数据的大小平均值可以为默认值;或者,可以根据之前交付的目录子项元数据的大小估算目录子项元数据大小的平均值。
[0045]另外,具体实施时,存放于元数据对象中的目录子项元数据的大小,与交付给协议客户端时的目录子项元数据大小可能不同,通常后者小于前者,这是因为通常会采用压缩算法将目录子项元数据压缩后交付给协议客服端。因此,在根据目录子项元数据的大小的累加值确定本次需读取的元数据对象时,将上述上述累加值与本次交付量阈值乘以以偏差系数进行比较,该偏差系数可以为目录子项元数据压缩前后的数据量的比值。
[0046]然后,步骤104中,目标服务器根据上述属性信息包括用于确定第k至第(k+m)个元数据对象各自存储位置的信息,并行从至少一个服务器中获得第k至第(k+m)个元数据对象包含的目录子项元数据。
[0047]具体来讲,所述用于确定第k至第(k+m)个元数据对象各自存储位置的信息为第k至第(k+m)个元数据对象各自归属的元数据管理模块的信息,亦即,第k至第(k+m)个元数据对象各自被哪个服务器的元数据管理模块所管理。根据该信息,即可确定第k至第(k+m)个元数据对象各自由哪个服务器所管理,而管理元数据对象的服务器中的元数据管理模块存储有该元数据对象的存储位置的信息。
[0048]在一种可能的
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1