并行文件系统构筑高性能计算数据基石

来源:百度文库 编辑:神马文学网 时间:2024/04/25 20:22:55
长期以来,磁盘带宽的增长速度都远小于计算能力的增长速度,而双核、四核乃至多核服务器的普及与发展让这种不匹配的差距进一步拉大。包括RAID阵列等,我们目前有多种技术可提高I/O性能,并行文件系统也是其中之一。它可以把多个结点上的磁盘组织成为一个大的存储系统,提供更大的存储容量和聚集的I/O带宽,并随系统规模的扩大而扩展,在多种存储环境下发挥着重要的作用,尤其是集群结构的高性能计算领域。
高性能计算的存储基石
随着网络的高速发展,如何管理高速网络上互联的计算机的集群系统,建立一种性能优越的并行文件系统是一件非常重要的事情,这样可以使整个集群系统可以具备高可用性、可扩展性和高可靠性,从而构建出上千节点的超大规模集群计算机,为整个网络提供性价比高的集群服务器和超强的网格节点。
目前各个研究机构和商业团体对并行文件系统的研究比较看重,取得了不少的技术进步和 相关的商业产品,我们对整个分布式并行文件系统研究情况大致可以分为三类: 商业用途的并行文件系统;公开的分布式并行文件系统;供研究的并行文件系统。

并行文件系统工作原理
其中较为成熟的商用并行文件系统,像 IBM 的 GPFS,Intel 的 PFS等在性能,可用性上均有良好表现,但都价格昂贵,且需要特殊的存储设备的支持,给普通用户构建集群服务器带来困难。对于公开源码的并行文件系统,声誉最好的是 Clemson 大学和 NASA 实验室联合开发的 PVFS,它相对与传统的集中存储 NFS具有良好的性能。由于它采用单一元数据服务器的集中管理方式和存储节点的静态配置,因而不具备容错性和动态可扩展性。
另外,由 HP、Intel 赞助,Cluster File System 公司开发的面向对象存储的并行文件系统 Lustre吸收了很多文件系统(Code, InterMezzo)的优点。它采用智能化的对象存储设备(Object StorageDevice),在性能方面具有很大优势,在可用行和动态可扩展性上的表现仍然有待研究和完善。而 XFS是作为最早的Serverlesss分布式文件系统,主要侧重于通过合作式缓存来提高读写性能,不具备系统的在线动态扩展功能,并没能真正实用起来。
我们对这些系统分别做出分析,让我们可以更深入的了解并行文件系统的构成和功能。
xFS:走入象牙塔的学院派
xFS作为一种采用无服务方式以提供可扩展的文件服务的机群文件系统。它同 zebra 一样,xFS 集成了存储分组结构和日志结构,并且也实现了数据存储于元数据管理的彼此分离。
xFS 通过全部分布数据存储于元数据管理的功能减少了集中的瓶颈。为了获得更高的性能,xFS采用了合作缓存,一种通过各客户缓存的协调合作来替代传统的集中的服务端缓存。在 xFS中,任何机器都可以缓存、存储或则控制任意的数据块,这种方式可以提供比传统文件系统结构更好的性能和可扩展性。

xFS并行文件系统存取原理
xFS 的一个主要的特点是它的合作缓存的算法,即是“N-Chance”算法。这种算法动态地把每个客户端的缓存分开成块,以提供给当地的和那些存储在合作缓存的应用程序的应用。算法的置换机制是综合应用了当地“LRU”信息和重复避免(duplicate avoidance)以决定所最应该置换的块。
实际上,xFS 所应用的缓存结构与远端缓存结构以及“Feeley”描述的全局存储服务(GMS)具有相类似的构想。GMS比“N-Chance”算法更具有通用性,但它没有提供一致性机制并且依靠一种集中式的算法来决定块的置换。Sarkar andHartman提出了一种基于提示(hint-based)的合作缓存方式,这种方式可以减少客户机在通过提示调用和置换块是对管理者的依靠性。实验表明这种方式可以在增加少量的负载的情况下获得同 xFS 所相似的效果。
xFS的缺陷包括:它必须维护在文件级粒度下的缓存一致性,否则可能导致在某些情况下的共享错误问题(false-sharingproblem)。同时不具备系统的在线动态扩展功能,这使得xFS在集群文件系统中并没有真正得到应用,实际上局限于实验室的象牙塔中。
COSMOS:自主研发的实用型文件系统
COSMOS 并行系统是我们国家自己研制的一种可扩展单一映象集群的文件系统,它部署在曙光 3000超级服务器上,具有很好的操作性能。COSMOS 的底层基于AIX文件系统JFS,系统中每个节点通过高速网络互相连接,COSMOS构建于这些操作系统平台之上,向用户提供文件服务。

