突破I/O瓶颈 五种解决方案各有利弊
HPC(高性能计算High Performance Computing,也称超级计算)历来是石油、生物、气象、科研等计算密集型应用中的首要技术问题。早期的HPC系统,主要以IBM、Cray、SGI等厂商的大型机或并行机为硬件系统平台。随着Linux并行集群技术的成熟和普及,目前HPC技术主流已经转向以IA架构为硬件平台,以Linux并行集群为系统平台的廉价系统为主。近年来,这一技术又进一步发展,各厂商目前竞相追捧的网格计算技术,从某种意义上说,就是这一架构的延伸。鉴于Linux并行集群技术在HPC应用中的主流地位及快速发展趋势,本文主要讨论的也是这一架构中的存储系统问题。
当前Linux并行集群的困惑----遭遇I/O瓶颈
当一个计算任务被加载到集群系统时,各个计算节点首先从I/O节点获取数据,然后进行计算,最后再将计算结果写入I/O节点。在这个过程中,计算的开始阶段和结束阶段I/O节点的负载非常大,而在计算处理过程中,却几乎没有任何负载。
实际监测结果显示,当原始数据量较大时,开始阶段和结束阶段所占用的整体时间已经相当可观,在有些系统中甚至可以占到50%左右。I/O效率的改进,已经成为今天大多数Linux并行集群系统提高效率的首要任务。
解决I/O瓶颈的初步探讨----瓶颈到底在哪里?
在上面的系统结构图中可以看出,如果把“以太网交换”以下的部分统统看作存储系统的话,那么可能的瓶颈无外乎以下三种:
存储设备本身性能,姑且称之为“存储设备瓶颈”
究竟哪一环节是最为关键的问题呢?让我们结合实际情况,逐一的分析一下。
这样看来,“存储设备瓶颈”和“存储通道瓶颈”似乎都不是难以解决的问题,那么“网络交换瓶颈”的情况又如何呢?
照此看来,单一I/O节点架构无疑是整个集群系统性能死结。那么考虑多I/O节点的架构会如何呢?笔者的观点是:多I/O节点架构困难重重,但势在必行。
解决I/O瓶颈的途径----多I/O节点架构
方案一、简单SAN架构下的多I/O节点模式
实现多I/O节点,最容易想到的第一步就是引入SAN架构。那么,我们就先来分析一下简单的SAN架构能否满足Linux并行集群的需求。
由于基本的SAN架构不能提供文件级共享,两个I/O节点还是完全独立的工作。前端的所有计算节点如果同时读取同一个文件的话,还必须经由一个I/O节点完成。由此可见,在单一任务情况下,多I/O节点的结构形同虚设,根本无法负载均衡的为前端计算节点提供服务响应。为了解决这一问题。可以考虑在多I/O节点间需要引入文件级共享的工作机制。
方案二、多I/O节点间文件级共享
造成这一问题的根本原因在于,多I/O节点为系统引入了多个逻辑数据源,而目前主流并行集群系统都是在单一数据源的结构下开发的。既然现有应用不能在短时期内有所改变,能否在提高前端计算节点I/O能力的同时,回归到单一逻辑数据源的结构呢?其实,以目前的技术而言,答案是肯定的。
方案三、单I/O节点蜕化为MDC,计算节点直接接入SAN
在这一架构下,各个计算节点形式上还是通过NFS共享访问I/O节点,但实际的数据读写路径则通过SAN交换直接到达磁盘阵列。这种模式的可行性已经在现实中被证实。例如,IBM公司的GPFS技术就是以这种方式解决集群的I/O瓶颈问题的。
这一架构从技术上看似乎是无懈可击的。它真的一举解决了所有问题的问题吗?非也!当考虑到成本的时候,问题就出现了。即使按照最保守的32个节点计算,在不考虑容错的前提下,整个SAN系统需要至少提供32个端口用于连接主机,另外还至少需要4个端口连接磁盘阵列。要建立如此庞大的SAN网络,其成本将相当可观,这也就失去了Linux并行集群的最大优势----性能价格比。 #p#page_title#e#
FC-SAN的成本昂贵,能否考虑替代技术呢?那么不妨考虑以相对成本较低的iSCSI技术替代FC的解决方案。
方案四、以iSCSI技术取代FC
以iSCSI替代FC技术构建SAN网络的确可以降低一定的成本。按32节点的例子计算,不考虑磁盘阵列部分,FC-SAN的硬件成本约为每端口$2000以上,采用iSCSI技术可以将这个数字降低到$1000以内。性能虽然受到一定影响,但仍会比目前的状况好很多。
然而,iSCSI技术的引入只能降低硬件产品,而对软件成本则没有任何影响。SAN架构文件共享软件的一般价格是每节点$5000~$7000,当硬件成本降低后,这部分软件成本占了SAN成本的大部分,存储系统的总体成本仍然明显高于计算节点的总和。
方案五、多I/O节点间以PVFS实现负载均衡
让我们重新回到多I/O节点的架构下,来尝试解决多逻辑数据源带来的问题。并行文件系统(PVFS)似乎是个不错的选择。
以PVFS构建的系统甚至不再需要SAN系统内文件共享,因为每个原始数据文件在I/O节点一级就被分割为一组小数据块,分散存储。
综上所述,笔者认为上述方案各有优势,但问题也同样明显。如果用户可以接受管理维护的复杂性,那么方案二似乎最为经济实惠。如果用户愿意接受基于GPL无原厂商服务支持的自由产品,并在短期内不考虑对非Linux集群系统的整合问题,则可以采用PVFS技术,即采用方案五。方案三虽然是所有方案中性能最好的,但其高昂的成本显然不是每一个用户都愿意接受的。