云存储及其分布式文件系统研究
邓见光 潘晓衡 袁华强 E-Works

随着信息化程度的不断提高,全球数据日益膨胀。面对当前PB级的海量数据存储需求,传统的存储系统在容量和性能的扩展上存在瓶颈。云存储以其扩展性强、性价比高、容错性好等优势得到了业界的广泛认同。云存储伴随着云计算产生,作为云计算的先驱,它很早就进入了广大研究人员的视野,由于其前瞻性,众多企业都将其作为进军云计算的第一步。


    文件系统 是操作系统的重要组成部分,用来管理和存储大量的文件信息,负责对文件的存储空间进行分配和管理,并对存人其中的文件进行保护和检索,同时为用户提供包括文件创建、删除、命名、读写、访问控制等一系列功能。此外,文件系统还可以根据存取权限及访问操作类型来指定用户对文件的存取。


    分布式文件系统除了具有本地文件系统的所有功能外,还必须管理整个系统中所有计算机上的文件资源,从而把整个分布式文件资源以统一的视图呈现给用户。此外,分布式文件系统还需要隐藏内部的实现细节,对用户和应用程序屏蔽各个计算机节点底层文件系统之间的差异,以提供给用户统一的访问接口和方便的资源管理手段 。很显然,作为一种典型的分布式系统,云存储需要分布式文件系统的底层支撑方能实现我们所希望的功能。


1 云计算技术


    目前学术界以及工业界对云计算还没形成一个统一的定义。在文献[3]中,云计算被定义为一个包含大量可用虚拟资源的资源池,该资源池一般由基础设施提供商按照服务等级协议采用按时付费或按需付费的模式进行开发管理,其中的虚拟资源根据不同负载进行动态配置,以达到优化资源利用率的目的。


    在一定程度上,我们可以认为云计算是分布式计算、并行计算和网格计算等计算概念的商业发展 ,其基本原理是用户通过互联网来应用计算机集群上的资源。通过本地计算机连接互联网向集群发送需求信息,远端的计算机集群资源收到用户需求信息后,将为该用户提供必要的资源并进行运算,最后将计算结果返回至本地计算机。在上述过程中,云计算向用户提供的并非计算资源,而是一种服务。云计算屏蔽了它的内部设备部署细节、网络接口以及运行在其上的软件运行机制,其只是把外部访问接口暴露给用户。用户不需要了解云的内部实现细节,只需要通过互联网连接其外部应用接口即可获得所需服务。


    云计算具有规模庞大、资源虚拟化、高可靠性、可扩展性、通用性、以用户为中心以及计费灵活等特点。云环境下,用户面对的不再是复杂的硬件和软件资源,而是最终所需的服务,用户从过去“购买产品”转变到“购买服务”上来;用户不需要购买硬件设施,也不需要为机房支付设备供电、空调制冷、专人维护等费用,而只需支付相应资源使用费用,即可得到相应服务。


    目前云计算技术发展迅速,和传统预先购置和部署设备的计算方式相比,其独特的按需付费和弹性扩展的资源供给方式具有明显的性能优势,因此,其必将成为未来最值得推广和应用的技术之一。


2 云存储系统


    云存储是实现云计算系统架构中的一个重要组成部分。随着信息技术的不断发展,全球数据规模日益膨胀。由于传统的SAN (Storage Arew Network) 或NAS(Network Attached Storage) 存储技术在存储容量和可扩展性上存在瓶颈,并且在硬件设备的部署数量上也存在一定限制,这使得用户升级系统的成本大大增加。云存储采用可扩展的分布式文件系统,并使用廉价的Pc机来进行系统部署,从而使得整体存储架构能够保持极低的成本。


    云存储是通过集群应用、网格技术、分布式文件系统等,将网络中大量类型各异的存储设备整合起来,并对外提供数据存储和业务访问功能的系统。简单来说,云存储是对虚拟化存储资源的管理和使用。云存储是存储领域一个新的概念,其目前已成为学术界和工业界的一个研究热点。区别于传统的存储技术,云存储提供了更好的可扩展性,当需增加存储能力时,只需添加服务器即可实现,而不需要对存储系统的结构进行重新设计;同时随着存储能力的增加,云存储系统的性能不会下降。


    云存储专注于解决云计算中海量数据的存储问题,它既可以给云计算技术提供专业的存储解决方案,又可以独立发布存储服务。云存储将存储作为服务,它将分别位于网络中不同位置的大量类型各异的存储设备通过集群应用、网格技术和分布式文件系统等集合起来协同工作,通过应用软件进行业务管理,并通过统一的应用接口对外提供数据存储和业务访问功能。在使用一个独立的存储设备时,我们需要了解该设备的型号、接口以及该设备所使用的传输协议;如果使用云存储,则不存在上述问题。对用户来说,云存储系统中的所有设备都是透明的,用户不必关心云存储系统内部是如何实现的,也无需了解存储的提供方式和底层基础,任何一个授权用户都可以通过网络来使用云存储系统提供的数据存储和业务访问服务。


    目前,云存储的兴起正在颠覆传统的存储系统架构,其正以良好的可扩展性、性价比和容错性等优势得到业界的广泛认同。

 