COSMOS分片数据管理模式
在整个COSMOS并行系统中,系统是由核心相关层(kernel)和用户层两部分组成。核心层是在虚拟文件系统一级中实现的,它接收来自逻辑文件系统的 I/O请求,并以一定的格式转发给用户层。而 COSMOS 的用户层是由 3类用户进程构成,被分别称为客户(client)、元数据管理器(manager)和存储服务器(storage),它们协调工作,共同完成核心层转发过来的I/O请求。
其中storage实现具体的数据存储,client完成数据及元数据的缓存,而manager负责缓存一致性的维护及元数据的存储管理。需要存取 COSMOS 文件系统的节点要配置client,本地磁盘上存有 COSMOS 子文件数据的节点要配置 storage,对于 manager,通常是平均每数个节点才配置一个。
COSMOS 中文件数据的定位是由管理服务器来完成的,并且在 COSMOS中实现的是分布式的元数据管理机制以提供可扩展的定位服务。另外,管理服务器的另一个任务是维持缓存的一致性。在 COSMOS中,每一个管理服务器负责维护整个文件系统的一个子集的位置信息,管理服务器可以应用这种信息来转发 I/O需求到正确的位置信息(合作缓存或附属存储器)。管理服务器也控制对相同数据块的并行存取。COSMOS利用一个管理服务器映射来实现分布式元数据管理。这种映射包括了一系列的机器标志符,运用这个可以知道哪个机器管理文件系统的哪一部分子集。
相比较 xFS,COSMOS 的低层是基于 JFS 来实现的,没有实现日志管理功能,因此元数据的内容和组织是不同的。在COSMOS 中,没有必要记录在一个节点中记录每个数据块的磁盘位置信息,而是“块组ID,起始节点”对信息被记录在节点中。起始节点标志了起始块存储在哪个机器上。因为不同的缓存一致性协议,缓存相关的元数据的内容和组织也是不相同的。为了减少网络的负载,COSMOS 直接将元数据和目录文件存储在管理服务器上,这是与 xFS 不同的另一个方面,在 xFS中,目录文件和元数据都存储在存储服务器上,这是由 xFS 采用的日志结构所决定的。
GPFS:商业并行文件系统代表
我们再看看 GPFS 这个商业产品,GPFS 是用于IBM Linux 集群系统的高性能、可扩展、并行文件系统。它可以通过所有的集群节点来共享文件。GPFS 可以充分利用 IBM Linux集群系统中的“虚拟”共享磁盘,使得在多节点上运行的多个应用程序可以同时读写同一文件;它包含了 IBM可扩展集群系统技术(RSCT),可将存储内容自动恢复到活节点;在发生故障时,记录(日志)能够快速恢复数据,并恢复数据的一致性;具有文件访问的单一镜像,可以从任意节点访问文件,而无需改变应用程序。

