一种分布式文件系统中高效的元数据访存方法技术方案

技术编号:5241048 阅读:219 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种分布式文件系统中高效的元数据访存方法。该方法基于多路搜索树和trie树相结合的文件树访问方式;引入文件内存映射的方式对元数据文件进行读写;同时基于元数据的树结构组织,对索引节点元数据从内存同步到磁盘进行优化,以减轻磁盘的负载。

【技术实现步骤摘要】

本专利技术涉及分布式文件系统管理领域,具体涉及一种分布式文件系统中高效的 元数据访存方法。
技术介绍
在分布式文件系统中,元数据是描述文件系统的重要单元。大部分分布式文件 系统的典型应用中,如互联网,科学计算等,元数据访问请求占到所有请求一半以上的 比例。因此,分布式文件系统中元数据的存取效率对整个文件系统的性能有着极其重要 的影响。文件系统的元数据主要包括索引节点和目录项。索引节点是文件系统中对象 (文件和目录)的标识,一个索引节点会有一个唯一的全局编号,即索引节点号;目录项 则是对目录中一个子项的描述,通常包含该子项的名称和索引节点号。传统的Linux文 件系统对文件系统元数据的管理一般放在内核态,通过直接与块设备层的交互对元数据 进行访存,这种方式在存取效率上较高,但内核态的开发和维护成本较高。因此,一些 优秀的分布式文件系统,如GoogleFS、HadoopFS等,均将元数据管理放在用户态,即基 于本地文件系统之上。通过选用高效的缓存技术和检索算法,基于本地文件系统之上的 元数据管理的性能可以很好地满足分布式存储的需求。基于本地文件系统之上的元数据管理方式,是将索引节点和目录项存于本地文 件系统的文件中。当有元数据访存时,直接操作这些本地文件即可。对本地文件的访 问,通常包含两个阶段的开销,第一个阶段是通过系统调用向内核态的文件系统模块发 出请求,第二个阶段是内核态的文件系统模块通过块设备驱动以及底层磁盘驱动去访问 磁盘。由于现代操作系统的文件系统会对访问的对象进行缓存,因而对文件的操作一般 都是直接在内存中进行,所以效率上不是瓶颈。所以,访问基于本地文件系统的元数据 信息,开销主要是频繁的系统调用。在普通的服务器上,一次系统调用约需要几十个微 秒的时间,在元数据访问异常频繁的分布式文件系统中,这种开销会使文件系统的性能 大打折扣。因此,如何设计元数据的访存方式,对于分布式文件系统是至关重要的。
技术实现思路
本专利技术旨在公开一种分布式文件系统中高效的元数据访存方式,目的是满足分 布式文件系统中频繁的元数据服务请求。,包括以下步骤A、索引节点采用64位无符号整数进行编号,从0开始,每32K个索引节点元 数据存放于同一个文件,所有的索引节点文件按照节点号顺序采用两级树状结构目录进 行存放;B、索引节点文件存储的目录结构组织为一个多路搜索树,树的每个非叶子节点 对应一个子目录,而叶子节点则表示索引节点文件;C、同一非叶子节点的所有子节点采用trie树组织;D、通过内存映射将索引节点文件映射到一片内存区域,只有实际访问到的部 分,本地文件系统才会将其从磁盘上读入文件系统的页面缓存,对于其他部分,则只保 留虚拟空间,并不触发缺页中断去读取磁盘数据;E、将内存中修改过的索引节点文件采用定时同步方式向磁盘同步,每到定时时 间,同步线程基于以上引入的多路搜索树结构,采用深度优先遍历的方式,对位于叶子 节点的索引节点文件按照创建的先后顺序进行扫描,如发现有修改标志,则进行同步。本专利技术的创新点在于索引节点的访存方式专利技术提供了一种基于多路搜索树和 trie树相结合的文件树访问方式;引入文件内存映射的方式对元数据文件进行读写;同时 基于元数据的树结构组织,对索引节点元数据从内存同步到磁盘进行优化,以减轻磁盘 的负载。附图说明图1是本专利技术索引节点和文件织结构 具体实施例方式(1)索引节点采用64位无符号整数进行编号,从0开始,每32K个索引节点元 数据存放于同一个文件,所有的索引节点文件在磁盘上按照节点号采用两级树状结构目 录进行存放。如图1所示(2)为了减少与本地文件系统的交互,本专利技术将索引节点文件存储的目录结构按 照图1所示的结构组织为一个多路搜索树,树的每个非叶子节点对应一个子目录,而叶 子节点则表示索引节点文件。这样,当需要访问某个索引节点时,通过其索引节点号, 先从多路搜索树中查找。如果查找成功,则不需要通过系统调用去本地文件系统访问该 索引节点数据;只有索引节点在内存中不存在时,才会和本地文件系统进行交互,并为 其建立相应的树节点,以后再有访问同一个索引节点文件的请求,就不需要再通过系统 调用与本地文件系统进行交互了。(3)由于多路搜索树每个非叶子节点的子节点数目较多,采用线性搜索的时间复 杂度为O(n),效率较低。为了提高检索效率,在本专利技术实施中,同一个节点的所有子节 点采用trie树组织起来。之所以使用trie树,主要是由于索引节点号是使用整数表示的, 当将整数以二进制表示时,其每一位的取值可能为O或1,正好符合trie树的应用场景。 如果给一棵深度为N的完全二叉树每个节点的左右子节点分别赋予权值O和1,则一个N 位整数所能表达的值域集合等价于该完全二叉树从根节点到所有叶子经过的节点权值组 合后形成的集合。使用trie树可以极大的提高检索效率,假定多路搜索树的每个节点有2ΛΝ的子 节点,trie树节点包含的子节点数目选为2ΛΜ(1 <=Μ<=Ν),则检索时间夏杂度有 O (log (2ΛΝ))减为 0 (IogM (N))。(4)由于本专利技术中,一个索引节点文件共存有索引节点32Κ个,如果每访问其中 的一个索引节点就去访问一次本地文件系统,则需要打开文件,移动文件指针,读取数 据等多次系统调用,使效率大打折扣;而如果在第一次访问的时候,就将所有的索引节点都读入内存,由于索引节点文件较大,会照成较大的浪费,因为很可能以后再也没有 请求去访问同一文件中的其他索引节点。基于以上分析,本专利技术给出了一种高效的解决方案方案通过内存映射将索引 节点文件映射到一片内存区域。这样,只有实际访问到的部分,本地文件系统才会将其 从磁盘上读入文件系统的页面缓存,对于其他部分,则只保留虚存空间,并不触发缺页 中断;采用内存映射的另一个优点是,访问文件数据时不需要经过从内核态文件系统的 页面缓存拷贝到用户缓冲区,能减少对CPU—级缓存的污染,进一步提高分布式文件系 统元数据处理单元的总体性能。(5)本地文件系统的策略会保证同一个索引节点文件中的所有索引节点内容在磁 盘上是比较靠近;不同的索引节点文件,由于索引节点号是逐渐递增的,其创建时间顺 序和索引节点的大小顺序是一致的,因而,相邻的索引节点文件在磁盘上所处的物理位 置分布自然也是比较靠近。一般来说,磁盘顺序读写能最大程度发挥磁盘的性能,并且可以有效地减小对 磁盘磁头的损害。本技术方案在将内存中修改过的索引节点文件向磁盘同步时,采用定 时同步的方式。每当到定时时间,同步线程基于以上引入的多路搜索树结构,采用深度 优先遍历的方式,对位于叶子节点的索引节点文件按照创建的先后顺序(即索引节点号 的大小顺序)进行扫描,如果发现有修改标志,则进行同步。这样以来,磁盘磁头基本 是顺序移动,而非随机移动,因而,不仅加快了同步速率,而且可以增加磁盘的使用寿 命。权利要求1. ,其特征在于包括以下步骤A、索引节点采用64位无符号整数进行编号,从0开始,每32K个索引节点元数据 存放于同一个文件,所有的索引节点文件按照节点号顺序采用两级树状结构目录进行存 放;B、索引节点文件存储的目录结构组织为一个多路搜索树,树的每个非叶子节点对应 一个子目录,而叶子节点则表示索引节点文件;C、同本文档来自技高网
...

【技术保护点】
一种分布式文件系统中高效的元数据访存方法,其特征在于:包括以下步骤:A、索引节点采用64位无符号整数进行编号,从0开始,每32K个索引节点元数据存放于同一个文件,所有的索引节点文件按照节点号顺序采用两级树状结构目录进行存放;B、索引节点文件存储的目录结构组织为一个多路搜索树,树的每个非叶子节点对应一个子目录,而叶子节点则表示索引节点文件;C、同一非叶子节点的所有子节点采用trie树组织;D、通过内存映射将索引节点文件映射到一片内存区域,只有实际访问到的部分,本地文件系统才会将其从磁盘上读入文件系统的页面缓存,对于其他部分,则只保留虚拟空间,并不触发缺页中断去读取磁盘数据;E、将内存中修改过的索引节点文件采用定时同步方式向磁盘同步,每到定时时间,同步线程基于以上引入的多路搜索树结构,采用深度优先遍历的方式,对位于叶子节点的索引节点文件按照创建的先后顺序进行扫描,如发现有修改标志,则进行同步。

【技术特征摘要】

【专利技术属性】
技术研发人员:杨浩邵宗有苗艳超王勇马照云
申请(专利权)人:曙光信息产业北京有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1