3 云存储分布式文件系统


    由上节讨论可知,云存储系统具有良好的可扩展性、容错性,以及内部实现对用户透明等特性,这一切都离不开分布式文件系统的支撑。现有的云存储分布式文件系统包括GFS、HDFS、Lustre、FastDFS、PVFS、GPFS、PFS、Ceph和TFS等。它们的许多设计理念类似,同时也各有特色。下面对现有的分布式文件系统进行详细介绍。


    3.1 Google File System (GFS)


    GFS是一个可扩展的分布式文件系统,其主要用于处理大的分布式数据密集型应用。GFS的一大特色就是其运行于大量普通的廉价硬件上,通过GFS文件系统提供容错功能,并给大量用户提供可处理海量数据的高性能服务。和传统标准相比,GFS文件规模巨大,其主要用来处理大文件。此外,GFS大多通过直接追加新数据来改变文件,而非覆盖现有数据,一旦数据写入完成,文件就仅支持读操作。

3.2 Lustre文件系统


    Lustre文件系统是一种典型的基于对象存储技术 的分布式文件系统, 目前,该文件系统已经广泛用于国外许多高性能计算机构,如美国能源部、Sandia国家实验室、Pacific Northwest国家实验室等。Top500机器中有多台均采用的是Lustre文件系统。
    Lustre文件系统的大文件性能良好 ,其通过基于对象的数据存储格式,将同一数据文件分为若干个对象分别存储于不同的对象存储设备。大文件I/O操作被分配到不同的对象存储设备上并行实施,从而实现很大的聚合带宽。此外,由于Lustre融合了传统分布式文件系统的特色和传统共享存储文件系统的设计理念,因此其具有更加有效的数据管理机制、全局数据共享、基于对象存储、存储智能化,以及可快速部署等一系列优点。尽管如此,由于Lustre采用分布式存储结构将元数据和数据文件分开存储,访问数据之前需要先访问元数据服务器,这一过程增加了网络开销,从而使得Lustre的小文件I/O操作性能较差。


    3.3 FastDFS文件系统


    FastDFS是一个轻量级分布式文件系统,其体系架构如图3所示,整个文件系统由客户端(Cli—ent)、跟踪器(Tracker)和存储节点(Storage)三部分组成。系统服务端有Tracker和Storage两个角色,Tracker用来负责作业的调度和负载均衡,Storage则用于存储文件,并负责管理文件。为支持大容量的数据存储,Storage采用分卷或分组的数据组织方式;存储系统可由一个或多个卷组成,一个卷可以由一台或多台存储服务器构建。同一个卷下的多台存储服务器中的数据文件都是相同的,卷与卷之间的文件则相互独立,通过这种数据组织方式,可以很好地实现数据冗余备份以及系统负载均衡的目的。

 