GPFS文件管理模式
在 GPFS 中,通过它的共享磁盘结构来实现它的强大的扩展性,一个 GPFS系统由许多集群节点组成,GPFS文件系统和应用程序在上面运行。这些节点通过光纤交换机连接磁盘和子磁盘。所有的节点对所有的磁盘有相同的访问权。文件被分割存储在文件系统中所有的磁盘上。用来连接文件系统和磁盘的光纤通道是由存储区域网(SAN)所组成,例如光纤通道或者 iSCSI。还有个别的磁盘依附于一些 I/O节点,它们通过一个运行在通用的网络上的软件层来实现存取,例如 IBM 的运行于 SP switch 上的虚拟共享磁盘。
GPFS依靠一个组服务层,通过监测节点和通讯连接出错的早期征兆,来监测节点错误,并且提供了一个组成员协议。当一个节点出现错误时,这个服务层通知其余的节点组成员变化了,通过早期的行为来触发恢复程序。导致通讯失败的原因,如网络适配器损坏、线缆松动导致孤立节点、光纤交换机可以产生了一个不可识别的网络分区等。
因为 GPFS 把数据和元数据条块化存储在文件系统中的所有磁盘上,所以损失单个磁盘也 会不同程度的影响文件。因此,典型的GPFS 用双重附带的 RAID 控制器。大型的 GPFS 文件系统分布在多个 RAID 上,这种情况下,文件系统块大小和 RAID的匹配就非常重要,这样可以防止写数据时发生奇偶校验的错误。
作为 RAID 的替代或补充,GPFS支持替代机制,它为每个数据和元数据块都分配空间,将两份拷贝存在两个不同的磁盘上。当一个磁盘不可靠时,GPFS会追踪上面文件块的更新,以便磁盘恢复时恢复数据。如果磁盘完全无效了,它会用备份来代替所有可能影响到其他磁盘的块。数据和元数据可以单独的运行这种恢复机制。事实上当一个磁盘部分磁道不可读时,元数据的恢复保证了只需要恢复很少的几个数据块,而不需要彻底的去恢复很多文件。
PVFS:虚拟并行文件系统
PVFS用来为运行 Linux 操作系统的 PC群集创建一个开放源码的并行文件系统。PVFS 已被广泛地用作临时存储的高性能的大型文件系统和并行 I/O研究的基础架构。作为一个并行文件系统,PVFS将数据存储到多个群集节点的已有的文件系统中,而且多个客户端可以同时访问这些数据。
PVFS 具有很多优点,它可以提供一个全局命名空间,可以将数据分配到多个磁盘上,并且允许使用不同的用户界面,还可以包含其它的I/O 接口来支持大型文件。该并行文件系统最早是Clemson大学的并行虚拟文件系统(PVFS)项目,由于该并行文件系统可开放源代码进行二次开发,因此在高性能计算系统的并行文件系统中占有独特的地位。
为高速访问群集中的文件系统,PVFS 将文件数据进行条块化划分,分散存储到某些群集节点(称作 I/O节点)的多个磁盘上。条块化数据的方法可在群集上提供相当大的存储容量,具体容量取决于群集中节点的数量。PVFS所带来的存储容量可以为用户提供整个集群内的大型全局操作空间。
与很多网络文件系统或并行文件系统一样,PVFS 是利用客户端-服务器架构实现的。它利用一组协作的用户空间进程(daemon),提供一个群集范围内的一致的命名空间,并将数据条块化,分配到多个群集节点中。
PVFS 客户和服务器之间的消息传递通过 TCP/IP 来完成,提供可靠的通讯环境。所有的 PVFS 文件系统数据都保存在I/O 节点的本地文件系统中,本地的文件系统可以是一个硬盘驱动器上的一个分区,可以是整个磁盘驱动器,也可以利用本地所支持的 Linux文件系统(例如 ext2,ext3 和 ReiserFS)所提供的多个磁盘驱动器的逻辑卷。
PVFS 使用管理节点,I/O节点和计算节点三种类型的节点。一个群集节点可以提供其中的一种功能,也可以同时提供其中的两种功能或三种功能。但是 PVFS还是存在不少问题,比方说它的集中的元数据管理可能成为整个系统的瓶颈,可扩展性受到一定限制。还有它的系统中的数据没有采取相应的容错机制,系统的可用性有待提高。由于是采用的静态配置,因此不具备动态扩展性。
Lustre:前景广阔的分布式并行文件系统
最后我们谈谈很有前景的分布式并行文件系统——Lustre。Lustre 是 HP,Intel,Cluster File System公司联合美国能源部开发的 Linux 集群并行文件系统。该系统目前推出 1.4.6的发布版本,是第一个基于对象存储设备的,开源的并行文件系统。整个系统由客户端,两个 MDS,OSD 设备池通过高速的以太网所构成。目前可以支持1000 个客户端节点的 I/O 请求,两个 MDS采用共享存储设备的 Active-Standby方式的容错机制,存储设备跟普通的,基于块的 IDE 存储设备不同,是基于对象的智能存储设备。

Lustre分布式并行文件系统
Lustre 采用分布式的锁管理机制来实现并发控制,元数据和文件数据的通讯链路分开管理。与 PVFS 相比,Lustre虽然在性能,可用行和扩展性上略胜一踌,但它需要特殊设备的支持,而且分布式的元数据服务器管理还没有实现。下一个版本的 Lustre系统将会加入分布式元数据管理,使得其性能得到进一步的提升。
我们期待并行文件系统的发展,作为网络集群系统的重要组成部分,并行文件系统的发展将会向着高可用性、可扩展性和高可靠性方向发展,像分布式的元数据管理这些技术将会不断的应用和改进到分布式并行文件系统中,我们期待着这个领域的继续突破。