代码改变世界

文件系统那些事-第5篇 并行文件系统之蓝色选择GPFS

2012-03-15 22:54  myjava2  阅读(404)  评论(0编辑  收藏  举报

GPFS[i](General Parallel File System)是一个IBM为在RS/6000 SP服务器上使用的一般目的(general-purpose)的可扩展文件系统。

GPFS继承了PIOFS文件系统。它是为高端的并行编程需要而设计的高性能文件系统。

可扩放性也许是GPFS最突出的特性。可扩放性指的是可以通过添加附加的相同甚至更少容量的硬件来获得读写性能的提升。一个真正可扩展的文件系统必须能提供大容量和高吞吐率。GPFS文件系统可以在容量上达到几Terabyte,提供GB/sec的吞吐率。作为一个AIX文件系统,GPFS继承了对超过2 gigabyte大小的大文件的支持。

GPFS是一个一般目的的文件系统,在于它适用于包括商业和技术任务等许多种类的工作负荷。它提供了对文件的全局访问(global access,或者一致访问,uniform access)。也就是,可以从SP系统的每个节点上安装GPFS文件系统,从而大大方便了应用程序的写操作。

大多数用户更愿意选择提供可移植性的解决方案。可移植的解决方案指的是被多个卖方接受和支持的解决方案。可移植的解决方案一般比限制在一个特定的硬件种类或者特定的软件环境的解决方案看起来更可取。GPFS的应用编程接口(applicationprogramming interface,API)是一个基于POSIX标准的可移植的解决方案,不需要也没有提供GPFS特有的系统调用。这意味着使用标准POSIX函数的应用程序能不用修改或者重编译就可以在GPFS上直接执行。另外,GPFS支持AIX的功能。

GPFS使用了一些技术来提高可靠性。GPFS有广泛的恢复机制。例如,文件系统能够记录哪些节点是可用的,并且动态适应地将文件系统任务从无应答的节点中迁移出来。

在与SP类似的并行编程环境中,一个并行工作的多个任务经常需要从多个结点上读写同一个文件。UNIX文件系统不支持这样的活动,因为它为文件一致性(文件锁)提供的机制是在整个文件级别实现的。GPFS通过提供字节范围(byte-range)的锁来解决这个关键问题。也就是,一个任务可以被允许读写一个文件的一个部分,而另一个任务可以被允许读写该文件的另外一部分。这种方法允许了读写并行发生,而不需要由于一致性要求而将读写进行串联。

有效的高速缓存机制对于文件系统性能非常重要。GPFS提供了广泛的预读(read-ahead,prefetch)和迟写(write-behind)。当读的时候,GPFS分析读访问的模式,并且尝试在实际的读调用之前,读入将来可能需要的数据。类似的,小的顺序的写会缓冲在一个迟写高速缓存中,直到收集写操作的大小能够较为有效地写入。高速缓存机制是在应用结点上实现的。分析机制是针对每个文件句柄执行的。这意味着如果一个进程两次打开同一个文件,GPFS能对每个实例使用不同的高速缓存策略。

1.1.1   体系结构概述

GPFS是作为若干分立的软件子系统来实现的,每个子系统都有可能分布在SP系统中的多个节点中。GPFS中典型的节点分为应用节点和VSD服务节点。应用节点指的是安装了GPFS文件系统而且运行一个使用该文件系统的用户应用的节点。VSD服务节点是一个在物理上连接了若干磁盘驱动器的节点,VSD服务器节点可以和在同一个部分的其他节点共享。


需要注意的是,GPFS中的一些子系统是由GPFS内部提供的,而另外一个GPFS利用的子系统是由外部服务提供的。内部服务是由GPFS daemon、mmfsd提供的,而外部服务则是由其他daemons和子系统提供的。例如GPFS利用了SP交换子系统(SP Switch subsystem)来实现通信,而SP交换子系统是一个被多个服务使用的一般性的子系统,它不是GPFS的一部分。下表列出了GPFS内部提供的服务和GPFS利用的外部子系统。



[i] Sizing and Tuning GPFS.


本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article