专利名称:一种应用于分布式文件系统的元数据分簇管理方法和模块的制作方法
技术领域:
本发明涉及一种应用于分布式文件系统的元数据分簇管理方法和模块,该方法应用于分布式文件系统的元数据服务器集群中,属于计算机科学与技术领域。
背景技术:
随着云时代的到来,大数据也吸引了越来越多的关注,每天互联网上的数据以数亿的速度激增。这种数量级的数据量已经超出了一台计算机的处理能力,基于此,分布式文件系统技术被提出,它将元数据和数据分离,现有的分布式文件系统一般使用多台数据服务器存储具体数据,使用一台元数据服务器将数据的元数据信息(包括名字、大小、储存位置等)储存在内存中。由于用户每次访问文件之前,都要先向元数据服务器请求获取该文件的元数据,并发访问量巨大;同时随着元数据的激增,元数据服务器内存容量有限,这两方面的限制都导致单台元数据服务器将成为分布式文件系统的瓶颈。基于此,需要将单元数据服务器扩展成为一个元数据服务器集群,然而,对服务器集群中存储的元数据(服务器集群元数据)进行统一管理是一个挑战性的问题。在服务器集群元数据管理方面,哈希和目录子树分割是分布式文件系统中管理元数据的两个常用方法。哈希方法是以文件目录、名字或者其他相关属性值为键值,通过哈希函数计算相应的哈希值,然后建立哈希值与元数据存储的服务器映射表。哈希方法的优点是容易实现负载均衡,也支持高度并发访问,但是这种方法的缺点是很难将所有目录和文件组织成完整的层级结构展示给用户,增加了某些操作(如:获取一个目录的所有子目录)的实现难度,并且当增加或者减少元数据服务器时,哈希值随之改变,所有的元数据需要重新分布,这将造成大量元数据迁移,从而增大系统开销。目录子树分割方法是按照目录树划分为一棵棵目录子树,然后将目录子树分配到元数据服务器上存储,每台元数据服务器管理一棵或者多棵目录子树。目录子树分割方法简单易懂,由于目录树可以任意被拆分,因此元数据易于被分割到不同的服务器中存储。目录子树分割方法可以很容易地将所有子树组合成完整的目录树,以层级结构展示给用户,但是目录子树分割方法的缺点是在实现过程中不易于实现元数据存储的负载均衡。为了解决上述方法在管理上的缺点,本专利提出一种应用于分布式文件系统的元数据分簇管理方法和模块,不仅保留了传统的目录子树分割简单易行、易于扩展的优点,还保证了其在应用过程中的负载均衡。
发明内容
依据当前的技术背景和条件,并针对分布式文件系统中元数据扩展的特点和要求,本发明提出一种应用于分布式文件系统的元数据分簇管理方法和模块。本发明采用的技术方案如下:一、本发明结构
为了提高元数据存取速度,提升元数据存储容量,使用本发明的分布式文件系统采用多台服务器(元数据服务器集群)存储元数据(一棵元数据目录树),每台元数据服务器存储由元数据目录树分割出的一棵或多棵元数据目录子树;使用一台服务器(簇服务器)统一管理元数据服务器集群上存储的元数据目录子树。本发明提出“簇”的概念,元数据目录树被分割为一棵棵元数据目录子树,每棵目录子树称为一个簇。本发明由两大模块组成,如图1所示,分别为簇服务器和元数据服务器。簇服务器包括簇编号计数器、元数据服务器簇数管理表和簇映射关系表三个模块。元数据服务器包括元数据模块和目录计数表模块。使用本发明的分布式文件系统元数据的分簇管理原理如图2所示。元数据目录树被分割为几棵元数据目录子树,这些元数据目录子树被随机存储在几台元数据服务器上。簇服务器通过簇编号计数器、元数据服务器簇数管理表和簇映射关系表三个模块对存储在不同元数据服务器上的元数据目录子树进行统一管理。下面从模块的具体作用和工作流程来进一步对本发明进行说明。二、本发明模块作用在使用本发明的分布式文件系统中,每个元数据使用簇编号+文件编号作为其在整个文件系统中的唯一标识,其中簇编号(zone ID)是簇服务器为每棵子树分配的全局编号,文件编号(inode ID)是每个元数据服务器为存在于自己内存中的元数据分配的编号。下面介绍各模块的具体功能。簇服务器各模块功能如下:>簇编号计数器负责记录已使用的簇编号,在元数据服务器申请新簇时向元数据服务器派发簇编号,以避免出现簇编号重复。>元数据服务器簇数管理表负责统计每台元数据服务器上有多少个簇。当簇数目达到阈值时,簇服务器模块要另选一台元数据服务器建立新簇。>簇映射关系表是一张反映簇编号与元数据服务器IP地址映射关系的表格。每个表项表示编号为簇编号的子树存在于地址为IP的元数据服务器上。当知道一个文件或目录的元数据的簇编号时,客户端根据该表格快速定位元数据所在的元数据服务器。元数据服务器模块功能如下:>元数据模块,即存放元数据的模块,它的作用是存放一棵棵零散的目录子树,也即一个个簇。>目录计数表负责统计本台元数据服务器上每个簇下的目录数,当表项中记录的目录数达到阈值时,元数据服务器向簇服务器请求建立新簇。三、本发明执行流程客户端挂载到文件系统时,簇服务器首先将簇映射关系表和该文件系统的根目录元数据所在的元数据服务器IP地址发送给客户端。>访问目录或文件客户端访问一个目录或文件时,存储着根目录的元数据服务器按照文件的全路径,遍历根目录的下级目录和文件,查找客户端需要的下一级目录或文件。如果根目录的下级目录或文件与根目录存储在同一个元数据服务器上,该元数据服务器直接访问下级目录或文件;若下级目录存储在另一台元数据服务器上,则将根目录元数据中存储的该下级目录的簇编号发回给客户端,客户端查询簇映射关系表,向实际存储着下级目录元数据的元数据服务器发起查询请求。以此类推,直至找到所要访问的目录或文件。>创建文件由于创建文件不会带来创建新簇的问题,所以创建文件的过程比较简单。客户端首先通过访问目录的步骤找到所要创建的文件的父目录所在的元数据服务器,然后向该元数据服务器发送创建文件的请求,元数据服务器为要创建的文件分配一个文件编号,将文件创建在指定的父目录下。>创建目录首先客户端通过访问目录的步骤找到所要创建的目录的父目录所在的元数据服务器,向该元数据服务器提交创建目录申请。元数据服务器查看目录计数表的相关表项,看是否需要建立新簇;如果不需要,直接为该目录分配一个文件编号,将其创建在父目录下。如果需要建立新簇,元数据服务器向簇服务器申请簇编号,簇服务器首先查询元数据服务器簇数管理表,看此元数据服务器上的簇数是否达到阈值,以判断是否可以在此元数据服务器上建立新簇。如果可以,簇服务器直接将新建簇的簇编号发给元数据服务器,元数据服务器以该目录为根建立新簇。如果不可以在当前元数据服务器上建立新簇,簇服务器查询元数据服务器簇数管理表,找到簇数最少的元数据服务器,向簇数最少的元数据服务器发送建立新簇的命令和新簇编号。新的元数据服务器接到请求,在自己内存中建立以该目录为根的新簇。
图1元数据分簇管理结构示意2元数据分簇管理原理示意图
具体实施例方式为了说明这种服务器集群元数据的管理方式,下面给出一些操作的实例。一、访问文件nU/dl/fl存在于同一台元数据服务器MDSl中,其中dl为目录,fl为文件。执行下述步骤:I)客户端根据根目录元数据的位置访问MDS1,MDS1读取根目录的元数据,遍历根目录的下一级目录,查找dl并直接访问dl ;2)遍历dl下的所有文件,查找fl并直接访问fl,将fl的元数据发送到客户端。2、根目录/存在于元数据服务器MDS1,dl/f I存在于元数据服务器MDS2,其中,dl为目录,fl为文件,并且dl为根目录的下级目录。执行下述步骤:I)客户端根据根目录元数据的位置访问MDS1,读取根目录的元数据,MDSl遍历根目录下的目录,将dl的簇编号发给客户端;2)客户端根据dl的簇编号查找簇映射关系表,找到dl元数据所在的元数据服务器MDS2,向MDS2发送请求查找H ;
3)MDS2遍历dl下的文件,找到fl的元数据,返回给客户端。二、在/dl目录下创建文件f2,假设dl存在于元数据服务器MDSl上I)客户端按照上述目录查找方式找到目录/dl,向MDSl请求在/dl下创建文件f2 ;2)MDSl为f2分配一个文件编号,将其创建在目录/dl下。三、在/dl下创建目录d2,假设dl存在于元数据服务器MDSl上I)客户端按照访问文件的目录查找方式找到目录/dl,向MDSl发送创建目录的请求;2)MDSl查看自己的目录计数表,若没有达到上限,执行步骤3,若是达到上限,执行步骤4、5 ;3)MDSl为d2分配唯一的文件编号,并在/dl下建立d2目录。4) MDSl向簇服务器请求建立新簇的簇编号;5)簇服务器查看自己的元数据服务器簇数管理表,若MDSl上的簇数目未达到上限,执行步骤6,否则执行步骤7、8 ;6)簇服务器为MDSl分配新簇的簇编号,MDSl以d2为根建立新簇。7)簇服务器查询元数据服务器簇数管理表,找到簇数最少的元数据服务器MDS2,向MDS2发送建立新簇的命令和新簇的簇编号;8)MDS2为d2分配文件编号,建立以d2为根的新簇。
权利要求
1. 本发明提出“一种应用于分布式文件系统的元数据分簇管理方法和模块”,该发明通过引入“簇”的概念,添加簇服务器,集中管理元数据目录子树,同时对元数据服务器做相应的修改,克服了传统的子树分割方法负载不均衡的缺点。本发明的特点在于:本发明提出使用“簇编号+文件编号”作为每个元数据在整个分布式文件系统中的唯一标识。
2.本发明提出使用簇映射关系表记录簇编号与元数据服务器的一一对应关系,以快速定位所要查找的元数据所在的元数据服务器,提高访问速度。
3.本发明提出使用簇编号计数器统计元数据集群中已使用的簇编号,以避免分布式文件系统中簇编号的重复。
4.本发明提出使用元数据服务器簇数管理表记录每台元数据服务器上的簇数,一台元数据服务器上的已有簇数达到阈值时便不再在此元数据服务器上建立新簇,以避免该元数据服务器负载过重。
5.本发明提出目录计数表模块,每台元数据服务器使用一个目录计数表记录存在于本台服务器的每个簇下的目录数,以避免某个簇过于庞大,使得元数据服务器负载过重。
全文摘要
本发明提出一种应用于分布式文件系统的元数据分簇管理方法和模块。提出了簇的概念,即一棵独立的子树即是一个簇。在分布式文件系统中添加簇服务器,集中管理全局的元数据目录子树。簇服务器包括簇映射关系表、簇计数器和记录每台元数据服务器簇数的元数据簇数管理表,同时在元数据服务器上添加目录计数表,用以记录存在于本台服务器的每个簇下的目录数。通过这些模块的协作,解决了分布式文件系统中单台元数据服务器扩展为元数据服务器集群的元数据管理问题以及服务器集群元数据目录子树分割方法存在的负载不均衡的问题。
文档编号G06F17/30GK103198153SQ20131014810
公开日2013年7月10日 申请日期2013年4月25日 优先权日2013年4月25日
发明者陆月明, 及莹, 解晓伟 申请人:北京邮电大学