多种集群文件系统的介绍及分析1.什么是集群文件系统“集群”主要分为高性能集群HPC(HighPerformanceCluster)、高可用集群HAC(HighAvailablityCluster)和负载均衡集群LBC(LoadBalancingCluster)。集群文件系统是指协同多个节点提供高性能、高可用或负载均衡的文件系统,消除了单点故障和性能瓶问题。对于客户端来说集群是透明的,它看到是一个单一的全局命名空间,用户文件访问请求被分散到所有集群上进行处理。此外,可扩展性(包括Scale-Up和Scale-Out)、可靠性、易管理等也是集群文件系统追求的目标。在元数据管理方面,可以采用专用的服务器,也可以采用服务器集群,或者采用完全对等分布的无专用元数据服务器架构。目前典型的集群文件系统有SONAS,ISILON,IBRIX,NetAPP-GX,Lustre,PVFS2,GlusterFS,GoogleFileSystem(GFS),LoongStore,CZSS等。2.集群文件系统的三种主流技术架构从整体架构来看,集群文件系统由存储子系统、NAS集群(机头)、客户端和网络组成。存储子系统可以采用存储区域网络SAN、直接连接存储DAS或者面向对象存储设备OSD的存储架构,SAN和DAS架构方式需要通过存储集群来管理后端存储介质,并以SAN文件系统或集群文件系统的方式为NAS集群提供标准文件访问接口。在基于OSD架构中,NAS集群管理元数据,客户端直接与OSD设备直接交互进行数据访问,这就是并行NAS,即pNFS/NFSv4.1。NAS集群是NFS/CIS网关,为客户端提供标准文件级的NAS服务。对于SAN和DAS架构,NAS集群同时承担元数据和I/O数据访问功能,而OSD架构方式仅需要承担元数据访问功能。根据所采用的后端存储子系统的不同,可以把集群NAS分为三种技术架构,即SAN共享存储架构、集群文件系统架构和pNFS/NFSv4.1架构。2.1SAN共享存储架构这种架构(如图1所示)后端存储采用SAN,所有NAS集群节点通过光纤连接到SAN,共享所有的存储设备,通常采用SAN并行文件系统管理并输出POSIX接口到NAS集群。SAN并行文件系统通常需要元数据控制服务器,可以是专用的MDC,也可以采用完全分布的方式分布到SAN客户端上。NAS集群上安装SAN文件系统客户端即可实现对SAN共享存储的并发访问,然后运行NFS/CIFS服务为客户端提供服务。这里前端网络采用以太网,后面存储连接则采用SAN网络,此种架构目前在业内最为稳定、成熟的存储架构。是由原有的DAS、NAS、SAN技术发展出来的。可以为用户提供:1、丰富的主机接口,满足不同主机对存储性能、容量的不同需求;2、多协议支持,满足众多应用的对存储的要求;3、性能随着集群节点的增加,性能也随着线性增加。满足了横向扩展的需求;4、上层应用与底层架构分离,适用于不同的用户应用环境;图1SAN共享存储集群NAS架构由于采用了高性能的SAN存储网络,这种集群NAS架构可以提供稳定的高带宽和IOPS性能,而且可以通过增加存储盘阵或NAS集群节点实现存储容量和性能单独扩展。客户端可以直接连接具体的NAS集群节点,并采用集群管理软件来实现高可用性。2.2集群文件系统架构这种架构(如图3所示)后端存储采用DAS,每个存储服务器直连各自的存储系统,通常为一组SATA磁盘,然后由集群文件系统统一管理物理分布的存储空间而形成一个单一命名空间的文件系统。实际上,集群文件系统是将RAID、Volume、FileSystem的功能三者合一了。目前的主流集群文件系统一般都需要专用元数据服务或者分布式的元数据服务集群,提供元数据控制和统一名字空间,当然也有例外,如无元数据服务架构的GlusterFS。NAS集群上安装集群文件系统客户端,实现对全局存储空间的访问,并运行NFS/CIFS服务对外提供NAS服务。NAS集群通常与元数据服务集群或者存储节点集群运行在相同的物理节点上,从而减少物理节点部署的规模,当然会对性能产生一定的影响。与SAN架构不同,集群文件系统可能会与NAS服务共享TCP/IP网络,相互之间产生性能影响,导致I/O性能的抖动。诸如ISILON等集群文件系统存储节点之间采用InfiniBand网络互联,可以消除这种影响,保持性能的稳定性。图3集群文件系统集群NAS架构在这种架构下,集群NAS的扩展通过增加存储节点来实现,往往同时扩展存储空间和性能,很多系统可以达到接近线性地扩展。客户端访问集群NAS的方式与第一种架构方式相同,负载均衡和可用性也可以采用类似的方式。由于服务器和存储介质都可以采用通用标准的廉价设备,在成本上有一定优势,规模可以很大。然而,这类设备是非常容易发生故障的,服务器或者磁盘的损坏都会导致部分数据不可用,需要采用HA机制保证服务器的可用性,采用复制保证数据的可用性,这往往会降低系统性能和存储利用率。另外,由于服务器节点比较多,这种架构不太适合产品化,可能更加适合某种应用的存储解决方案(如谷歌地图服务应用自行开发的GFS)。用这种架构的集群NAS典型案例包括谷歌文件系统GFS、EMCISILON、龙存LoongStore、九州初志CZSS、美地森YFS等。2.3pNFS/NFSv4.1架构这种架构(如图5所示)实际是并行NAS,即pNFS/NFSv4.1,RFC5661标准已于2010.01获得批准通过。它的后端存储采用面对对象存储设备OSD,支持FC/NFS/OSD多种数据访问协议,客户端读写数据时直接与OSD设备相互,而不像上述两种架构需要通过NAS集群来进行数据中转。这里的NAS集群仅仅作为元数据服务,I/O数据则由OSD处理,实现了元数据与数据的分离。这种架构更像原生的并行文件系统,不仅系统架构上更加简单,而且性能上得到了极大提升,扩展性非常好。图5pNFS/NFSv4.1集群NAS架构显而易见,这种架构与上述两种有着本质的区别,pNFS采用元数据集群解决了传统NAS的单点故障和性能瓶颈问题,元数据与数据的分离则解决了性能和扩展性问题。然而,毕竟pNFS标准获得批准才一年,目前还没有成熟的产品实现,OSD存储设备发展多年也没有得到市场广泛认可和普及。Panasas公司的PanFS(图6)应该是最接近于这种集群NAS架构,当然Panasas也是pNFS标准的主要制定者之一。目前很多存储公司都在研发pNFS产品,比如BlueArc。3.多种集群文件系统的介绍3.1Lustre文件系统Lustre[5]文件系统是一个基于对象存储的分布式文件系统,并且与PVFS一样,Lustre也是一个开源项目。Lustre项目与1999年在CarnegieMellonUniversity启动,现在已经发展成为应用最广泛的分布式文件系统。Lustre已经运行在当今世界上最快的集群系统里面,比如BuleGene,RedStorm等计算机系统,用来进行核武器相关的模拟,以及分子动力学模拟等等非常关键的领域。Lustre的组织结构在其官方文档中有详细的介绍,如图5.5所示,Lustre集群组件包含了MDS(元数据服务器)、MDT(元数据存储节点)、OSS(对象存储服务器)、OST(对象存储节点)、Client(客户端),以及连接这些组件的高速网络。1)元数据存储与管理。MDS负责管理元数据,提供一个全局的命名空间,Client可以通过MDS读取到保存于MDT之上的元数据。在Lustre中MDS可以有2个,采用了Active-Standby的容错机制,当其中一个MDS不能正常工作时,另外一个后备MDS可以启动服务。MDT只能有1个,不同MDS之间共享访问同一个MDT。2)文件数据存储与管理。OSS负载提供I/O服务,接受并服务来自网络的请求。通过OSS,可以访问到保存在OST上的文件数据。一个OSS对应2到8个OST,其存储空间可以高达8TB。OST上的文件数据是以分条的形式保存的,文件的分条可以在一个OSS之中,也可以保存在多个OSS中。Lustre的特色之一是其数据是基于对象的职能存储的,跟传统的基于块的存储方式有所不同。3)Lustre系统访问入口。Lustre通过Client端来访问系统,Client为挂载了Lustre文件系统的任意节点。Client提供了Linux下VFS(虚拟文件系统)与Lustre系统之间的接口,通过Client,用户可访问操作Lustre系统中的文件。Lustre集群中的各个节点通过高速的以太网或QuadricsElan、Myrinet等多种网络连接起来。(点击查看大图)图5.6Lustre文件系统架构在Lustre官方手册中给出了Lustre文件系统的架构,如图5.6所示。Lustre文件系统也是一个3方架构,包括了MDS、OSS和Client这3个模块。文件的打开(open)和关闭(close)、元数据以及并发访问控制都在Client和MDS之间进行;文件I/O操作以及文件锁在OSS和Client之间进行;文件备份,文件状态获取以及文件创建等在MDS和OSS之间进行。目前Lustre文件系统最多可以支持100000个Client,1000个OSS和2个MDS节点。同PVFS类似,Lustre系统中既可以运行一个功能模块,也可以同时运行2个或3个功能模块,这取决于系统的规模。不过Lustre一般运行于高性能计算机系统之上,为了提高Lustre文件系统的性能,通常MDS、OSS和Client是分开运行在Lustre不同的节点之上的。实验与应用已经证明,Lustre文件系统的性能和可扩展性都不错。不仅如此,Lustre文件系统还拥有基于对象的智能化存储、安全的认证机制、比较完善的容错机制等优点,值得注意的是,Lustre还实现了部分文件锁。Lustre确保从不同Client端挂载的Lustre文件系统看到的都是一个单一的、同步的、一致的命名空间。由于Lustre部分锁机制的存在,多个Client端在同一时间点可以写同一文件的不同区域,其它Client则可以读取文件的其它区域。由于部分文件锁的存在,极大的提高了多用户对同一文件进行并发访问时系统的性能,对同一文件并发访问这在像数据库这种应用里是极为常见的。相对于PVFS,Lustre的可用性和扩展性以及性能上都有较大的提高。然而,Lustre需要特殊设备的支持,并且Lustre目前还没实现MDS的集群管理,虽然相比PVFS的单MDS,Lustre的双MDS在可用性上还是提高不少,但是当系统达到一定的规模之后,MDS还是很有可能成为Lustre系统中的瓶颈。3.2Panasas文件系统PanFS[6](PanasasFileSystem)是Panasas公司用于管理自己的集群存储系统的分布式文件系统。Panasas公司于1999年由卡内基梅隆大学的GarthGibson等人创建。PanFS使用并行和冗余的方式存取对象存储设备,使用基于文件的RAID冗余模式,分布式元数据管理、一致的客户cache管理、文件锁服务和内部的集群管理提供一个可扩展、容错和高性能的分布式文件系统。在Panasas系统中存储集群被分为存储结点和管理结点,它们之间的比例是10比1,并且这个比例也是允许改变的。存储结点采用对象存储的方式,客户端的I/O可以直接存取存储结点;管理结点管理整个存储集群,使用分布式文件系统语义,处理存储结点失效时的恢复,并通过NFS和CIFS输出Panasas文件系统视图。图5.7给出了整体的结构。图5.7Panasas文件系统整体结构Panasas使用本地的OSDFS文件系统管理存储对象,每个对象使用两级的命名空间(partitionID/objectID)并通过iSCSI传输层传递OSD命令,它类似于SNIA的OSDv2标准。PanFS在存储对象之上,每个文件被分到一个或者多个对象上提供冗余和并发存取。文件系统的语义通过元数据服务器表达以方便客户端对于OSD的存取。客户读取对象存储使用iSCSI/OS