基于gfs的分布式文件系统的元数据分级存储方法和系统的制作方法

文档序号:7871230阅读:234来源:国知局
专利名称:基于gfs的分布式文件系统的元数据分级存储方法和系统的制作方法
技术领域
本发明涉及分布式存储相关的技术,尤其涉及内容分发网络中基于GFS的分布式文件系统中和元数据相关的分级存储方法和系统。
背景技术
随着互联网应用的种类越来越多,面对不断增长的互联网用户,也带来了不同的不断增长的海量数据。如何提高存储和处理这些海量数据的能力,对于互联网企业是一个巨大的技术挑战。为了解决海量数据存储问题,分布式文件系统应运而生。基于分布式文件系统架构提供存储服务能够充分利用现有的低端硬件设备的处理能力,并提高了用户访问存储的效率和存储服务的可靠性。市面上各种分布式文件系统种类繁多,层出不穷,其中包括了 Google的核心存储平台 GFS (Google 文件系统),Apache 开源社区的 Hadoop,以及 glusterFS、lustre、GPFS(General Parallel File System)等。分布式文件系统的元数据处理方式包括三大类,如GFS、lustre使用的是中央控制元数据服务器,GPFS使用的是分布式元数据服务器模型,glusterFS使用的是无元数据模型。其中以GFS为典型代表的分布式文件系统采用的是服务器/客户端结构,如图1所示,主要组成部分包括元数据服务器master (主服务器)、数据服务器chunk server和客户端c I i ent,三者之间通过各自的网络协议进行指令和数据通信。客户端client可以看作是分布式文件系统的接口,负责应用程序与文件系统的沟通。文件划分成固定大小的chunk,每个chunk由一个64bit的chunk handle唯一标识,由主服务器master创建时分配。所有的客户端client读取文件的时候,都需要首先从主服务器master上获取元数据信息(如图1所示master与client之间的元数据传输),获取到元数据信息之后解析得到数据所在的数据服务器chunk server的ip和chunk的id,根据这些信息进一步与数据服务器chunk server进行交互(如图1所示client与chunkserver之间的数据传输),读取得到所需要的数据。数据服务器chunk server负责存储文件的chunk,根据client提供的chunk信息,读写chunk数据,周期性地向master报告本地存储的chunk状态信息。数据服务器chunk server用于存储的磁盘信息是可配置的,可以将数据服务器chunk server进程所在的服务器的多个disk配置到数据服务器chunk server的管控范围内,用于提供存储。并且数据服务器chunk server之间可以相互复制chunk的副本,这一点有利于提高系统的可靠性。元数据存储在主服务器master上,包括命名空间、访问控制信息、文件到chunk的映射、当前chunks的位置信息等,主服务器master与每个数据服务器chunk server间使用如图1所示的指令交互(管理信息/状态信息)周期地通信,发送管理信息指令到数据服务器chunk server并接收数据服务器chunk server的状态信息。中央控制元数据服务器模式的分布式文件系统结构图如图1所示,其中粗实线表示数据/元数据交互,细实线表示指令交互(管理信息、状态信息)。图2示出了传统的中央控制元数据服务器模式下主服务器master处理客户端请求元数据信息的流程。首先,主服务器接收到客户端发送过来的请求包,解析请求包,如果该请求的操作为读取文件的位置信息的请求,则检查内存中是否存在该文件的元数据信息;如果在内存中找到该文件的元数据信息,则直接将该文件的元数据(位置)信息打包返回给客户端;如果不存在该文件的元数据信息,则打包“no file”或“no chunk ”等相关的错误信息返回给客户端;客户端接收到主服务器的数据包进行解析之后,判断是否去读取实际的数据。在这种分布式文件系统中,主服务器master把所有的元数据信息都保存在内存中,对于有大量小文件的存储需求,单个master的模式往往力不从心,因此对于主服务器master的内存要求很高,并且大量的元数据信息也导致系统的存储访问性能降低。另外,在可靠性方面也存在单一失效点问题,如果主服务器master失效,整个系统将无法正常工作。因此,系统存储访问性能与可靠性上的瓶颈是中央控制元数据服务器模式固有的缺点。

