元数据管理

来源:互联网 发布:闪迪内存卡数据恢复 编辑:程序博客网 时间:2024/04/27 14:28

参考文献:Adaptive and Scalable Metadata Management to Support A Trillion File

 

 

 

引言:

 

          近年来,集群文件系统已经成为主流,此架构中MDS持文件系统的名字空间和文件属性,存储服务器处理读写操作。它可以提供很高的I/O

但是随着因特网的普及,高端科学计算的应用增加,集群文件系统也面临了三个问题:
1、怎么样有效的组织和管理好极大的目录,每个目录中包含了数十亿个文件
2、在一个包含了数十亿或百万兆个文件的大文件系统中,如何提供高性能的元数据管理
3、大量用户并发工作,产生混合的工作负载时,如何提供高的元数据管理性能

 

 

什么是元数据metadata

 

       元数据最本质、最抽象的定义为:data about data (关于数据的数据)。它用于描述要素、数据集或数据集系列的内容、覆盖范围、质量、管理方式、数据的所有者、数据的提供方式等有关的信息。

        元数据以非特定语言的方式描述在代码中定义的每一类型和成员。元数据存储以下信息:   

  程序集的说明。

  标识(名称、版本、区域性、公钥)。

  导出的类型。

  该程序集所依赖的其他程序集。

  运行所需的安全权限。

  类型的说明。

  名称、可见性、基类和实现的接口。

  成员(方法、字段、属性、事件、嵌套的类型)。

  属性。

  修饰类型和成员的其他说明性元素。

 

元数据的应用

 

     (1)确认和检索(Discovery andentification),主要致力于如何帮助人们检索和确认所需要的资源,数据元素往往限于作者、标题、主题、位置等简单信息,Dublin Core是其典型代表。

  (2)著录描述(Cataloging),用于对数据单元进行详细、全面的著录描述,数据元素囊括内容、载体、位置与获取方式、制作与利用方法、甚至相关数据单元方面等,数据元素数量往往较多,MARC、GILS和FGDC/CSDGM是这类Metadata的典型代表。

  (3)资源管理(Resource Administration),支持资源的存储和使用管理,数据元素除比较全面的著录描述信息外,还往往包括权利管理(Rights/Privacy Management)、电子签名(Digital Signature)、资源评鉴(Seal of Approval/Rating)、使用管理(Access Management)、支付审计(Payment and Accounting)等方面的信息。

  (4)资源保护与长期保存(Preservation and Archiving),支持对资源进行长期保存,数据元素除对资源进行描述和确认外,往往包括详细的格式信息、制作信息、保护条件、转换方式(Migration Methods)、保存责任等内容。

 

元数据结构

 

  总体结构定义方式 一个Metadata格式由多层次的结构予以定义:

  (1)内容结构(Content Structure),对该Metadata的构成元素及其定义标准进行描述。

  (2)句法结构(Syntax Structure),定义Metadata结构以及如何描述这种结构。

  (3)语义结构(Semantic Structure),定义Metadata元素的具体描述方法。

  

       内容结构

  内容结构定义Metadata的构成元素,可包括: 描述性元素、技术性元素、管理性元素、结构性元素(例如与编码语言、Namespace、数据单元等的链接)。

  这些数据元素很可能依据一定标准来选取,因此元数据内容结构中需要对此进行说明,例如MARC记录所依据的ISBD,EAD所参照的ISAD(G),ICPSR所依据的ICPSR Data Preparation Manual。

     句法结构

  句法结构定义格式结构及其描述方式,例如元素的分区分段组织、元素选取使用规则、元素描述方法(例如Dublin Core采用ISO/IEC 11179标准)、元素结构描述方法(例如MARC记录结构、SGML结构、XML结构)、结构语句描述语言(例如EBNF Notation)等。

  有时,句法结构需要指出元数据是否与所描述的数据对象捆绑在一起、或作为单独数据存在但以一定形式与数据对象链接,还可能描述与定义标准、DTD结构和Namespace等的链接方式。

  语义结构

       语义结构定义元素的具体描述方法,例如 描述元素时所采用的标准、最佳实践(Best Practices)或自定义的描述要求(Instructions)。

 

 

 

