一种应用于随机存取的元数据管理方法及模块

著录项
  • CN201310129692.5
  • 20130415
  • CN103218433A
  • 20130724
  • 北京邮电大学
  • 陆月明;解晓伟;袁玉宇;及莹
  • G06F17/30
  • G06F17/30

  • 北京市海淀区西土城路10号
  • 中国,CN,北京(11)
摘要
本发明提出一种应用于随机存取的元数据管理方法及模块,该发明通过哈希函数将元数据均衡地分配到各台元数据服务器中,同时增加两个功能模块,一个模块是名字映射模块,该模块完成重命名到原始名的转换;另一个模块是目录结构模块,该模块通过对每个文件或目录进行结构化编号,保存了目录与目录、目录与文件间的关联信息,这两个新功能模块帮助解决了传统哈希策略遇到的问题。
权利要求

1.本发明提出“一种应用于随机存取的元数据管理方法及模块”,该发明通过哈希函数将 元数据均衡地分配到各台元数据服务器中,同时增加两个功能模块,一个模块是名字映射模 块,该模块完成重命名到原始名的转换;另一个模块是目录结构模块,该模块通过对每个文 件或目录进行结构化编号,保存了目录与目录、目录与文件间的关联信息,这两个新功能模 块帮助解决了传统哈希策略遇到的问题。本发明的特征在于:

(1)本发明提出名字映射模块,提供重命名到原始名字的映射服务,分布式文件系统在重 命名操作时无需迁移大量元数据。

(2)本发明提出目录结构模块,提供对文件或目录的结构化编号,编号中包含了目录与目 录、目录与文件的关联信息,避免了传统哈希策略中元数据服务器间的频繁通信。

说明书
技术领域

本发明涉及一种应用于随机存取的元数据管理方法及模块,该方法应用于分布式文件系 统的元数据服务器集管理及其元数据管理上,属于计算机科学与技术领域。

近些年来,随着互联网的高速发展,每天都会产生数以亿计的数据量,分布式文件系统 逐渐成为大规模数据存储的首要选择。在分布式存储架构中,为了更有效地管理元数据和文 件数据,通常把元数据的处理和文件数据的访问分离开来,由元数据服务器管理文件系统命 名空间和文件各种属性,并负责向客户端提供文件访问权限和文件存储位置等信息,同时由 数据服务器负责存储文件,并直接处理客户端对文件数据的各种读写请求。这样分离之后, 就可以利用分布式文件系统的访问特性,具体针对系统瓶颈进行优化,而最近的研究显示, 文件系统中50%‑80%的访问操作对象都是元数据,而不是数量较大的文件数据,因此,元数 据的管理策略对于系统性能具有至关重要的影响。

元数据的管理策略大概可以分为两类:子树分割和哈希方法。其中子树分割策略把分布 式文件系统的全局命名空间和目录层次按照一定策略分割成多棵子树,每棵子树都分布到元 数据服务器集中的一台特定的元数据服务器中,但每台元数据服务器中可能维护有一棵或 多棵子树;而哈希方法采用哈希函数来建立元数据存储索引,意味着元数据管理系统利用每 个文件和目录的某个特征(名称、路径名等)来计算哈希值,并根据这些哈希值把对应的文 件或目录分布到某台元数据服务器中存储。子树分割方法在80至90年代的分布式文件系统 中使用比较广泛,如美国Sun公司的Network File System(NFS)和卡内基梅隆大学的Andrew  File System(AFS)都是采用的这种元数据管理策略。子树分割方法非常接近人们的直观思维, 实现起来较为简单,但缺点也较多,如权限验证耗时长,不能动态均衡负载等。

2004年,Lustre分布式文件系统通过普通的哈希函数计算文件的上级目录名的哈希值, 把该哈希值作为元数据存储索引值,而90年代末期的VESTA分布式文件系统和RAMA分 布式文件系统通过普通的哈希函数直接计算文件的全路径名称的哈希值作为元数据存储的索 引值,这两种元数据管理系统虽用不同的唯一标志来计算哈希值,但都属于哈希策略。此类 策略具有明显的优点,元数据在元数据服务器集中存储均匀,存取负载分布均衡,且支持 高并发存取,但同时缺点也是明显的,当客户端对文件目录进行重命名操作时,元数据服务 器需要迁移元数据,当客户端访问文件或目录时,文件系统要对该文件或目录的上级目录进 行权限认证,而上级目录可能存放在其他元数据服务器上,所以元数据服务器之间要频繁地 通信以确保用户具有对文件或目录的访问权限。

