一种分布式文件系统中基于后缀树的目录组织方法技术方案

技术编号:5241045 阅读:318 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种分布式文件系统中基于后缀树的目录组织方法。首先将目录项按照名称分组,不同的组存储在存储服务器上不同的磁盘上,对于不同组的目录项,采用后缀树的方法组织起来并进行存储。

【技术实现步骤摘要】

本专利技术涉及分布式文件系统中文件管理,具体涉及一种分布式文件系统中基于 后缀树的目录组织方法。
技术介绍
随着计算机技术的快速发展,网络、科学计算等领域对存储的要求越来越高, 于是分布式文件系统渐渐被引入到这些领域,以满足这些领域的存储需要。互联网等领域的应用有比较鲜明的特点,其中之一就是单个目录往往会存放 百万甚至上亿个文件,如存放mp3文件和图片文件等,这些文件的特性是,通常以数字 或字母组成文件名,如l.mp3、abc.jpg等。当目录中的目录项数目较多时,如果采用传统 的似ext3的文件系统的目录组织方式,则目录项搜索的时间复杂度为O(n),效率较低; 如果采用B+树的目录组织方式,则一方面实现比较复杂,另一方面,由于各个目录项的 相似度较大,因而需要在插入时频繁地进行树的平衡调整,在效率上同样不具有优势。
技术实现思路
本专利技术目的是提供一种分布式文件系统中目录的组织方法,首先将目录项按照 名称分组,不同的组存储在存储服务器上不同的磁盘上,对于不同组的目录项,采用后 缀树的方法组织起来并进行存储。,包含以下步骤A、将目录项分成若干组,分别存储在不同的磁盘上。分组的方式采用简单的字 符串哈希的方式,给定字符串S以及总的组数N,贝IjS所处的组序号η为n = hash(S)% N;B、根据应用中后缀相同的目录项,建立后缀树;C、在本实施方案中,目录的内容分为两个部分第一部分是后缀树的节点, 该项长度不定,包含该节点到其父节点的边所对应的字符串,父节点在其所处层的序 号,以及该节点对应的目录项号;第二部分是目录项,该项定长,包含除了目录项名称 以外的其他信息,如目录项所代表的文件或目录的索引节点号等;存储时,将后缀树从 根节点开始,采用广度优先的方法,将树节点按照层次顺序存储到同一个文件;然后将 目录项信息存储在另一个文件中去。D、需要访问目录时,先将后缀树节点分层从文件读入内存,然后根据节点中记 录的父节点在其所处层次中的序号,找到其父节点后,挂入父节点的孩子队列,如此处 理,直到节点文件处理完毕;需要访问具体目录项时,根据后缀树节点中记录的目录项索引号,在目录项信 息文件中寻址到该项后读出;E、为后缀树设定一个节点数目限制,当后缀树的节点数目超过该门限时,需 要对后缀树进行分裂;分裂时,将树根节点的所有子节点按照后缀的首字母分为两组,分别构建出一棵新的后缀树;记录下分布在每个子节点到根节点的边对应的字符串首字 母,存储起来;当后缀树分裂后,每棵后缀树需要单独存储;随着时间的推移,那些长 时间没有被访问的后缀树,可以回收以释放内存。附图说明图1是根据给定的一组文件名建立的后缀树示意2是后缀树及索引节点存储示意图具体实施方案(1)分布式文件系统的元数据服务器通常是功能较强的服务器,配备有多块磁 盘。根据磁盘控制器的特性可知,不同的磁盘位于磁盘控制器的不同通道,因而在操作 控制上是相互独立的。因此,元数据服务器上的多块磁盘实际上是相互独立,可以并行 访问的。为了加速对超大目录的访问速度,本专利技术中将目录项分成若干组,分别存储在 不同的磁盘上。分组的方式采用简单的字符串哈希的方式,给定字符串S以及总的组数 N,则S所处的组序号η为η = hash (S) % N(2)将目录项分组之后,每一组都是一个目录的集合。由于应用中目录项名称 具有特殊性,即后缀相同,而且名称是由一组字符集合有规律的组合而成的,这正好符 合后缀树的应用场景。假定有0.jpg,110.jpg,l.jpg、ll.jpg、101.jpg、lll.jpg几个目录 项,则建立起的后缀树结构见图1 由图1所示,这些目录项具有较多共同的后缀,如.jpg等,因此在存储时,这 些共同的后缀可以只存储一份,不需要为每个目录项都存储一份,这样可以节省存储空 间,减少磁盘IO操作。采用后缀树的另一个优点是,在搜索目录项时,可以直接根据目 录项名在后缀树中进行搜索,其时间复杂度为o(n),其中η为目录项名的长度;而采用 线性或B+树对目录项进行组织,其检索效率均比不上后缀树。(3)在本实施方案中,目录的内容分为两个部分第一部分是后缀树的节点, 该项长度不定,包含该节点到其父节点的边所对应的字符串(如图1所标示),父节点在 其所处层的序号,以及该节点对应的目录项号(为了查找日录项);第二部分是目录项, 该项定长,包含除了目录项名称以外的其他信息,如目录项所代表的文件或目录的索引 节点号等。存储时,将后缀树从根节点开始,采用广度优先的方法,将树节点按照层次顺 序存储到同一个文件;然后将目录项信息存储在另一个文件中去。后缀树节点和索引节 点存储布局及关系见图2。(4)选用以上的存储方式,主要是为了提高重建后缀树的速度。当需要访问目录 时,先将后缀树节点分层从文件读入内存,然后根据节点中记录的父节点在其所处层次 中的序号,找到其父节点后,挂入父节点的孩子队列。如此处理,直到节点文件处理完 毕。当需要访问具体目录项时,根据后缀树节点中记录的目录项索引序号,在目录 项信息文件中寻址到该项后读出。由于目录项信息是定长的,所以最多只需要一次IO操 作。(5)当后缀树建好以后,查找一个目录或文件时,需要首先根据第⑴步中给出 的hash函数计算该目录或文件落在哪个组,然后在组内通过后缀树进行查找。当需要在 组内添加新的目录项时,首先为其分配一个唯一的目录项序号,将目录项的名称字串插 入后缀树,更新用于存储后缀树节点和目录项的文件相应区域即可;类似,当需要删除 一个目录项时,先在后缀树中查找到对应的节点,删除后,更新用于存储后缀树节点和 目录项的文件相应区域。(6)当后缀树中的节点较多时,为了避免由于节点文件较大而导致占用内存较 多,本专利技术为后缀树设定一个节点数目限制,当后缀树的节点数目超过该门限时,需要 对后缀树进行分裂。分裂时,将树根节点的所有子节点按照后缀的首字母大小顺序分为 两组,分别构建出一棵新的后缀树;记录下分布在每个子节点到根节点的边对应的字符 串首字母,存储起来,以供以后查找、添加、删除等操作时来定位目标目录项位于哪一 棵后缀树。当后缀树分裂后,每棵后缀树需要单独存储,这样就可以减少对内存的占 用,因为一个目录项只可能位于某一棵后缀树中,这样只要初始化这棵后缀树即可,其 他的后缀树等到访问到时再进行初始化。同时,给每一棵后缀树设置一个最近访问时 间,随着时间的推移,那些长时间没有被访问的后缀树,可以进行回收以释放内存。权利要求1. ,其特征在于包含以下步骤A、将目录项分成若干组,分别存储在不同的磁盘上。分组的方式采用简单的字符 串哈希的方式,给定字符串S以及总的组数N,则S所处的组序号η为n = hash(S)% N;B、根据应用中后缀相同的目录项,建立后缀树;C、在本实施方案中,目录的内容分为两个部分第一部分是后缀树的节点,该项 长度不定,包含该节点到其父节点的边所对应的字符串,父节点在其所处层的序号,以 及该节点对应的目录项号;第二部分是目录项,该项定长,包含除了目录项名称以外的 其他信息,如目录项所代表的文件或目录的索引节点号等;存储时,将后缀树从根节点 开始,采用广度优先的方法,将树节点按照层次顺序存储到同一个文件;然后将目录项 信息存储在另一个文本文档来自技高网...

