您的位置:首页 > 职场人生

集群和文件系统

2009-06-25 14:02 204 查看
3 文件系统
文件系统是操作系统的重要组成部分,用于存储程序和数据。如何在各节点间高效、一致和简捷的实现数据共享是集群系统对文件系统提出的挑战。
3.1 集群和文件系统
很明显,那种仅能管理本地存储的文件系统(如EXT和FAT)是无法满足集群系统对文件共享的要求的。在集群环境下,最容易想到,也是最容易实现的文件系统就是分布式文件系统。相当于本地文件系统,分布式文件系统有如下优点:

网络透明:对远程和本地的文件访问可以通过相同的系统调用完成。
位置透明:文件的全路径无需和文件存储的服务绑定,也就是说服务器的名称或地址并不是文件路径的一部分。
位置独立:正是由于服务器的名称或地址并不是文件路径的一部分,所以文件存储的位置的改变并不会导致文件的路径改变。

分布式文件系统可以使集群的节点间简捷地实现共享。但是为了提供性能,分布式文件系统通常需要使用本地的缓存(Cache), 所以它很难保证数据在集群系统范围的一致性。而且往往分布式文件系统中只有一份数据,所以很容易发生单点失效。
建立在共享磁盘(Share-Disk)上的并行文件系统可以克服分布式文件系统的这些缺点。通过使用在节点共享的存储设备,并行文件系统具有很多优点:

高可用性:克服了分布式文件系统中那种服务器端的单点失效的缺点,提高了文件系统的可用性。
负载均衡:有多个访问点,彼此可以协调负载。
可扩展性:容易扩展容量和访问的带宽

3.2 集群中的数据共享形式
下面通过给出几个集群中使用具体的数据共享的方法。其中rsync是建立在本地文件系统之上,NFS和Inteemezzo属于分布式文件系统(确切的说,NFS只是网络文件系统),GFS属于并行文件系统,而Backend-database则属于不同于文件共享的另一种形式的共享。



3.2.1 rsync
rsync是一种简单的文件共享实现方式。集群中的每个节点都有一份数据复本,复本间使用rsync进行同步。因为节点需要的数据就在本地,所以这种方法具有很高的可用性,不会出现单点失效现象。
如果需要的共享的数据量很小,而且很少更新时,可以采用这种方式。静态网页和小的FTP站点的可以使用这种共享方式。
3.2.2 NFS
这也是一种容易实现的方式。存储节点通过NFS将自己本地的文件输出,其他节点则把存储节点输出的文件系统mount到本地文件系统。NFS方式的存在两个很大的缺点:

性能差:因为所有的文件访问都必须经过网络和NFS服务器,所以在访问流量比较大的情况下,网络带宽和NFS服务器都会成为系统的瓶颈。
单点失效:如果NFS服务器的系统失效或者网络失效都会使得其他节点无法得到数据,从而使整个集群系统瘫痪。



当然使用多个互为备份的NFS服务器可以改善性能和避免单点失效,但是这样又会带来如何实时保持备份服务器间数据一致性的问题。 NFS方式适合于共享访问数据量不大的小型集群系统。
3.2.3 GFS
GFS(Global File System)实现了存储设备的网络共享。这些存储设备可以是共享SCSI(Shared SCSI)和共享通道(Fibre Channel - FC)。GFS包装这些存储设备使得它们好像节点本地的文件系统。GFS的主要优点在于:

高可用性:如果一个GFS客户失效,数据还可以通过其他GFS客户访问。
扩展性:因为不需要中心服务器,所有很容易扩展存储容量和访问带宽。



GFS可以将物理上分离的存储设备虚拟为一个存储而且能平衡访问负载。GFS还实现了文件锁和实时文件系统。
3.2.4 Intermezzo
Intermezzo实现了一个分布式的文件系统。它采用客户/服务器模式。服务器拥有权威的数据,客户节点仅有本地缓冲的版本。它们通过普通的网络进行同步。Intermezzo支持断开连接下文件操作。在下次恢复连接时,它会集成本地的改动到服务器上。Intermezzo拥有象GFS一样的可用性和可扩展性。但是它无法保证数据的实时一致性。