发明内容
本发明的目的在于解决上述问题,提供了一种基于GFS的分布式文件系统的元数据分级存储方法和系统,减少主服务器master的内存压力和瓶颈,从而提高分布式文件系统的存储访问性能和可靠性。并且将元数据信息分级存储,既能最大限度地满足用户需求,又可使存储成本最小化。本发明的技术方案为:本发明揭示了一种基于GFS的分布式文件系统的元数据分级存储方法,包括:客户端连接存储元数据信息的主服务器,发送询问读取文件位置信息的请求包;主服务器解析接收到的请求包;若请求的操作为读取文件位置信息的请求,主服务器检查内存中是否存在文件的元数据信息,若有则直接将文件的元数据信息返回给客户端;若内存中不存在文件的元数据信息,则主服务器加载固盘中的元数据信息到内存中,并判断固盘中是否存在文件的元数据信息,若存在则将文件的元数据信息返回给客户端,若不存在则返回错误信息给客户端;客户端根据主服务器返回的元数据信息,连接对应的数据服务器,向数据服务器发送读取数据的请求;数据服务器接收到请求后,向客户端提供真实的数据。根据本发明的基于GFS的分布式文件系统的元数据分级存储方法的一实施例,近期使用的文件的元数据信息存储在主服务器的内存中,暂时不会被使用到的文件的元数据信息存储在固盘中,长期不会被访问的文件的元数据信息存储在磁盘中。本发明还揭示了一种基于GFS的分布式文件系统的元数据分级存储系统,包括主服务器、客户端、多个数据服务器,其中:客户端包括主服务器交互模块、数据服务器交互模块,其中:主服务器交互模块连接主服务器,向存储元数据信息的主服务器发送询问读取文件位置信息的请求包,接收主服务器返回的元数据信息;
数据服务器交互模块连接数据服务器,向数据服务器发送读取数据的请求,接收数据服务器提供的数据;主服务器包括请求包接收解析模块、内存数据查询模块、固盘数据查询模块、元数据信息发送模块,其中:请求包接收解析模块解析接收到的请求包并判断请求的操作是否为读取文件位置信息的请求;内存数据查询模块检查内存中是否存在文件的元数据信息,若有则启动元数据信息发送模块;固盘数据查询模块加载固盘中的元数据信息到内存中,并判断固盘中是否存在文件的元数据信息,若存在则启动元数据信息发送模块;元数据信息发送模块将文件的元数据信息返回给客户端,若不存在文件的元数据信息则返回错误信息给客户端。根据本发明的基于GFS的分布式文件系统的元数据分级存储系统的一实施例,近期使用的文件的元数据信息存储在主服务器的内存中,暂时不会被使用到的文件的元数据信息存储在固盘中,长期不会被访问的文件的元数据信息存储在磁盘中。根据本发明的基于GFS的分布式文件系统的元数据分级存储系统的一实施例,主服务器的数量为多个且彼此之间的任务不发生重叠,每一元数据独立对应部分文件的读写,客户端还包括一哈希处理模块,对文件名进行哈希处理并根据处理结果的结构选择对应的主服务器。本发明对比现有技术有如下的有益效果:本发明的方案是结合CDN多级缓存技术的特性,设计并实现了基于GFS的分布式文件系统的元数据分级存储方法。采用分布式文件系统提供源站服务,通过分级存储主服务器master的元数据信息,也就是在主服务器master启动时将最近一段时间(I个月或者I周)的文件的元数据信息这部分保存在内存中,一些暂时不会被使用到的元数据信息保存在固盘中,还有一些长期都不会被访问的数据还可以直接存储在磁盘中,通过这种元数据存储的分级来减少了 master大量元数据信息造成的内存压力和瓶颈。相较于现有技术,本发明取得了良好的技术效果:(I)减少总体存储成本:不经常访问的数据保存在较低成本的存储器中,需要经常访问的数据才存放在内存中。能使重要数据和常用数据在最短的时间内访问到,使极少使用的数据备份在廉价的海量存储器中。(2)性能优化:分级存储可使不同性价比的存储设备发挥最大的综合效益,分级存储把很少被访问的数据迁移到访问速度较低的存储器中,从而减少了主服务器master的内存压力,并且检索的元数据总量降低,也能够达到提供性能的优点。(3)数据迁移对应用透明:进行分级存储后,数据移动(速度低的存储设备和速度高的存储设备之间的数据转移)时,应用程序不需要改变,即数据迁移对应用透明。