3.4 Parallel Virtual File System (PVFS)


    由Clemson大学设计并成功开发的PVFS是一种构建在Linux操作系统之上的开源并行虚拟文件系统。PVFS基于传统的C/S架构进行设计,整个文件系统由管理结点、计算结点和I/0结点三大部分组成,管理结点负责处理文件的元数据,计算节点用来执行各种计算任务,I/0结点则主要负责数据文件的存储和读写,并负责给计算结点提供所需的数据。在整个集群系统范围内,PVFS使用一致的全局命名空间,另外,PVFS应用对象存储的概念,将数据文件条块化为多个对象并分别存储到多个存储结点上。由于在网络通信方面,PVFS只支持TCP网络通信协议,这使得其灵活性不足;此外,由于PVFS应用对象存储的概念进行数据文件的存储,其在处理小文件时性能也不太理想。


    3.5 General Parallel File System (GPFS)
    GPFS的前身是Tiger Shark多媒体文件系统,其是IBM专为Linux集群系统设计的并行共享文件系统。在系统结构上,GPFS主要借鉴了IBM Linux集群系统中的虚拟共享磁盘技术,计算节点可以通过使用交换网络来同时并行访问系统中多个磁盘中的数据,并依赖这一访问方式来实现较高的I/O带宽。GPFS的主要特点包括:通过循环的方式将大文件存储在不同的磁盘上,同时通过合并操作来处理小文件的读写,使用动态选举的元数据结点来管理元数据;此外,GPFS还具有基于日志的失效节点的自动恢复策略以及集中式的数据锁机制。


    3.6 Parallel File System (PFS)


    Sun公司的PFS分布式文件系统可以很好地支持高性能和可扩展的I/O操作,其主要设计思想是将文件分布在多个磁盘和服务器上,并将存放文件的多个设备逻辑上看成一个虚拟磁盘来统一管理。很显然,PFS可以同时跨越多个存储系统,可以将整个PFS中的所有存储设备都看成是这个虚拟磁盘的一部分;当有多个节点同时访问同一文件时,PFS可以并行地为这些节点提供访问服务。PFS分布式文件系统构建于Solaris操作系统之上,主要包括宿主节点、计算节点、I/O从属节点和I/O主机节点。宿主节点是PFS提供给其它系统的人口,只有成功登录到宿主节点的用户才是合法的,才可以访问PFS内部的数据文件。计算节点主要用来管理PFS系统的通信和内存资源。L/O主机节点则主要负责文件系统的目录管理和存储块管理,同时为存储数据文件提供读写服务。I/O从属节点仅用来处理磁盘的读写操作和空白块的分配工作。

3.7 Ceph云存储文件系统


    Ceph是Califomia大学Santa Cruz分校的Sage Weil设计的一种云存储分布式文件系统。Ceph云存储文件系统的主要目标是设计基于POSIX的无节点故障分布式文件系统,并且数据文件具有容错和无缝复制功能。Ceph文件系统具有三大特点,首先,其使用多个元数据服务器来构建系统的命名空间,这显著强化了元数据服务器的并发访问功能;其次,在元数据服务器上,Ceph文件系统采用了动态的子树划分技术,并支持元数据服务器的负载迁移,可以很好地实现元数据的负载均衡;最后,Ceph文件系统提供基于对象存储设备的对象文件系统,并将数据文件作为一个存储对象来对待,这有效地提高了数据文件的读写效率。


    3.8 Taobao File System (TFS)


    Taobao file system (TFS)是由淘宝开发的云存储文件系统,其主要面向海量非结构化数据存储问题提供服务。TFS部署在普通的Linux集群上,为淘宝网提供高可靠、高并发的大量小文件数据存储服务。TFS采用扁平化的数据组织结构将文件名映射到文件的物理地址,简化了文件访问流程,一定程度上优化了系统读写性能。


    一个TFS集群由两个NameServer节点和多个DataServer节点组成,TFS的服务程序都是作为一个用户级的程序运行在普通Linux机器上。TFS将众多的小文件合并成大文件,并称这个大文件为Block,Block存储在DataServer上,每个Block在TFS系统内均拥有唯一的Id号。NameServer负责维护block与DataServer之间的映射关系。NameServer采用HA结构,即双机互为热备份,来实现容灾功能,两台NameServer同时运行,其中一台为主节点,另外一台作为备用节点。当主NameServer节点出现故障后,迅速将备份NameServer切换为主节点并对外提供服务。


4 结语
    自云计算技术出现以来,随着科学技术的不断发展,以及学术界和工业界的不断推进,云计算应用不断发展壮大,云存储也逐渐从理论走向实践。本文首先对云计算技术进行介绍,然后引出云存储的概念,并对云存储的技术原理、性能优势等进行分析,同时指出分布式文件系统是实现云存储系统高可扩展、高容错性、高性价比等一系列性能优势的基础保障。最后对现有的云存储分布式文件系统进行详细而深入的讨论。在云存储的发展和应用过程中,近年来不断有新的热点出现并被广泛讨论和研究,如云存储数据中心部署、云存储QoS控制、用户请求区分、数据副本策略以及调度机制等很多方面。本文工作将为我们对云存储技术进行更深入的研究提供基础支撑。

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