PVFS描述 http:/parlweb.parl.clemson.edu/pvfs/desc.Html
PC集群作为一个并行平台在逐步的普及,此平台上的软件需求也正在增长。在当今的集群中。并行计算环境下,我们找到了许多有效的软件模块。比如可靠的操作系统,本地存储系统和基于消息传递的系统。然而,并行I/O限制了集群的软件产品的生产。并行虚拟文件系统(PVFS)工程为Linux集群提供了高性能和可扩展行的并行文件系统。PVFS是开放原代码的,并且在GNU公共版权许可证下发布。它无需特殊的硬件设备和内核的改动。PVFS提供重要的4个功能:×一致性的访问名字空间。×支持现存的系统访问方式。×数据分布在集群节点不同机器不同的硬盘上。×为应用程序提供高性能的数据访问方式。为了PVFS易于安装和使用。它必须提供与集群访问相一致的名字空间,而且它必须达到我们易用的习惯方式。PVFS文件必须同时安装到所有节点的相同目录里。使得所有节点能看到和访问PVFS文件上的所有文件通过相同的配置。在已安装PVFS文件和目录能够运用类似的工具,比如ls,cp和rm。为了给访问很多客户端上文件系统的数据提供高性能,PVFS将数据散布于许多集群的节点上,应用程序能够通过网络从不同的路径获得数据。这个消除了I/O路径的瓶颈,且增加了众多客户端潜在的带宽,或者是总和的带宽。当传统的系统调用机制提供了方便的数据访问给应用程序不同的文件系统的数据文件,是使用在内核之上的方式。对PVFS来说应用程序可以以连接本地PVFS,API的方式访问文件系统。这类库直接使用Unix操作与PVFS服务器门连接,而不是传递消息给内核。这个类库能被应用程序于与其他类库使用。比如ROMIO,MPI-IO类库,为了快速的PVFS访问。
PVFS使用视图
上面的PVFS视图现实了PVFS系统的节点分布图,节点被分成,计算节点,上面运行应用程序。管理节点管理元数据,I/O节点存储PVFS文件系统的文件。管理节点与I/O节点也可能被用来计算。全看管理员。对于小的集群这些节点功能可重叠以维持资源的利用率。大的集群上I/O于metadata最好放在不同的节点上。PVFS系统有4个主要的模块:×元数据服务器(mgr)×I/O服务器(iod)×PVFS本地API(libpvfs)×PVFS Linux内核支持第一二个模块是在Linux节点上运行的后台进程。元数据服务器,称为mgr,管理着PVFS文件的元数据。元数据是文件的描述,比如名字,所存放的目录层次,所有者,和在系统节点中的分布。 通过一个自动的后台进程我们避免了许多网络存储的缺点。访问中存在复杂的锁操作为的是在很多访问时保持文件的一致性。第二个后台进程是I/O节点或iod。I/O服务器存放和重得文件数据存储于连接于节点上的本地硬盘上。这些服务器在本地节点上创造真实的存在的文件。它们使用传统的read(),write()和mmap()访问这些文件。这意味着能使用像本地文件一样的格式来存储数据。比如ext2,ext3。另外你可以使用软件或硬件的RAID来支持节点容错和创建异常大的文件。
metadata Access视图
data access视图
就像前面提及PVFS本地API提供用户访问权给服务器。这些类库提供了分散聚集数据于用户缓存与PVFS服务器之间的操作。这些操作对用户保持透明的。上面图显示了PVFS元数据和文件操作的数据流动。对于元数据操作,应用与元数据服务器通讯通过使用类库。对于数据操作和数据服务器被排除替而带之的是直接于I/O服务器联系。这是性能的关键。最后PVFS提供Linux内核模块是Linux上能安装PVFS文件系统。这使得现在的程序直接访问PVFS文件而无需任何改动。这个支持对应用程序不是必须的使用PVFS的方法。不过它提供一个极方便的方法给影响到系统。PVFS内核模块支持包括一个可装载的模块。一个可选的内核补丁排除了内核拷贝,一个后台进程pvfsd以为应用程序提供访问PVFS文件系统。它用的是libpvfs的函数来执行这些操作。
视图
上图显示了数据通过内核流向,当Linux内核支持被使用。这个机制和coda文件系统中使用方式相类似。(在我们设计的系统上coda应用作为一个实例)操作通过系统调用传到linux的PVFS层。在这里是一个pvfsd服务的队列。这pvfsd通过设备文件接受操作。然后设备文件与PVFS服务器通讯取得数据,通过内核传递到应用程序。
应用程序接口:为了使任何文件系统可用,方便的接口必须可用。这个问题对并行应用特别重要。这些应用对文件系统有大量的需求。为了满足这些众多的组合,有三个接口PVFS能够访问。×PVFS本地API×Linux内核接口×ROMIO,MPI-IO接口PVFS本地API提供一个类似Unix接口给PVFS文件访问。它同样允许用户指定文件在PVFS文件系统I/O节点条状分布。Linux内核接口。就像早先讨论过的。允许用户可通过传统通道访问PVFS文件系统。这使得用户使用所有普通的功能执行每天的数据处理,PVFS文件系统,临时数据存储。ROMIO执行MPI IO调用在一个轻量级的类库中,这允许并行程序使用MPI去访问PVFS文件,通过MPIIO接口。另外,ROM-IO使用了两个优化:数据筛选,二阶段集体I/O,这样有利于提高性能。更多的资讯在ROMIO包和ROMIO网页中三个优化的描述。
性能:开始二个PVFS系统最重要的目标是高性能和可测量性。集群增大时,高性能并行I/O支持非常重要。我们工作是弄清楚PVFS将持续满足这些新的需求。这里我们概要了PVFS本地API的性能,在chiba city集群上运行有256个双处理器的节点。二中互连的系统,快速以太网和Myrient网络。我们将显示分别在这些网络上访问数据的性能。
视图
在上面的图中我们可看见快速以太网总计的性能。图上显示24个I/O节点后性能下降。这有可能是tcp在快速以太网上,和超出了以太网承受能力。但是网络的结构和选择I/O服务器布置也可能遵守一定的规则。在第二组测试中我们看Myrient上的性能。使用总Myrient带宽与I/O节点类似来表示性能。PVFS性能攀升在已经作的测试中性能攀升表现很好。
PVFS开发人员区域:为PVFS作贡献:我们常寻找对PVFS工程的帮助。如果你有任何主意,建议,错误报告,错误修复,或者向要一个新功能,请让我们知道。PVFS持GPL许可证,原代码是公开的,如果你有对你有点帮助或想简单的跟踪本工程请使用下文。我们打算搞一个活动的建议列表,为了PVFS研究者或对工程贡献的人,你可以查看这个列表。
PVFS的邮件列表:我们提供二个PVFS讨论邮件列表。PVFS用户和PVFS开发者,你能参加其中一个或全部。http://parlweb.parl.clemson.edu/pvfs/pvfs-list.html用开发人员列表是最好的保持与我们联络的方式。如果你想为PVFS作贡献。如果你想提供补丁或讨论任何与PVFS发展有关的事情。请在这里递交你的邮件。 匿名CVS的访问:我们使用CVS管理所有PVFS的原代码。为了得到更多如何使用CVS的信息,请参考你本地支持或参观CVS网站。我们提供了所有用户能读PVFS原代码的权限。访问CVS库是对PVFS实验与开发新功能感兴趣的人提供的。我们无法保证CVS中的代码都能使用,或你的数据在使用它后是安全的。我们不为那些没有使用已知稳定的版本提供支持。注意你已经被警告了!我们经常会制作稳定的版本,你能在http://parlweb.parl.clemson.edu/pvfs/files.html找到。这个才是你要这样的每天使用的代码。如果,你还没有被恐吓吓倒,下面列出了如何得到最近的cvs.parl.clemosn.edu的CVS版本。
检验最近的PVFS和PVFS内核原代码:
cvs -d : pserver:[email protected]:/anoncvs login 任何密码
cvs -d : pserver:[email protected]:/anoncvs co pvfs
cvs -d : pserver:[email protected]:/anoncvs co pvfs -kernal
cvs -d : pserver:[email protected]:/anoncvs logout
*升级你的合格的代码到最近改变的CVS(这个必须在已经检查的目录中作)cvs -d :pserver:[email protected]:/anoncvs login (任何密码)
cvs -d :pserver:[email protected]:/anoncvs update -P -d
cvs -d :pserver:[email protected]:/anoncvs logout
如果你打算经常这样作,你可能想创建别名,脚本和特殊的CVS客户端配置作这些,而无需这样麻烦。
提供补丁如果你有个PVFS的补丁或新特性,我们将接受补丁对照最新的版本或最近的CVS代码。请提交这样的补丁在PVFS开发列表上,如果你还弄不清楚如何格式化你的补丁,你可以看以下补丁命令的参考页。
作者:pvfs www.redcluster.ne
(出处:http://www.sheup.com)