【技术保护点】
一种分布式文件系统中基于后缀树的目录组织方法,其特征在于:包含以下步骤:A、将目录项分成若干组,分别存储在不同的磁盘上。分组的方式采用简单的字符串哈希的方式,给定字符串S以及总的组数N,则S所处的组序号n为:n=hash(S)%N;B、根据应用中后缀相同的目录项,建立后缀树;C、在本实施方案中,目录的内容分为两个部分:第一部分是后缀树的节点,该项长度不定,包含该节点到其父节点的边所对应的字符串,父节点在其所处层的序号,以及该节点对应的目录项号;第二部分是目录项,该项定长,包含除了目录项名称以外的其他信息,如目录项所代表的文件或目录的索引节点号等;存储时,将后缀树从根节点开始,采用广度优先的方法,将树节点按照层次顺序存储到同一个文件;然后将目录项信息存储在另一个文件中去。D、需要访问目录时,先将后缀树节点分层从文件读入内存,然后根据节点中记录的父节点在其所处层次中的序号,找到其父节点后,挂入父节点的孩子队列,如此处理,直到节点文件处理完毕;需要访问具体目录项时,根据后缀树节点中记录的目录项索引号,在目录项信息文件中寻址到该项后读出;E、为后缀树设定一个节点数目限制,当后缀树的节点数目超过该门限时,需要对后缀树进行分裂;分裂时,将树根节点的所有子节点按照后缀的首字母分为两组,分别构建出一棵新的后缀树;记录下分布在每个子节点到根节点的边对应的字符串首字母,存储起来;当后缀树分裂后,每棵后缀树需要单独存储;随着时间的推移,那些长时间没有被访问的后缀树,可以回收以释放内存。...

【技术特征摘要】

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

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

1