3.2.5 Backend Database
基于后端数据库的共享是完全不同于文件共享的方式。后端数据库系统解决了数据的一致性、性能、可用性和可扩展性问题。但是数据库的访问方法要比文件访问复杂的多。










回页首
4 并行化应用程序
并行化应用程序,使其更高效的运行是使用Beowulf集群系统的最终目的。一般说,并行化应用程序分为三个步骤:

确定应用程序的并发部分
估计并行的效率
实现应用程序的并发

在并行化应用程序的过程中,需要开发环境、并行开发库和各种工具的支持。这些软件都是Beowulf集群软件体系结构中重要的组成部分。
4.1 确定应用程序的并发部分
从实用的角度说,应用程序有两种类型的并发:计算和I/O。尽管在多数情况下这两者是正交的,但是也存在一些应用同时需要这两种并发性。有一些工具可以用来帮助分析应用程序的并发,而且通常这些工具都是专门为Fortran设计的。
4.2 分析并行的效率
分析并行的效率是并行化应用程序中很重要的一个步骤。正确的分析并行的效率可以帮助你在有限的经费下最大化应用的执行效率。往往Beowulf集群的需要和应用的需要有些许的差别。比如,CPU消耗型的应用往往需要的是稍微快一点的CPU和高速低延迟的网络,而I/O消耗型的应用需要的是稍微慢一点的CPU和快速以太网。
如果没有分析工具,你只能使用猜测和估计的办法完成这一步骤。一般来说,如果在应用的一部分中,计算的时间是分钟级而数据传输的时间是秒级,那么这一部分可以并行执行。但是如果并行后计算时间降到秒级,你就需要实际测量一下再做权衡。
另外,对于I/O消耗型的应用,Eadline-Dedkov法则对你做决定有些帮助:如果两个并行系统具有相同的CPU指标,慢CPU和相应具有低速CPU间通信网络的系统反而具有较好的性能。
4.3 实现应用程序的并发
有两种方法去实现应用程序的并发:显式并发和隐式并发。
4.3.1 显式并行化
显式并行化是指由开发者决定程序的并行。开发者通过在程序中增加PVM或MPI消息,或者增加程序执行的线程从而达到程序的并行化。显式并行化通常难以实现和调试。为了简化显式并行化,某些开发库中增加了一些函数用于简化标准并行方法的实现。另外也有专门用于调试并行程序的工具。TotoalView(http://www.etnus.com/Products/TotalView/index.html)就是一个源码级的C、C++和Fortran调试工具。它拥有方便的图形化界面,可以用于调试多线程、多进程和集群应用程序。
4.3.2 隐式并行化
隐式并行化是由编译器来决定程序的并行性,高性能Fortran就是这类编译器。隐式并行化中,程序开发者向编译器提供一些程序并行的特征,编译器根据这些特征做出程序并行化的决定。通常编译器可以给并行应用提供一定程度的效率和移植性,但是不是最好的。








回页首
5 作业管理(资源管理)
从用户角度看,集群系统就好像一台服务器或者PC。很多用户可以同时使用这个系统。但是当太多的用户使用集群系统时,系统性能会很差。资源管理就是管理用户提交的作业,合理给各个作业分配资源从而保证集群系统高效运行。作业管理通常由资源管理器和作业调度策略器组成。








回页首
6 系统管理
从系统组成角度说,集群系统是由多台计算机组成的超级计算机。但是从最终用户看来,集群系统是一台计算机,也就是说,集群系统的构成对用户是透明的。所以集群系统的管理的目的就是让集群系统象一台计算机一样利于管理。归纳起来,集群系统管理一般完成如下任务:

资源管理
事件管理
配置管理
监控和诊断
硬件控制
系统安装
域管理

本系列文章的第五部分将详细介绍集群系统的作业管理和系统管理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