图1示出了传统的中央控制元数据服务器模式的分布式文件系统的结构图。图2示出了传统的中央控制元数据服务器模式下主服务器master处理客户端请求元数据信息的流程图。
图3示出了本发明的基于GFS的分布式文件系统的元数据分级存储系统的较佳实施例的系统结构图。图4A、4B分别示出了图3所示的系统实施例中的客户端和主服务器的细化原理图。图5示出了本发明的基于GFS的分布式文件系统的元数据分级存储方法的较佳实施例的流程图。
具体实施例方式下面结合附图和实施例对本发明作进一步的描述。图3示出了本发明的基于GFS的分布式文件系统的元数据分级存储系统的较佳实施例的系统结构。请参见图3,本发明的系统由主服务器masterl、客户端(client)2、多个数据服务器(chunk server) 3组成。其中主服务器I和客户端2之间,主服务器I和多个数据服务器3之间,都有指令交互过程,数据服务器3和客户端2之间有数据交过过程。图5示出了本发明的基于GFS的分布式文件系统的元数据分级存储方法的较佳实施例的流程。本实施例的元数据分级存储方法是在图3所示的系统结构之上实现的,请同时参见图3和图5,下面是对方法的实施步骤的详细描述。步骤SlOO:客户端连接存储元数据信息的主服务器,发送询问读取文件位置信息的请求包。步骤SlOl:主服务器接收来自客户端的请求包。步骤S102:主服务器解析接收到的请求包。步骤S103:检查请求的操作是否为读取文件位置信息的请求,若是则转入下一
止/J/ O步骤S104:主服务器检查内存中是否存在文件的元数据信息,若存在则转入步骤S108,若不存在则转入步骤S105。步骤S105:主服务器加载固盘中的元数据信息到内存中。在文件进行分级存储的实现中,通常将近期使用的文件的元数据信息存储在主服务器的内存中,将暂时不会被使用到的文件的元数据信息存储在固盘中,将长期不会被访问的文件的元数据信息存储在磁盘中。步骤S106:主服务器判断固盘中是否存在文件的元数据信息,若存在则转入步骤S108,若不存在则转入步骤S107。步骤S107:返回错误信息给客户端。步骤S108:主服务器将文件的元数据信息返回给客户端,转入步骤S109。步骤S109:客户端根据主服务器返回的元数据信息,连接对应的数据服务器,向数据服务器发送读取数据的请求。步骤SllO:数据服务器接收到请求后,向客户端提供真实的数据。图4A和4B分别示出了图3所示的系统实施例中的客户端和元数据服务器的细化原理。请同时参考图3、图4A和4B,客户端2包括主服务器交互模块20和数据服务器交互模块22。主服务器I包括请求包接收解析模块10、内存数据查询模块12、固盘数据查询模块14、元数据信息发送模块16。主服务器I采用分级存储的技术,这借用了网络缓存技术,网络缓存技术是通过减少网络中冗余数据的重复传输,将广域传输转为本地或就近访问。在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术。缓存技术就是将大部分网页对象(Web page object),如html, htm, php等页面文件,gif, tif,png,bmp等图片文件,以及其他格式的文件,在有效期(TTL)内缓存在缓存服务器上,对于重复的访问,不必每次都从源站重新传送文件实体。内容缓存技术不仅有效降低了回源量,而且能够解决总存储量大、请求数多、回源相对较大等问题。在内容分发网络(CDN)中,内容缓存采用的是多级缓存技术,多级缓存通过在不同的物理位置部署多台的缓存服务器,逻辑上采用分层模式,上层缓存作为下一层缓存的内容存储器,保证及时向下一级缓存提供所需的内容,直接向用户提供服务的缓存服务器只需要向上一层的缓存服务器请求内容,而不用直接从源站获取内容。如下图所示,如果客户端本地缓存未命中,则继续向第二级的缓存请求数据,如果缓存命中,则第二级缓存直接把文件提供给客户,只有缓存未命中的情况下才需要向上一级别的缓存请求所需要的内容,例如第二级缓存向第一级缓存请求服务,如果第一级缓存命则提供文件给二级缓存,若仍然未命中才会向源站请求服务,然而会导致这种连续未命中的情况一般只有最近增加的文件请求才会的,因此,一般情况下,源站上只有最近的数据才会被访问。而在本发明中,类似于上述的网络缓存技术,本实施例将近期使用的文件的元数据信息存储在主服务器I的内存中,将暂时不会被使用到的文件的元数据信息存储在固盘中,将长期不会被访问的文件的元数据信息存储在磁盘中。主服务器交互模块20连接主服务器1,向存储元数据信息的主服务器I发送询问读取文件位置信息的请求包,接收主服务器I返回的元数据信息。 主服务器I中的请求包接收解析模块10解析接收到的请求包并判断请求的操作是否为读取文件位置信息的请求。内存数据查询模块12检查内存中是否存在文件的元数据信息,若有则启动元数据信息发送模块16。固盘数据查询模块14加载固盘中的元数据信息到内存中,并判断固盘中是否存在文件的元数据信息,若存在则启动元数据信息发送模块16。元数据信息发送模块16将文件的元数据信息返回给客户端2,若不存在文件的元数据信息则返回错误信息给客户端2。数据服务器交互模块22连接数据服务器3,向数据服务器3发送读取数据的请求,接收数据服务器3提供的数据。不同于上述的实现方式,还可以有以下的实现:主服务器的数量为多个且彼此之间的任务不发生重叠,每一元数据独立对应部分文件的读写,客户端还包括一哈希处理模块,对文件名进行哈希处理并根据处理结果的结构选择对应的主服务器。上述实施例是提供给本领域普通技术人员来实现和使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书所提到的创新性特征的最大范围。
权利要求
1.一种基于GFS的分布式文件系统的元数据分级存储方法,包括: 客户端连接存储元数据信息的主服务器,发送询问读取文件位置信息的请求包; 主服务器解析接收到的请求包; 若请求的操作为读取文件位置信息的请求,主服务器检查内存中是否存在文件的元数据信息,若有则直接将文件的元数据信息返回给客户端; 若内存中不存在文件的元数据信息,则主服务器加载固盘中的元数据信息到内存中,并判断固盘中是否存在文件的元数据信息,若存在则将文件的元数据信息返回给客户端,若不存在则返回错误信息给客户端; 客户端根据主服务器返回的元数据信息,连接对应的数据服务器,向数据服务器发送读取数据的请求; 数据服务器接收到请求后,向客户端提供真实的数据。
2.根据权利要求1所述的基于GFS的分布式文件系统的元数据分级存储方法,其特征在于,近期使用的文件的元数据信息存储在主服务器的内存中,暂时不会被使用到的文件的元数据信息存储在固盘中,长期不会被访问的文件的元数据信息存储在磁盘中。
3.一种基于GFS的分布式文件系统的元数据分级存储系统,包括主服务器、客户端、多个数据服务器,其中: 客户端包括主服务器交互模块、数据服务器交互模块,其中: 主服务器交互模块连接主服务器,向存储元数据信息的主服务器发送询问读取文件位置信息的请求包,接收主服务器返回的元数据信息; 数据服务器交互模块连接数据服务器,向数据服务器发送读取数据的请求,接收数据服务器提供的数据; 主服务器包括请求包接收解析模块、内存数据查询模块、固盘数据查询模块、元数据信息发送模块,其中: 请求包接收解析模块解析接收到的请求包并判断请求的操作是否为读取文件位置信息的请求; 内存数据查询模块检查内存中是否存在文件的元数据信息,若有则启动元数据信息发送模块; 固盘数据查询模块加载固盘中的元数据信息到内存中,并判断固盘中是否存在文件的元数据信息,若存在则启动元数据信息发送模块; 元数据信息发送模块将文件的元数据信息返回给客户端,若不存在文件的元数据信息则返回错误信息给客户端。
4.根据权利要求3所述的基于GFS的分布式文件系统的元数据分级存储系统,其特征在于,近期使用的文件的元数据信息存储在主服务器的内存中,暂时不会被使用到的文件的元数据信息存储在固盘中,长期不会被访问的文件的元数据信息存储在磁盘中。
5.根据权利要求3所述的基于GFS的分布式文件系统的元数据分级存储系统,其特征在于,主服务器的数量为多个且彼此之间的任务不发生重叠,每一元数据独立对应部分文件的读写,客户端还包括一哈希处理模块,对文件名进行哈希处理并根据处理结果的结构选择对应的主服务器。
全文摘要
本发明公开了基于GFS的分布式文件系统的元数据分级存储方法和系统,减少主服务器master的内存压力和瓶颈,从而提高分布式文件系统的存储访问性能和可靠性。并且将元数据信息分级存储,既能最大限度地满足用户需求,又可使存储成本最小化。其技术方案为采用分布式文件系统提供源站服务,通过分级存储主服务器master的元数据信息,也就是在主服务器master启动时将最近一段时间的文件的元数据信息这部分保存在内存中,一些暂时不会被使用到的元数据信息保存在固盘中,还有一些长期都不会被访问的数据还可以直接存储在磁盘中,通过这种元数据存储的分级来减少了master大量元数据信息造成的内存压力和瓶颈。
文档编号H04L29/08GK103078936SQ20121059200
公开日2013年5月1日 申请日期2012年12月31日 优先权日2012年12月31日
发明者洪珂, 陈进贤, 周国美 申请人:网宿科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1