1、并行文件系统简介,曙光信息产业股份有限公司技术支持中心陈华新,并行文件系统介绍影响并行文件系统因素,并行文件系统介绍,文件系统 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 文件系统是操作系统的一个重要组成部分,通过对操作系统所管理的存储空间的抽象,向用户提供统一的、对象化的访问接口,屏蔽对物理设备的直接操作和资源管理。 文件系统种类FAT、NTFS、EXT2、EXT3、EXT4、HFS、ReiserFS、VMFS、JFS、UFS、
2、VXFS、ZFS、ButterFS、RAW,文件系统,本地文件系统与分布式文件系统,本地文件系统(Local File System) 本地文件系统是指文件系统管理的物理存储资源直接连接在本地节点上,处理器通过系统总线可以直接访问。分布式文件系统(Distributed File System) 分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。 在高性能计算中习惯称为并行文件系统。 并行文件系统是应用于多机环境的网络文件系统,单个文件的数据采用分条等形式存放于不同的I/O节点之上,支持多机多个进程的并发存取,同时支持元数据和数据的分布存放,
3、并提供单一的目录空间。,大容量:现在的数据量比以前任何时期更多,生成的速度更快; 高性能:数据访问需要更高的带宽; 高可用性:不仅要保证数据的高可用性,还要保证服务的高可用性; 可扩展性:应用在不断变化,系统规模也在不断变化,这就要求系统提供很好的扩展性,并在容量、性能、管理等方面都能适应应用的变化; 可管理性:随着数据量的飞速增长,存储的规模越来越庞大,存储系统本身也越来越复杂,这给系统的管理、运行带来了很高的维护成本; 按需服务:能够按照应用需求的不同提供不同的服务,如不同的应用、不同的客户端环境、不同的性能等。,应用对存储系统的需求,集群系统架构,传统的分布式文件系统(NFS)中,所有数
4、据和元数据存放在一起,通过单一的存储服务器提供。这种模式一般称之为带内模式(In-band Mode)。NFS体系结构,传统的分布式文件系统,NFS的优点: 从1985年的nfs1到现在的nfs4,发展多年,简单但是成熟; Linux直接在内核予以支持,使用方便; NFS的缺点: 可扩展性差,难以应用于大量存储节点和客户端的集群式(cluster)系统; 文件服务器的定位(location)对客户端非透明,维护困难; 缓存管理机制采用定期刷新机制,可能会发生文件不一致性问题; 不支持数据复制,负载均衡等分布式文件系统的高级特性,很容易出现系统的性能瓶颈; NFS服务器的更换会迫使系统暂停服务
5、对于异地服务的支持能力不强,NFS优缺点,利用存储区域网络(SAN)技术,将应用服务器直接和存储设备相连接,大大提高数据的传输能力,减少数据传输的延时。所有的应用服务器都可以直接访问存储在SAN中的数据只有关于文件信息的元数据才经过元数据服务器处理提供,减少了数据传输的中间环节,提高了传输效率,减轻了元数据服务器的负载。每个元数据服务器可以向更多的应用服务器提供文件系统元数据服务。这种模式一般称之为带外模式(Out-of-band Mode)。,新的分布式文件系统结构,PVFS,开源Lustre ,开源Parastor,曙光商业软件GPFS, IBM的产品,现已开源GFS, Red Hat商业
6、软件PFS,Intel商业软件GoogleFS,google商业软件,主要用于互联网应用HDFS,Apache开源,基于java的支持FastDFS,主要用于互联网应用,常见的并行文件系统,PVFS是开源的,于1998年公开,并且在GNU公共 版权可证下发布。它无需特殊的硬件设备和内核的改动,可以直接应用于廉价的Linux集群。PVFS目前为止有两个重要版本:PVFS1是早期的版本, 在运行时存在严重的单点故障问题,一旦管理服务器宕机,则整个系统都无法正常工作;而且,PVFS的程序开发者认为代码写得过于混乱,因而,他们整理并重 写了PVFS的源代码,并发布了PVFS2。在PVFS2中,不再单独
7、设立管理服务器,而是各个运行IOD进程的节点都可以接管管理服务器功能,以此来改善系统的单点故障问题。PVFS提供重要的4个功能:一致性的访问名字空间支持现存的系统访问方式数据分布在集群节点不同机器不同的硬盘上为应用程序提供高性能的数据访问方式,PVFS,PVFS使用了三种类型的节点:管理节点(mgr) 运行元数据服务器,处理所有的文件元数据(元数据是描述文件信息的文件)I/O节点(iod) 运行I/O服务器,存储文件系统的文件数据,负责数据的存储和检索计算节点 处理应用访问,利用libpvfs这一客户端的I/O库,从底层访问PVFS服务器 I/O节点、计算节点是一个集群的节点可以提供其中的一种
8、功能,也可以同时提供其中的两种或者全部三种功能,PVFS,PVFS的运行机理当打开、关闭、创建或删除一个文件时,计算节点上的一个应用通过libpvfs直接与元数据服务器通信在管理节点定位到一个文件之后,它向这个应用返回文件的位置,然后使用libpvfs直接联系相应的I/O节点进行读写操作,不必与元数据服务器通信,从而大大提高了访问效率,PVFS运行机理,PVFS存在的问题: 集中的元数据管理成为整个系统的瓶颈,可扩展性受到一定限制。 系统容错性有待提高:数据没有采取相应的容错机制,并且没有文件锁,其可扩展性较差,应用规模很大时容易导致服务器崩溃。系统可扩展性有待加强:PVFS使用静态配置,不具
9、备动态扩展性,如果要扩展一个I/O节点,系统必须停止服务,并且不能做到空间的合理利用。PVFS目前还不是由商业公司最终产品化的商品,而是基于GPL开放授权的一种开放技术。虽然免费获取该技术使整体系统成本进一步降低,但由于没有商 业公司作为发布方,该技术的后续升级维护等一系列服务,都难以得到保证。,PVFS,Lustre 是HP,Intel,Cluster File System 公司联合美国能源部开发的Linux集群并行文件系统。它来源于卡耐基梅隆大学的NASD 项目研究工作,已经在大学、实验室和超级计算研究中心等得到广泛应用。 Sun称Lustre是“目前全球具有最佳可扩展性的并行文件系统”
10、,现在全球十大超级计算机中的六个以及40%的TOP100超级计算机都采用了这个系统。,Lustre,Lustre,元数据存储与管理MDS负责管理元数据,提供一个全局的命名空间,Client可以通过MDS读取到保存于MDT之上的元数据。在Lustre中MDS可以有2个,采用了Active-Standby的容错机制,当其中一个MDS不能正常工作时,另外一个后备MDS可以启动服务。MDT只能有1个,不同MDS之间共享访问同一个MDT。文件数据存储与管理OSS负载提供I/O服务,接受并服务来自网络的请求。通过OSS,可以访问到保存在OST上的文件数据。一个OSS对应2到8个OST。OST上的文件数据是
11、以分条的形式保存的,文件的分条可以在一个OSS之中,也可以保存在多个OSS中。Lustre的特色之一是其数据是基于对象的职能存储的,跟传统的基于块的存储方式有所不同。 Lustre系统访问入口Lustre通过Client端来访问系统,Client为挂载了Lustre文件系统的任意节点。Client提供了Linux下VFS(虚拟文件系统)与Lustre系统之间的接口,通过Client,用户可访问操作Lustre系统中的文件。,Lustre,Lustre访问机制,Client,MDS,OSS,目录操作,文件开打/关闭,元数据,并发操作,文件内容,IO及文件锁,恢复,文件状态和文件创建,目前Lust
12、re文件系统最多可以支持100000个Client,1000个OSS 和2个MDS节点。Lustre系统中可以同时运行13个功能模块。不过Lustre一般运行于高性能计算机系统之上,为了提高Lustre文件系统的性能,通常MDS、OSS和Client是分开运行在Lustre不同的节点之上的。实验与应用已经证明,Lustre文件系统的性能和可扩展性都不错;还拥有基于对象的智能化存储、安全的认证机制、比较完善的容错机制等优点,而且Lustre还实现了文件锁功能;相对于PVFS,Lustre的可用性和扩展性以及性能上都有较大的提高。然而,Lustre需要特殊设备的支持,并且Lustre目前还没实现M
13、DS的集群管理,虽然相比PVFS的单MDS,Lustre的双MDS在可用性上还是提高不少,但是当系统达到一定的规模之后,MDS还是很有可能成为Lustre系统中的瓶颈,Lustre,并行文件系统对比,并行文件系统对比,曙光Parastor,曙光Parastor,曙光Parastor,曙光Parastor,曙光Parastor,影响并行文件系统因素,网络带宽 网络带宽往往决定着Lustre文件系统的聚合带宽 千兆以太网理论吞吐率为128MB/s,实测千兆以太网单线程单条块(stripe)的吞吐率约为112MB/s,再增加条块的数目并没有获得lustre良好的可扩展性,Lustre公布的千兆以太网
14、端到端Lustre的吞吐率为118MB/s。,影响并行文件系统因素,硬盘、RAID及存储 不同接口的硬盘(固态硬盘、FC、SAS、SATA硬盘)传输的速率不同; 各种RAID级别的吞吐率是不同的,RAID0最快,但最不安全,RAID1最安全,但吞吐率较低,通常采用RAID5; RAID创建时的每个条带单元的大小(chunk-size)决定了一次向阵列中每个磁盘写入数据的量,对不同负载下阵列的读写性能有很大的影响,一般来说,chunk-size的值越小性能会越好,但chunk-size太小,对Lustre IO性能会有比较大的影响。 不同存储的主机接口相差比较大,有infiniband、FC、S
15、AS等接口。,影响并行文件系统因素,块大小(record size),影响并行文件系统因素,条块化 条块化是Lustre能并发IO的关键,在Lustre使用时,有三个条块化有关的参数的设置影响到Lustre的并发性能,一个是条块的大小(stripe-size),一个是条块的数目(stripe-count),一个是条块的起始条块号。 在设置Lustre所用条块的起始条块号时,始终设置其为-1,这样可以保证OST间的负载平衡,防止因对单个OST争用而引起的性能瓶颈; 条块的大小(stripe-size)X条块的数目(stripe-count)就是文件的大小,当stripe-count值一定时,st
16、ripe-size的值就取决于文件的大小。,影响并行文件系统因素,通过应用聚合读写提高性能,比如对小文件进行Tar,或创建大文件存储小文件。小文件系统调用开销和额外的I/O开销非常大,应用聚合优化可以显著提高性能。另外,可以使用多节点、多进程/多线程尽可能通过聚合来提高I/O带宽。应用采用O_DIRECT方式进行直接I/O,读写记录大小设置为4KB,与文件系统保持一致。对输出文件禁用locking,避免客户端之间的竞争。应用程序尽量保证写连续数据,顺序读写小文件要明显优于随机小文件I/OOST采用SSD或更多的磁盘,提高IOPS来改善小文件性能。创建大容量OST,而非多个小容量OST,减少日志
17、、连接等负载。OST采用RAID 1+0替代RAID 5/6,避免频繁小文件I/O引起的数据校验开销。,Lustre小文件优化,使用单进程读取完整的共享小文件,需要时传输数据至其他进程。使用单进程访问容量在(1MB, 1GB)之间的小文件,将文件OST对象数设为1。使用单进程访问大于1GB的中等文件,文件OST对象数不超过4个。远大于1GB的大文件OST对象数应设为4个限制单个目录下的文件数量,包含大量小文件的目录stripe_count设置为1。小文件存放在单一OST上,单进程文件创建和读写性能会得到提高。包含大量小文件的目录存放在单一OST上,文件创建性能会提到极大提升。尽量避免频繁地打开和关闭文件。仅在必要时使用ls -l,它会与所有相关的OST交互,操作代价很大,尽可能使用ls和lfs find代替。考虑使用I/O中间件来改善性能。,Lustre I/O最佳实践,进行适当的配置和操作,Lustre则会展现更高的性能。下面给出一些Lustre I/O最佳实践,可根据实际应用情况择优实践。,