支持混合云存储应用的分布式文件系统及实现方法

文档序号:7552633阅读:222来源:国知局
专利名称:支持混合云存储应用的分布式文件系统及实现方法
技术领域
本发明属于通信技术领域,尤其涉及一种支持混合云存储应用的分布式文件系统及实现方法。
背景技术
云状存储系统是指通过集群、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。云状存储系统中的所有设备对使用者来讲都是完全透明的,任何地方的任何一个经过授权的使用者都可以通过网络与云状存储系统连接,对其进行数据访问。随着高性能计算及云计算技术的推广,国内众多城市已经或者计划建设超级计算中心和云计算中心。但从使用方式来看,超级计算中心往往还是采用传统的运营模式,即将运营的超级计算机部署在专有局域网环境,由管理员统一调度和配置,其上运行的高性能计算应用一般都具有计算密集或者数据密集等特点。而目前的云计算中心则不仅要能基于局域网下提供的资源访问服务(也即私有云服务),而且要能够基于因特网(internet)的服务访问接口(也即公有云服务)。目前国内外无论是超级计算中心还是云计算中心,它们所采用典型的存储解决方案为具有高性能的分布式文件系统或者企业级存储系统。也有部分互联网公司针对自身业务定制自己的分布式存储方案,比如google和amazon。对于私有云环境的云存储系统有两种构建方法,一种是传统的存储系统,比如企业级NAS和SAN,采用的是共享磁盘(share-disk)的方法;另外一种是分布式文件系统比如Google File system、Lustre 和 HDFS,采用的是 share-nothing (无共享)的方法。前者提供标准访问接口,从功能上可以扩展到公共云环境,但其扩展性不好。后者虽然具有很好的扩展性,但因为其配置繁琐使用复杂,往往只用于私有云环境服务特定应用程序。在公有云环境下一个较`为知名的云存储系统为Amazon S3网络存储服务平台,Web应用程序开发人员可以使用它存储数字信息,包括图片、视频、音乐和文档。S3提供一个RESTful API以编程方式实现与该服务的交互。开源分布式文件系统项目glusterfs采用开放的模块化框架,具有良好的横向扩张性,而且用户可以根据对可靠性和性能需求的不同,创建高可靠存储或者高性能存储。但glusterfs主要面向的还是企业NAS应用,只是在对数据的分布方式与复制机制上可以提供灵活的策略。如果考虑高性能计算或者其它应用,glusterfs就不是很适合。目前,无论超级计算中心,还是数据中心,抑或云计算中心,所部署的存储均还是以传统的企业级SAN/NAS为主。而基于分布式架构的分布式文件系统或者分布式对象存储也逐渐开始被广泛使用。然而,无论是集中式的SAN/NAS,还是分布式文件或分布式对象存储,都不能很好的解决在云存储环境下应用多样性、弹性分配、横向扩展性等问题。如果在一个计算系统中同时部署多套不同类型的存储系统用于服务不同的应用,倒是可以解决应用多样性的问题,但是这些不同类型的存储系统彼此之间是相互独立的,同时配置、管理及维护多套不同类型的存储系统使得整个计算系统愈发复杂,这会造成系统成本高、效率低,使用和维护复杂等问题;此外,弹性分配、横向扩展性等需求还是无法满足的,无法通过部署多套不同特点的存储系统来解决。

发明内容
本发明实施例的目的在于提供一种支持混合云存储应用的分布式文件系统,旨在解决现有技术只能部署单套存储系统,无法满足在云存储环境下对应用多样性、弹性分配、横向扩展性等需求的问题。本发明实施例的目的还在于提供一种支持混合云存储应用的分布式文件系统的实现方法,也旨在解决上述问题。本发明实施例是这样实现的,支持混合云存储应用的分布式文件系统,包括若干个不同类型的云状存储系统,所述分布式文件系统还包括:客户端模块,用于提供多种云状存储系统的标准访问接口、转发来自应用程序编程接口的请求及实现后端云状存储系统的创建和维护工作;分布式一致性缓存模块,用于缓存所述若干个不同类型的云状存储系统的信息;以及云状存储系统代理模块,通过封装所述若干个不同类型的云状存储系统的命令或者工具,用于创建和管理不同类型的云状存储系统,并提供通信接口给所述客户端模块;所述客户端模块、若干个不同类型的云状存储系统分别与云状存储系统代理模块连接。在一个可选的实施例中,所述分布式一致性缓存模块为若干不同类型的云状存储系统的共享物理存储资源,分别与若干个不同类型的云状存储系统连接。在一个可选的实施例中,所述客户端模块包括标准接口封装器、管理器和调度器;标准接口封装器用于提供所述若干个不同类型的云状存储系统的标准访问接口,并将来自应用程序编程接口的请求转发给管理器或者调度器;管理器用于实现所述若干个不同类型的云状存储系统的创建和维护工作;调度器用于实现来自应用程序编程接口的请求的分发工作。本发明实施例还提供了上述支持混合云存储应用的分布式文件系统的实现方法,其包括以下步骤:S1、在每一个客户机上面加载一个客户端模块;S2、通过客户端模块,将应用程序编程接口的请求发送给云状存储系统代理模块;由云状存储系统代理模块创建不同类型的云状存储系统,并将所创建的云状存储系统的信息发送给分布式一致性缓存模块缓存;S3、由客户端模块对不同类型的云状存储系统进行统一命名空间的初始化,所述分布式文件系统为一个根目录,所述若干个不同类型的云状存储系统分别设置在若干个一级子目录下。在一个可选的实施例中,所述步骤SI中,客户端模块在被初始加载的时候,首先访问分布式一致性缓存模块,获得当前的云状存储系统的信息,并根据获得的信息初始化当前命名空间。在一个可选的实施例中,所述步骤S2创建不同类型的云状存储系统的过程为:通过客户端模块将应用程序编程接口的请求进行转发,并转换成云状存储系统代理模块能够识别的数据包,然后将数据包发送给云状存储系统代理模块;由云状存储系统代理模块创建不同类型的云状存 储系统。
在一个可选的实施例中,所述客户端模块包括标准接口封装器、管理器和调度器,步骤S3对统一命名空间的初始化过程为:S31、客户端模块启动后,与分布式一致性缓存模块通信获得当前后端云状存储系统的信息;S32、管理器取得后端云状存储系统的信息以后,分别调用每个后端云状存储系统的客户端工具,挂载该云状存储系统至本地挂载点;S33、管理器将每个本地挂载点通过软链接的方式链入客户端模块的命名空间。本发明实施例与现有技术相比,有益效果在于:1、克服了现有技术要么只能实现单套云状存储系统的部署,要么需要人工的方式维护多套云状存储系统,均有一定局限性的缺陷;本发明简单实用,在不需要复杂的原理、设备的情况下,解决了混合云存储环境下不同云状存储系统的共存问题,易于维护。可以针对不同的应用类型和特点实现统一访问、智能调度和管理,大大提高了使用效率。采用按需服务管理存储系统的空间使用,可以促使成本优化,资源高效使用。2、混合云环境的特点是不同的应用具有不同的IO访问模式和特点,且对性能、可靠性、扩展性等的需求各不相同。本发明能同时满足以下需求:对于个人用户,需要利用网络存储实现个人数据存储和备份时,可以直接通过web界面完成操作,能高并发、实时地处理个人用户的数据访问;对于企业用户,可以把云存储当成一个企业级存储,保证数据的安全性和可靠性;对于高性能计算用户,存储一般采用分布式文件系统,能提供很高的聚合I/O带宽。3、本发明给用户呈现的是可以服务多样应用类型的一套统一存储系统,但不同的用户看到的是不同类型的存储系统。比如,高性能计算用户可以将其作为一个具备横向扩展性的高性能云状存储 系统;个人用户则可以将其作为可以在线进行数据存储和备份的网盘,等等。而在后台实现混合存储与智能管理,以合理的成本,将正确的数据,放在最适合的存储位置上,实现高效数据管理和存储优化,并提供无缝的扩展能力。4、具有良好的横向扩展性,适用于超级计算中心或云计算中心这类大规模云状存储系统。采用基于fuse的用户态文件系统方法,实现简单且不需对已有系统做太大改动。5、本发明还能删除所有的客户机都不再需要使用的云状存储系统,从而实现(支持)对整个分布式文件系统的动态维护管理。


图1是本发明实施例提供的分布式文件系统的统一命名空间示意图;图2是本发明实施例的用户态联邦文件系统组成示意图;图3是本发明实施例的分布式一致性缓存模块示意图;图4是本发明实施例通过fedFS创建后端DFS的流程图;图5是本发明实施例通过fedFS访问后端DFS的流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明的支持混合云存储应用的分布式文件系统,其主要应用场景为:由普通商用服务器构成的具有分布式架构的数据中心、超级计算中心或者云计算中心,系统中由多套不同特点(即不同类型)的云状存储系统构成,比如适用于高性能计算的Lustre或者ceph项目,适用于海量数据分析的HDFS项目,或者适用于具备横向扩展性的企业NAS方案glusterfs,这些不同类型的云状存储系统共享底层的物理存储资源(如本地磁盘、磁盘阵列等),根据上层应用需求动态申请和释放这些物理存储资源。本发明提出的分布式文件系统通过一种简单的实现方法能够整合多套各具特点的云状存储系统,实现不同云状存储系统的统一访问、调度与管理。本发明提出的分布式文件系统的实现方法主要原理为:在系统中由于存在多套不同的云状存储系统,因此具有多个不同的命名空间,通过采用联邦机制将不同的名字空间整合到统一命名空间。如图1,原来系统中同时存在云状存储系统FS1、FS2和FS3,用户在访问不同的云状存储系统的时候需要同时知道这三个不同的命名空间。通过联邦机制将三个命名空间整合到统一的空间,用户只看到这个统一(或者说是单一的)的命名空间。在这个统一的命名空间的根目录下,分别对应三个一级子目录,每一级子目录下面分别是FS1、FS2和FS3的命名空间。这样对用户来说,他看到的就是一个分布式文件系统:这个分布式文件系统为一个可以根据不用应用需求进行自我优化的自适应混合云存储系统。本发明分布式文件系统包括三个主要模块:分别是用户态联邦文件系统客户端模块、分布式一致性缓存模块和云状存储系统代理模块。如图2,用户态联邦文件系统客户端模块(以下简称fedFS)可以采用类似fuse这样的开源用户态文件系统开发包实现,主要包括三个子模块,分别是:标准接口封装器、管理器和调度器。标准接口封装器实现POSix兼容的多种云状存储系统标准访问接口,并将来自API (Application Programming Interface,应用程序编程接口)的请求转发给管理器或者调度器。管理器用于实现后端云状存储系统的创建和维护工作。调度器用于实现来自API的请求的分发工作。如图3,分布式一致性缓存模块(以下简称DCS)用于缓存系统中后端云状存储系统的信息,这个模块主要由多个Cache server (缓存服务器)组成,每个Cache server部署到一个服务器上面,该本服务器负责存储后台多个不同分布式文件系统的基本信息,例如元数据服务器所在节点机器名或IP地址,文件系统的挂载方式,存储空间总容量,已经使用量和在分布式文件基础之上通过不同配置参数如备份数而形成的存储子系统的信息;多个Cache server之间通过网络通信构成一个环,该构成的环能够提高系统的稳定性,多个服务器互为备份,单个服务器失效,其他服务器会承担该机器的相关任务。每个Cache server上缓存的是同一份信息,即系统中的后端云状存储系统的具体信息,包括类型、大小、位置及副本策略等。多个Cache server之间通过paxos算法保证在系统异步的情况下能够确保所存储的数据一致,即存储的是同一份信息。分布式一致性缓存模块在实现方案上可以采用类似Zookeeper这样的开源项目。云状存储系统代理模块(以下简称DFS Agent)通过封装后端云状存储系统的命令或者工具,用于创建和管理后端不同的云状存储系统,并提供通信接口给fedFS中的管理器。下面分别从系统部署、创建存储、使用存储、删除存储几个方面来说明本发明中实现方法的具体步骤:
1、系统部署,每一个客户机上面需要加载一个fedFS模块。fuseFS在被初始加载的时候,首先访问DCS模块中某个Cache server获得当前后端云状存储系统信息,并根据获得的信息初始化当前命名空间。Cache server用于缓存后端云状存储系统信息。每个Cache server保存的是同样的数据副本,多个Cache server同时运行可以保证服务的高可靠性。DFS Agent部署在系统中的控制节点(能够被客户机访问,也能访问后端所有存储节点)。2、创建不同类型的云状存储系统:通过客户端模块将应用程序编程接口的请求进行转发及转换成云状存储系统代理模块能够识别的数据包,并将数据包发送给云状存储系统代理模块;由云状存储系统代理模块完成云状存储系统的创建,并将所创建的云状存储系统的信息发送给分布式一致性缓存模块缓存。如图4,在最开始阶段,后端并没有任何云状存储系统(即图1所示统一命名空间根目录下面为空),通过fedFS发送创建(create)或者打开(open)操作,指定应用的特点与需求,API的请求通过fedFS的标准接口封装器,然后被转发到管理器,管理器将API的请求转换成DFS Agent能够识别的数据包并将数据包发送给DFS Agent。DFS Agent完成后台相应的云状存储系统创建之后,将对应的云状存储系统信息返回给fedFS的管理器,管理器在内存中缓存当前信息,并转发这些信息给DCS模块中的Cache server.
3、通过fedFS访问后端DFS的过程如图5所示;标准接口分装器屏蔽了底层不同文件系统访问方式的差异,简单过程如下:1应用程序通过调用fedFS的标准接口分装器,2该封装器确定此次调用涉及的文件系统DFS,并调用文件系统特有的访问接口,3 fedFS将调用通过本地进程通信的方式转发到DFSagent, 4 DFS agent通过DFS的元数据服务器获取数据实际存储节点信息5 DFS agent发送请求到数据存储节点,6存储节点返回数据到DFS agent, 7 DFS agent将数据返回到应用程序。如果fedFS是刚刚 启动,则需要对统一命名空间做初始化。统一命名空间初始化的详细步骤如下:S3 K fedFS启动以后,与DCS通信获得当前后端DFS信息。S32、管理器取得后端DFS信息以后,分别调用每个后端DFS的客户端工具挂载云状存储系统至本地挂载点。S33、管理器将每个挂载点通过软链接的方式链入fedFS的命名空间。至此,统一的命名空间建立成功。上述软链接可以为常见文件系统的一个基本技术,就是软链接文件中的文件内容是另外一个文件的路径,而普通文件的内容直接存储文件的数据。当后端云状存储系统已经被创建,且统一命名空间被初始化后,fedFS看到的统一命名空间如图1所示;此时就可以使用云状存储系统进行存储了。当应用初次使用fedFS的时候,它可以根据应用数据的特点和访问模式指定一些条件,fedFS的调度器分析这些条件以后在已有的后端DFS中为其分配目录,甚至重新分配DFS。4、删除云状存储系统。删除云状存储系统基本上就是创建云状存储系统的一个逆过程。首先确保当前没有任何应用在使用要被删除的后端DFS。然后要确保所有的客户节点已经卸载DFS。在此前提下,fedFS管理器向DFS Agent发送命令要求删除DFS,成功以后DCS每个cache server更新缓存信息。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作 的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种支持混合云存储应用的分布式文件系统,包括若干个不同类型的云状存储系统,其特征在于,所述分布式文件系统还包括: 客户端模块,用于提供多种云状存储系统的标准访问接口、转发来自应用程序编程接口的请求及实现后端云状存储系统的创建和维护工作; 分布式一致性缓存模块,用于缓存所述若干个不同类型的云状存储系统的信息;以及 云状存储系统代理模块,通过封装所述若干个不同类型的云状存储系统的命令或者工具,用于创建和管理不同类型的云状存储系统,并提供通信接口给所述客户端模块; 所述客户端模块、若干个不同类型的云状存储系统分别与云状存储系统代理模块连接。
2.如权利要求1所述的分布式文件系统,其特征在于,所述分布式一致性缓存模块为若干不同类型的云状存储系统的共享物理存储资源,分别与若干个不同类型的云状存储系统连接。
3.如权利要求1所述的分布式文件系统,其特征在于,所述客户端模块包括标准接口封装器、管理器和调度器;标准接口封装器用于提供所述若干个不同类型的云状存储系统的标准访问接口,并将来自应用程序编程接口的请求转发给管理器或者调度器;管理器用于实现所述若干个不同类型的云状存储系统的创建和维护工作;调度器用于实现来自应用程序编程接口的请求的分发工作。
4.如权利要求1所述的分布式文件系统,其特征在于,所述分布式一致性缓存模块包括多个缓存服务器,多个缓存服务器之间通过网络通信构成一个环,每个缓存服务器部署到一个服务器上。
5.权利要求1所述的分布式文 件系统的实现方法,其特征在于,包括以下步骤: 51、在每一个客户机上面加载一个客户端模块; 52、通过客户端模块,将应用程序编程接口的请求发送给云状存储系统代理模块;由云状存储系统代理模块创建不同类型的云状存储系统,并将所创建的云状存储系统的信息发送给分布式一致性缓存模块缓存; 53、由客户端模块对不同类型的云状存储系统进行统一命名空间的初始化,所述分布式文件系统为一个根目录,所述若干个不同类型的云状存储系统分别设置在若干个一级子目录下。
6.如权利要求5所述的实现方法,其特征在于,所述步骤SI中,客户端模块在被初始加载的时候,首先访问分布式一致性缓存模块,获得当前的云状存储系统的信息,并根据获得的信息初始化当前命名空间。
7.如权利要求5所述的实现方法,其特征在于,所述步骤S2创建不同类型的云状存储系统的过程为:通过客户端模块将应用程序编程接口的请求进行转发,并转换成云状存储系统代理模块能够识别的数据包,然后将数据包发送给云状存储系统代理模块;由云状存储系统代理模块创建不同类型的云状存储系统。
8.如权利要求5所述的实现方法,其特征在于,所述客户端模块包括标准接口封装器、管理器和调度器,步骤S3对统一命名空间的初始化过程为: S31、客户端模块启动后,与分布式一致性缓存模块通信获得当前后端云状存储系统的信息;S32、管理器取得后端云状存储系统的信息以后,分别调用每个后端云状存储系统的客户端工具,挂载该云状存储系统至本地挂载点; S33、管理器将每个本地挂载点通过软链接的方式链入客户端模块的命名空间。
9.如权利要求5所述的实现方法,其特征在于,所述客户端模块包括标准接口封装器、管理器和调度器,所述实现方法还包括: S4、删除云状存储系统:确认要被删除的云状存储系统,然后确认所有的客户节点均已经卸载该云状存储系统,最后客户端模块的管理器向云状存储系统代理模块发送命令删除云状存储系统,删除成功后 分布式一致性缓存模块更新缓存信息。
全文摘要
本发明适用于要满足在云存储环境下对应用多样性、弹性分配、横向扩展性等需求的超级计算中心或云计算中心等存储系统,提供了一种支持混合云存储应用的分布式文件系统及实现方法;其系统包括若干个不同类型的云状存储系统,用于提供多种云状存储系统的标准访问接口、转发来自应用程序编程接口的请求及实现后端云状存储系统的创建和维护工作的客户端模块,用于缓存不同类型的云状存储系统信息的分布式一致性缓存模块,以及通过封装云状存储系统的命令或者工具用于创建和管理不同类型的云状存储系统的云状存储系统代理模块,其中客户端模块、若干个不同类型的云状存储系统分别与云状存储系统代理模块连接。
文档编号H04L29/08GK103237046SQ201310058268
公开日2013年8月7日 申请日期2013年2月25日 优先权日2013年2月25日
发明者须成忠, 熊文, 黄伟 申请人:中国科学院深圳先进技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1