利用分块颗粒度将元数据管理技术分为四类:

 
1No partition
  名字空间不分块,整个名字空间存在一个元数据服务器上或者复制在多个服务器上,这个只适合元数据较少的情况。并且不支持并发的修改操作。
 
2Subtree partition
   整个名字空间分成若干个子树,分配给一个特定的服务器。分为静态和动态两种子树划分。静态子树划分支持子树间的并发处理,但颗粒度太大,同时容易负载不均衡;动态子树划分,可以在服务器之间传输子树,扩展性和负载均衡方面由于静态方式。子树目录数受限于元数据服务器数目
3Partitioning within a Single Directory
   Lustre利用静态hash来划分目录。  GPFS利用动态hash来组织目录块;它将目录块存储在硬盘上,通过分布式的lock管理和cache一致性协议建立了一个分布式实现;lock请求和释放都占用很多的I/O   GIGA+将单个目录分成多个固定大小的部分;一个partition元数据太多时将分裂出新的partition;当文件太多时,它也会出现瓶颈
 
4File partitioning
   每个文件的性质都被用来确定其元数据服务器的位置。它可以将文件系统中的文件平均分配到元数据服务器上,当每个文件的被访问几率相等时可以解决负载均衡的问题。缺点:元数据服务器的参素更改时所有文件将rehashing;不支持单个大文件系统
总结:元数据分块的颗粒度影响元数据操作的诸多方面:可扩展性,并发处理,存储利用率,负载均衡;将一directory分成多个partition可以得到更好的扩展性和并发性能;可以建立一个两层的分块机制。
 
Adaptive and scalable directory partitioning自适应可扩展的目录分块
接下来介绍skyFS的实现机制:

  directory自动地分成多个partition;所有partition配到很多元数据服务器上,可以得到更好的并发性能; 一个Partition分成一个或多个chunk

 
两层分块算法:
    首先从文件名字从计算出一个32位的hash值,hash值分成partition bitschunks bits;当directory很小时,partition bitschunk bits长度为0,也就是只有一个partition和一个chunk;当一个partition不够时,partition bits长度增长,到达一个阈值a(与单个服务器的处理能力和元数据服务器数目有关)时,partition bits长度停止增长,chunk bits长度开始增加;当chunk bits长度达到b即每个partition可容纳2^bchunk时,partition停止增大,分裂出更多的partition
 
The partition bit-map
    每个客户端都有一个partition bit-map<=128kB),来指示哪些partition可用;为支持快速定位文件,用ino的低30位定位partition20位)和chunk10位),高32位用于定位directory
Partition分裂时bit-map就会更新(只需directory初始元数据服务器和与这两个partition相关的两个服务器更新);利用consistent hashing来分配partition;每个partition被指派到元数据服务器都是通过一个计算其IDhash函数值的范围(在负载平衡机制下可变)
 
为提高并发性能:一、减小lock的颗粒度;二、每个lock内减小处理大小;
1、有四种结构:directorypartitionchunkmetadata
可以根据操作的性质来决定使用什么级别的lock
2、使用了read-write lock,增加读操作时的并发性能;
 
    此系统将元数据cache分成大小不同三类:directory cachepartition cachechunk cache;其中directory cache partition cache小有限制;
directory cache到达最大时,要载入一个新的directory cache须替换掉含partition数最少的旧directory cache;同理对partition cache的载入 。
    
     利用代理机制记录某个directory的初始元数据服务器的partition cache信息,来实现这个directory cache的删除
 
    此系统中,元数据处理和元数据存储分开,这样负载转移时开销变小; 利用consistent hashing可以实现元数据分布的平衡;使用一个元数据服务器来作为master,当一个服务器过载时,向master发出一个rebalance reqestmaster了一定的时间以后搜集所有的服务器的资源利用情况,如果此时发出请求的服务器资源利用率还是高于阈值,就启动rebalance处理;