本发明“一种应用于随机存取的元数据管理方法及模块”由三个模块组成,如图1所示, 分别是传统哈希策略模块、名字映射模块和目录结构模块,下面从各模块的功能、具体实现 以及模块的执行流程来对本发明做详细说明。

(1)本发明各模块的功能

●传统哈希策略模块:该发明的基础模块,它由一个哈希函数组成,该模块的功能是运用 哈希函数对文件或目录的全路径计算哈希值,然后根据计算得到的哈希值确定存放文件或目 录的元数据的位置。

●名字映射模块:该发明的特模块,它由全路径分解和名字映射表两部分组成,所谓全 路径分解就是把文件或目录的全路径名分解成一个个单独的目录名和文件名,而名字映射表 记载了文件或目录的原始名和重命名的对应关系。该模块的功能是完成文件或目录的重命名 到原始名的转换。

●目录结构模块:该发明的关键模块,它由结构化编码,目录结构及权限查询表以及权限 认证三部分组成。结构化编码是指对文件或目录的全路径名等信息进行编码;目录及权限查 询表记录了文件与目录、目录与目录之间的关联信息以及用户对它们的访问权限;权限认证 是指判断用户对某个文件或目录是否具有访问的权限。

该发明的三个模块各自具有各自的功能。传统哈希策略模块提供了高效的元数据访问方 法,名字映射模块利用名字映射避免了在文件或目录名字改变时迁移大量元数据,目录结构 模块提供了目录与目录、目录与文件的元数据之间的关联信息,避免了元数据服务器在交换 元数据信息时的频繁通信。具体功能如下:

(2)本发明中各模块功能的具体实现

本发明中的每个模块功能的实现是依赖于每个模块中各组成部分的实现方法,具体介绍 如下:

●传统哈希策略模块的在实现上,是由一个哈希函数对文件或目录的全路径名计算哈希值。

●名字映射模块中的名字映射功能主要依靠名字映射表来实现,名字映射表主要由两项组 成,一项是文件名,本发明称其为原始名,该文件名是在用户创建文件时记载在表项中,同 时也存储在元数据服务器中,当用户对某个文件或者目录进行重命名时,客户端查询名字映 射表,当发现重命名处空白时就填入新的名字,当重命名处已有名字时,把旧的名字替换为 新的名字。

●目录结构模块的实现分目录结构及权限查询表、结构化编码和权限认证三个部分来介绍:

目录结构及权限查询表主要由三项组成,第一项是inode号,inode号是文件系统对文件 或目录的全局编号;第二项是结构化编号,如图4所示,这个编号记载了文件或目录所在的 目录结构,结构化编号的头部记载元数据所在的服务器的编号,中间部分是对全路径的分级 编号,尾部记载目录级数;第三项是权限值。

结构化编码是指对目录或文件的全路径进行编号,编号采用二进制编号,系统可以设定目 录结构中每一段所占的二进制位数。

权限认证是指通过查询目录结构及权限查询表来判断用户是否具有对文件或目录的访问 权限。权限值是九位二进制数,高三位表示用户组权限,中间三位为用户权限,低三位为其 他用户权限。三位二进制数的最高位为读权限,中间位为写权限,最低位为执行权限,“1” 表示具有权限,“0”表示没有权限。查询要访问文件或目录的全路径上的所有目录的权限值, 对这些权限值进行与运算,最终得到一个权限值。

(3)本发明中模块的执行流程

为了说明本发明执行流程,从客户端创建文件、重命名文件以及访问文件的过程描述了 本发明各模块之间的关系和本发明的执行流程,本发明的具体执行流程如下:

●创建文件阶段

为了直观地说明在文件系统创建文件阶段时各模块的作用,如图3所示,当用户发出创建 文件/d1/f1请求时,流程如下:

首先,名字映射模块进行工作,在该模块中完成对/d1/f1的全路径分解,然后把全路径分 解后的结果写进名字映射表,同时把结果发送给目录结构模块中的结构化编码;

然后,名字映射表完成名字映射操作,把新生成的全路径名(fullname)交给哈希函数计 算哈希值,客户端根据哈希值得到要访问的元数据服务器的编号(mds id),该元数据服务器 根据客户端的请求完成相应操作,返回元数据信息(inode号、mds id及权限值)给目录结构 模块,并应答客户端;

最后,目录结构模块根据名字映射模块以及元数据服务器发来的信息制作目录结构及权限 查询表。

●访问文件阶段

为了说明客户端访问文件时该发明中各模块的作用,如图4所示,当用户访问文件name2 时,流程如下:

首先,名字映射模块对name2进行全路径名分解,并通过查询名字映射表,完成重命名 到原始名的映射,生成新的全路径名fullname;

其次,传统哈希策略模块对fullname计算哈希值,客户端获取元数据服务器编号(mds id), 并向元数据服务器请求要访问文件name2的元数据;

然后,元数据服务器查询目录结构模块中的目录结构及权限查询表,并通过权限认证判 断客户端是否具有对该文件的访问权限。

最后,经过权限认证,如果用户对文件有访问权限,元数据服务器返回元数据信息给客 户端;如果没有,则告知客户端无权限访问。

图1元数据管理方法及模块

图2结构化编号的组成结构

图3客户端创建文件

图4客户端访问文件

为了说明这种新的元数据管理方法,这里给出一些操作的实例。假设文件系统已经存在 如下数据:

/d1/f1;

我们在文件系统中要建立目录/d2,并设置权限为rwxr_xr_x。过程如下:

第一步,客户端首先发送请求,把全路径/d2进行分解,分解成根/和目录名d2;

第二步,查寻名字映射表,发现表中无d2,则在表中添加d2项,如表1所示,并对全 路径进行哈希计算,算出元数据服务器编号(mds id)给客户端;根据/和d2进行编号,假设 文件系统设定元数据服务器(mds)是2位编码,一级目录是2位编码,二级目录是3位编 码,三级目录是4位编码,目录级数是3位编码,则编码结果如表2所示;

第三步,客户端向指定的元数据服务器发送建立/d2的请求;

第四步,元数据服务器完成建立元数据任务,将/d2元数据信息inode号以及执行权限发 给目录结构及权限查询表,并回复客户端执行成功;

第五步,目录结构服务器更新表2,将inode号和权限值填入表中。

表1

编号 文件名 重名名

1 /  

2 d1  

3 f1 f2

4 d2  

表2

InOde值 结构化编号 权限值

1 01 01 000 0000 001 111 111 111

2 01 01 001 0000 010 111 111 111

3 10 01 001 0001 010 111 111 111

4 01 01 010 0000 010 111 101 101

接下来,我们把/d1/f1重命名为/d1/f2,客户端查询名字映射表,将f1对应的重命名一空 填上名字f2。

最后,当客户端访问/d1/f2时,过程如图4所示:

第一步,客户端查表2得知f2的原始名字是f1,然后修改全路径为/d1/f1,此时计算哈 希值,哈希值与重命名前是一样的,因此元数据存放的位置也没有改变;

第二步,客户端向相应的元数据服务器发送访问请求;

第三步,元数据服务器发送/d1/f1的inode号3给目录结构模块;

第四步,目录结构模块通过查询表2,得到编号10 010010001 010和权限值111111111, 然后分别与mds id掩码11 00 000 0000 000,全路径掩码00 11 111 1111 000和目录级数掩码 00 00 000 0000 111进行与运算,得到其目录级数为010,即为2级目录和全路径编号01 001 0001,查表2知01就是/目录,其mds id为01,inode号为1,权限值为111111111,001就是 d1目录,其mds id为01,inode号为2,权限值为111111111,用户对/和d1都具有读和执行权 限,然后目录结构模块发送信息告知元数据服务器客户端能够访问/d1/f1,元数据服务器接到 消息后再回复客户端。

本文发布于:2024-09-23 08:20:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/84725.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议