突破IO瓶颈 五种解决方案各有利弊
数据库性能调优中的IO瓶颈分析方法

数据库性能调优中的IO瓶颈分析方法数据库性能调优是提高数据库系统性能的重要工作,而IO瓶颈是数据库性能调优中常见的问题之一。
IO(Input/Output)操作是数据库系统中的关键环节,对数据库系统的整体性能有着重要影响。
本文将介绍一些常用的IO瓶颈分析方法,帮助数据库管理员在性能优化过程中更好地定位和解决IO瓶颈问题。
首先,需要明确的是,IO瓶颈指的是数据库系统中IO 操作的性能不足问题,而数据库系统中的IO操作主要包括读操作和写操作。
针对这两种操作,下面将分别介绍相应的IO瓶颈分析方法。
对于读操作而言,其中一个常见的瓶颈是磁盘IO。
在分析磁盘IO瓶颈时,常用的工具包括操作系统自带的性能监控工具和第三方工具。
操作系统自带的性能监控工具(例如Linux的iostat命令、Windows的性能监视器等)可以监测磁盘IO的各项性能指标,如平均响应时间、读写速度、IO请求数等。
通过观察这些指标的变化情况,可以初步判断磁盘IO是否成为系统性能瓶颈。
而第三方工具一般具备更加详细的性能监测和分析功能,例如sysstat工具、iostat工具、iotop工具等,这些工具可以提供更加精确的瓶颈定位和问题排查。
在进一步分析磁盘IO瓶颈时,可以借助操作系统自带的工具或者第三方工具查看磁盘的使用情况。
例如,在Linux系统中,可以使用df命令查看系统中各个磁盘分区的使用情况,例如磁盘空间使用情况、inodes使用情况等。
如果某个磁盘分区的使用率接近饱和,即说明该磁盘存在IO瓶颈的可能。
还可以使用du命令查看文件夹或文件的大小,进一步分析磁盘IO的瓶颈所在。
此外,还可以使用专业的存储性能分析工具来监测磁盘的IO负载情况,并对磁盘参数进行调整,如调整队列长度、增加磁盘缓存等。
对于写操作而言,IO瓶颈一般与日志写入有关。
数据库系统通常会记录数据库的各种操作日志,以便实现事务的持久性和故障恢复等功能。
而写入这些操作日志需要消耗大量的磁盘IO资源,因此写操作经常成为数据库性能调优的重要对象。
IO操作对软件性能优化的影响与优化方法(六)

IO操作对软件性能有着重要的影响,特别是在大规模数据处理和高并发应用中。
合理地进行IO操作优化可以极大地提升软件的性能和响应速度。
本文将从深度和广度两个角度探讨IO操作对软件性能的影响,并提出优化方法。
一. IO操作对软件性能的影响IO操作包括数据的读取和写入,涉及磁盘、网络等底层设备,因此其速度较慢。
对于需要频繁进行IO操作的软件,在大规模数据处理和高并发应用中,IO操作的效率就成为性能的瓶颈。
1. 数据读取数据读取是指从磁盘或网络等外部存储设备中将数据加载到内存中的过程。
当读取较大的文件或大量的数据时,会消耗较长的时间。
读取速度的限制主要取决于磁盘访问速度和网络带宽。
2. 数据写入数据写入是指将内存中的数据写入到磁盘或网络等外部存储设备中的过程。
写入速度较慢,特别是在频繁的写入操作时,可能会造成性能瓶颈。
二. IO操作的优化方法为了提升软件性能,我们可以通过以下几种方法对IO操作进行优化。
1. 使用缓冲区使用缓冲区可以减少频繁的IO操作,通过一次性读取或写入大块数据来提高效率。
可以将数据加载到内存中的缓冲区,并进行批量的处理,减少与外部设备的交互次数,提升性能。
2. 异步IO使用异步IO可以将IO操作和程序的执行分离,提高程序的并发性。
通过异步IO,可以在数据读取或写入的同时进行其他任务,减少IO等待的时间,提升性能。
3. 数据压缩数据压缩可以减少数据的传输量,从而提高IO操作的效率。
特别是在网络传输中,对数据进行压缩可以减少带宽的占用,提升传输速度。
4. 数据分块对于大规模数据处理中的IO操作,可以将数据按照逻辑进行分块,提高数据读取和写入的效率。
通过并行处理不同块的数据,可以充分利用系统资源,提升软件的性能。
5. 文件格式优化针对特定的应用场景,可以根据数据的特点选择合适的文件格式进行存储。
不同的文件格式对数据的存储方式和读取效率有所区别,选择合适的文件格式可以提升IO操作的效率。
小结:通过以上优化方法,可以显著提升软件的性能和响应速度。
数据库性能调优中的瓶颈定位与解决方法

数据库性能调优中的瓶颈定位与解决方法在进行数据库性能调优时,识别和解决瓶颈是一个至关重要的步骤。
数据库瓶颈会导致性能下降,影响应用程序的响应时间,降低用户体验。
本文将介绍数据库性能调优中常见的瓶颈,并提供相应的解决方法,帮助您更好地优化数据库性能。
一、磁盘IO瓶颈磁盘IO瓶颈是数据库性能调优中经常遇到的问题。
它指的是当数据库需要大量的读写操作时,磁盘无法以足够高的速度响应请求,导致性能下降。
下面是一些解决磁盘IO瓶颈的方法:1. 使用RAID技术:RAID可以将多个磁盘组合成一个逻辑磁盘,从而提高数据的读写速度和容错能力。
常见的RAID级别有RAID 0、RAID 1、RAID 5等,根据应用需求选择合适的RAID级别。
2. 使用SSD磁盘:相比于传统的机械磁盘,固态硬盘(SSD)具有更快的读写速度和更低的延迟。
将数据库的存储设备替换为SSD磁盘可以显著提高数据库的性能。
3. 使用分区和索引:通过将数据分成较小的块并使用索引进行访问,可以减少对磁盘的IO操作,提高数据库的查询和更新性能。
二、查询优化瓶颈查询是数据库最常见的操作,但是不正确的查询方式和缺乏优化可能导致性能下降。
以下是一些解决查询优化瓶颈的方法:1. 使用合适的索引:索引可以加快查询速度,但是过多或者过少的索引都会对数据库性能产生负面影响。
根据实际查询需求和数据分布情况,选择合适的索引来优化查询性能。
2. 避免全表扫描:全表扫描是指没有使用索引,而是对整个表进行扫描的查询操作。
全表扫描通常会导致性能下降,尽量避免全表扫描,使用索引来加速查询。
3. 使用合适的算法:对于一些复杂的查询,选择适当的算法可以提高查询性能。
例如,对于大数据集合的连接操作,可以考虑使用哈希连接或者排序合并连接来加快查询速度。
三、内存不足瓶颈数据库的内存不足可能导致瓶颈,因为内存是数据库缓存和执行查询所需的关键资源。
以下是一些解决内存不足瓶颈的方法:1. 增加内存容量:将更多的内存分配给数据库,可以提高缓存的效果,降低磁盘IO的需求,从而提高查询和更新操作的性能。
疏通I-O瓶颈让网络可见可控可优化

疏通I/O瓶颈让网络可见可控可优化系统I/O存在的症结就在与企业的IT管理人员没有最终确定,在自己的系统中哪些是关键应用,哪些是普通应用,以及各种应用的运行状态,带宽资源的占用情况和网络使用的效能。
如果你是企业的IT主管,碰上这样的问题,肯定不会轻松:员工不断向你抱怨网速慢,大量的时间和精力都浪费在漫长等待中;客户打来电话,投诉你所属企业的网上订货系统形同虚设,不但速度可与蜗牛相比;而且故障频发……这时候你会想,自己明明已经投入了资金,把网络带宽提高了10倍。
为什么网络应用程序的响应速度和可靠性没有相应的提高呢?问题究竟出在哪里,又该怎么解决呢?记者就此采访来自浪潮的服务器产品经理程妙玉和能够为网络用户提供带宽管理、流量控制、应用优化解决方案的美国迈科公司的技术专家陈刚,他们就服务器的I/O管理和网络带宽管理给出了他们的建议。
提升服务器I/O性能是必须处于成长期的企业,“弹性”被确定为重要目标。
但是,服务器的网络I/O性能提升瓶颈,却成为了企业业务、乃至整个信息化的障碍。
终于用上服务器了,却遭遇了堵车一样的被动局面。
严重不匹配产生延迟作为服务器方面的技术经理,程妙玉在服务器I/O性能提升方面有她独特的见解。
据她讲,目前,网络基础设施从快速以太网向千兆以太网(1GbE),甚至万兆以太网(10GbE)迅速迁移,网络数据处理需求正逐渐超越服务器的支撑能力,而且随着网络通信和交易处理工作负载的与日俱增,差距越拉越大。
对于这个差距的出现,程妙玉说她个人认为是与目前网络通讯中广泛使用的TCP/IP有关。
网络数据包处理过程中,所产生严重的延迟来自系统开销、数据移动(内存存取)等。
数据移动是导致系统延迟最严重的过程。
每处理一个数据包,至少需要访问五次系统内存。
由于内存速度大大低于处理器,在进行内存访问时,大量的处理器时钟周期被闲置。
网络带宽、处理器速度与内存带宽三者的“不匹配性”,造成了延迟。
处理器速度比内存速度快得越多,等待相应数据的延迟就越多。
突破IO瓶颈 五种解决方案各有利弊

突破I/O瓶颈五种解决方案各有利弊HPC(高性能计算High Performance Computing,也称超级计算)历来是石油、生物、气象、科研等计算密集型应用中的首要技术问题。
早期的HPC系统,主要以IBM、Cray、SGI等厂商的大型机或并行机为硬件系统平台。
随着Linux并行集群技术的成熟和普及,目前HPC 技术主流已经转向以IA架构为硬件平台,以Linux并行集群为系统平台的廉价系统为主。
近年来,这一技术又进一步发展,各厂商目前竞相追捧的网格计算技术,从某种意义上说,就是这一架构的延伸。
鉴于Linux并行集群技术在HPC应用中的主流地位及快速发展趋势,本文主要讨论的也是这一架构中的存储系统问题。
当前Linux并行集群的困惑----遭遇I/O瓶颈Linux并行集群中的计算资源按其功能角色不同,通常被分为两种:“计算节点”和“I/O 节点”。
其中计算节点负责运行计算任务,I/O节点负责数据的存储并响应计算节点的存储请求。
目前Linux并行集群一般采用单I/O节点服务多计算节点的模式。
从硬件角度看,I/O 节点和计算节点都是标准的IA架构,没有本质区别。
计算所需要的初始数据、计算得出的最终数据以及并行计算平台本身,都存储于I/O节点上。
计算节点与I/O节点间一般采用标准NFS协议交换数据。
当一个计算任务被加载到集群系统时,各个计算节点首先从I/O节点获取数据,然后进行计算,最后再将计算结果写入I/O节点。
在这个过程中,计算的开始阶段和结束阶段I/O 节点的负载非常大,而在计算处理过程中,却几乎没有任何负载。
提高各计算节点CPU频率和增加计算节点数量,可以提高集群整体的计算处理能力,进一步缩短处理阶段的时间。
在当前的Linux并行集群系统中,集群系统的处理能力越来越强,每秒运算次数在迅速增长,于是集群系统真正用于计算处理的时间越来越短。
然而,由于I/O能力改进不大,集群系统工作中的I/O效率没有明显进步,甚至会随着计算节点数的增加而明显降低。
解决性能瓶颈的方法与技巧优化程序的关键

解决性能瓶颈的方法与技巧优化程序的关键随着计算机技术的不断进步,人们对软件性能的要求也越来越高。
然而,在开发过程中,程序的性能问题往往会成为一个难题。
本文将介绍解决性能瓶颈的方法以及优化程序的关键技巧。
一、找出性能瓶颈首先,要解决性能问题,需要明确程序中的性能瓶颈。
一般来说,性能瓶颈可能存在于多个方面,比如CPU占用率、内存消耗、网络等。
通过使用性能分析工具,如性能监控器和性能剖析工具,可以帮助我们找出程序的性能瓶颈所在。
二、算法优化与数据结构优化在发现性能瓶颈后,我们需要进行算法优化和数据结构优化。
对于算法优化,可以考虑使用更高效的算法来替代原本低效的算法。
以排序算法为例,如果原本使用的是冒泡排序,可以尝试使用快速排序或归并排序等更高效的算法。
同时,对于数据结构的选择和优化也十分重要。
合理选择数据结构,可以降低算法的时间复杂度和空间复杂度。
例如,在查找操作频繁的情况下,使用哈希表可以提高查找效率。
三、并行与异步编程并发编程是优化程序性能的关键技巧之一。
将程序拆分为多个子任务,并行地执行这些子任务,可以提高程序的处理速度。
线程池和协程是实现并行编程的常用工具。
此外,异步编程也是提高程序性能的一种重要方法。
通过将耗时的I/O操作放在后台执行,主线程可以继续执行其他任务,提高程序的并发能力。
四、内存管理与资源回收合理的内存管理和资源回收也是优化程序性能的关键。
程序过度消耗内存或者无法及时释放占用的资源,都会导致性能下降或者崩溃。
在内存管理方面,可以使用内存池和内存缓存等机制来提高内存的利用率。
同时,程序中的资源需要及时回收,避免内存泄漏和资源浪费。
五、编译与调试优化编译优化可以针对特定的目标平台,通过调整编译器的参数来提高程序的性能。
优化编译器选项、调整优化级别等方法都可以用来优化程序代码生成的质量和效率。
调试优化也是一个重要的环节。
通过使用性能分析工具和调试器,可以及时检测到程序中的问题,并进行修复。
解决服务器数据传输瓶颈的IO技术

解决服务器数据传输瓶颈的I/O技术联想服务器网络事业部张晓力数据传输一直是IA架构服务器的一个弱点,因为CPU处理能力的提高速度远远超过磁盘和网络I/O速度。
如果磁盘和网络I/O的速度得不到有效提高,那么处理器的速度再快也没有多大意义。
因此,为优化整体系统性能,CPU、局部存储器和I/O设备必须协同工作才能为最终用户提供一个有效的工作环境。
如果系统的某一方面(如I/O)成为瓶颈,系统的整体性能必定会受到影响。
在客户/服务器计算环境中这一点尤为突出,因为该环境中最终用户严重依赖于数据、应用程序、外设等网络资源,并需要与网络上的其他用户进行交互。
认真比较一下IA架构服务器和RISC体系结构服务器,人们不难发现其最大区别是I/O结构。
IA架构是通过ISA、PCI总线来进行I/O的,而RISC 系统则是以“交换”方式来进行I/O。
这种体系结构上的差异,不仅对系统性能而且对可靠性、稳定性都会造成重大影响。
为了适应人们对IA架构服务器新的需求,IA架构服务器的体系结构正在发生巨大变革,导致产生这种变革的根本方法并不是在处理器内嵌入二级(L2)高速缓存以提高访问速度,而是设法改善它的薄弱环节——I/O性能。
改进PCI总线目前广泛应用的PCI总线还是在486时代就已经开始使用的运行在33MHz的32位PCI总线,从那时起到现在,CPU的速度已提高了10倍以上。
前不久,Intel和AMD已发布了运行在1GHz的CPU,二者之间的差距将会越拉越大。
现在Intel和其他几家最大的PC供应商正试图改变这一状况。
目前,已推出了64位/33MHz PCI 总线,最近又推出了64位/66MHz PCI总线,把PCI总线的吞吐量提高到4.2Gbps。
对于使用32位/33MHz PCI的用户来说,64位/33MHz PCI无疑是一种巨大的进步,在最大速度下运行的64位/66MHz PCI总线的性能是32位/33MHz PCI总线的4倍。
磁盘io过高问题方案

磁盘io过高问题方案
如果您的计算机磁盘IO过高,以下是几个解决方案:
1. 关闭不需要的程序和进程:在任务管理器中,查看哪些程序和进程正在使用磁盘,并关闭不需要的程序和进程。
这可以减少磁盘IO的负载,并提高计算机的整体性能。
2. 清理磁盘空间:如果您的硬盘已经存满了文件和应用程序,那么您需要清理磁盘空间。
删除不需要的文件和程序,并清空回收站。
3. 升级硬盘:如果您的硬盘过小或老旧,那么一个显而易见的解决方案就是升级硬盘。
更换为更快、更大的硬盘可以提高磁盘IO 的速度,从而提高计算机的整体性能。
4. 优化磁盘:优化磁盘可以帮助您获取更好的磁盘IO性能。
您可以通过使用磁盘碎片整理程序或者在命令提示符下输入“chkdsk”命令来优化磁盘。
5. 使用高速磁盘:使用高速磁盘(如SSD)可以提高磁盘IO的速度,从而提高计算机的整体性能。
这也可以是一个比升级硬盘更便宜的解决方案。
总之,通过以上几种方案,您可以缓解或解决磁盘IO过高的问题,提高计算机的性能和稳定性。
- 1 -。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
突破I/O瓶颈五种解决方案各有利弊HPC(高性能计算High Performance Computing,也称超级计算)历来是石油、生物、气象、科研等计算密集型应用中的首要技术问题。
早期的HPC系统,主要以IBM、Cray、SGI等厂商的大型机或并行机为硬件系统平台。
随着Linux并行集群技术的成熟和普及,目前HPC 技术主流已经转向以IA架构为硬件平台,以Linux并行集群为系统平台的廉价系统为主。
近年来,这一技术又进一步发展,各厂商目前竞相追捧的网格计算技术,从某种意义上说,就是这一架构的延伸。
鉴于Linux并行集群技术在HPC应用中的主流地位及快速发展趋势,本文主要讨论的也是这一架构中的存储系统问题。
当前Linux并行集群的困惑----遭遇I/O瓶颈Linux并行集群中的计算资源按其功能角色不同,通常被分为两种:“计算节点”和“I/O 节点”。
其中计算节点负责运行计算任务,I/O节点负责数据的存储并响应计算节点的存储请求。
目前Linux并行集群一般采用单I/O节点服务多计算节点的模式。
从硬件角度看,I/O 节点和计算节点都是标准的IA架构,没有本质区别。
计算所需要的初始数据、计算得出的最终数据以及并行计算平台本身,都存储于I/O节点上。
计算节点与I/O节点间一般采用标准NFS协议交换数据。
当一个计算任务被加载到集群系统时,各个计算节点首先从I/O节点获取数据,然后进行计算,最后再将计算结果写入I/O节点。
在这个过程中,计算的开始阶段和结束阶段I/O 节点的负载非常大,而在计算处理过程中,却几乎没有任何负载。
提高各计算节点CPU频率和增加计算节点数量,可以提高集群整体的计算处理能力,进一步缩短处理阶段的时间。
在当前的Linux并行集群系统中,集群系统的处理能力越来越强,每秒运算次数在迅速增长,于是集群系统真正用于计算处理的时间越来越短。
然而,由于I/O能力改进不大,集群系统工作中的I/O效率没有明显进步,甚至会随着计算节点数的增加而明显降低。
实际监测结果显示,当原始数据量较大时,开始阶段和结束阶段所占用的整体时间已经相当可观,在有些系统中甚至可以占到50%左右。
I/O效率的改进,已经成为今天大多数Linux 并行集群系统提高效率的首要任务。
解决I/O瓶颈的初步探讨----瓶颈到底在哪里?在上面的系统结构图中可以看出,如果把“以太网交换”以下的部分统统看作存储系统的话,那么可能的瓶颈无外乎以下三种:存储设备本身性能,姑且称之为“存储设备瓶颈”I/O节点与存储设备间的连接,姑且称之为“存储通道瓶颈”计算节点与I/O节点间的网络交换,姑且称之为“网络交换瓶颈”究竟哪一环节是最为关键的问题呢?让我们结合实际情况,逐一的分析一下。
目前的存储设备类型丰富,种类繁多。
仅中端设备中,容量扩展能力在几十TB,每秒处理数万次I/O,数据吞吐带宽在数百MB/s的设备就有很多种选择。
以勘探数据处理系统为例,在一个32计算节点的叠前处理系统中,如果需要使每个计算节点得到15~20MB/s 的带宽,那么集群对后端存储的总体带宽(即聚合带宽)要求大约为500~650MB/s。
目前的中端磁盘阵列产品基本都可以达到这一性能指标。
如果考虑64个或更多计算节点,后端带宽要求需要达到1~1.3GB/s甚至更大,这一性能是目前单一中端磁盘阵列系统难以达到的。
然而通过引入多台存储设备,这一问题也不难解决。
目前的存储设备通道技术主要以SCSI和FC为主。
目前单条FC通道可保证200MB/s 的传输带宽,以4条通道并行工作就可以达到800MB/s的带宽保证。
这一指数已经完全可以满足32个计算节点并行工作的带宽要求。
此外IB(InfiniBand)技术作为新兴通道技术,更进一步保证了通道带宽。
目前已经产品化的IB交换技术已经可以达到10~30Gb/s的带宽,是目前FC技术的5~15倍。
在这样的带宽保证下,既便是256或512节点的集群也可以与存储设备从容交换数据。
这样看来,“存储设备瓶颈”和“存储通道瓶颈”似乎都不是难以解决的问题,那么“网络交换瓶颈”的情况又如何呢?照搬前面的计算方法,如果要为前端32个计算节点提供15~20MB/s的带宽,I/O节点需要提供至少500~650MB/s的网络带宽。
这就是说,既便完全不考虑以太网交换的额外损耗,也需要安装6~7片千兆以太网卡。
而一般的PC或PC服务器最多只有两个PCI控制器,要想保证这6~7片千兆以太网卡都以最高效率工作,完全是不可能的。
更何况一般以太网的效率,只有理论带宽的50%左右。
就是说实际上要想达到500~650MB/s的实际带宽,需要13~15片千兆以太网卡,十几个64位PCI插槽!这大概是目前最高端的PC服务器所能提供的PCI插槽数目的二倍。
照此看来,单一I/O节点架构无疑是整个集群系统性能死结。
那么考虑多I/O节点的架构会如何呢?笔者的观点是:多I/O节点架构困难重重,但势在必行。
解决I/O瓶颈的途径----多I/O节点架构引入多I/O节点架构,涉及到很多存储技术。
笔者下面的分析中,主要考虑了FC-SAN,iSCSI-SAN,基于SAN的文件共享以及PVFS(并行虚拟文件系统)等技术手段。
方案一、简单SAN架构下的多I/O节点模式实现多I/O节点,最容易想到的第一步就是引入SAN架构。
那么,我们就先来分析一下简单的SAN架构能否满足Linux并行集群的需求。
由于基本的SAN架构不能提供文件级共享,两个I/O节点还是完全独立的工作。
前端的所有计算节点如果同时读取同一个文件的话,还必须经由一个I/O节点完成。
由此可见,在单一任务情况下,多I/O节点的结构形同虚设,根本无法负载均衡的为前端计算节点提供服务响应。
为了解决这一问题。
可以考虑在多I/O节点间需要引入文件级共享的工作机制。
方案二、多I/O节点间文件级共享在引入文件共享技术的SAN架构下,各个I/O节点可以同时读取同一文件。
这为I/O 节点间的负载均衡提供了可能。
然而SAN架构下的文件共享并没有解决所有问题,其实这一技术仅仅是为解决问题提供了底层的支持而已。
从图中可以看到,所有计算节点被人为划分成两部分,每个I/O节点为其中一个部分提供I/O服务响应。
也就是说,在计算节点的层面上,系统是手工负载均衡,而非自动负载均衡。
在大多数实际应用环境中,手工负载均衡意味着繁重的管理工作任务。
每当增加新的计算任务或者调整参与计算的CPU数量时,几乎所有的NFS共享卷绑定关系必须重新配置。
而当多个作业同时运行,尤其是每个作业要求的CPU资源还不尽相同时,配置合理的绑定关系将是系统管理人员的一场噩梦。
造成这一问题的根本原因在于,多I/O节点为系统引入了多个逻辑数据源,而目前主流并行集群系统都是在单一数据源的结构下开发的。
既然现有应用不能在短时期内有所改变,能否在提高前端计算节点I/O能力的同时,回归到单一逻辑数据源的结构呢?其实,以目前的技术而言,答案是肯定的。
方案三、单I/O节点蜕化为MDC,计算节点直接接入SAN目前SAN架构下文件共享的技术已经较为成熟,如果将全部计算节点都接入SAN,而将I/O节点设置为MDC(Meta Data Controller),就可以在提高系统I/O能力的同时,形式上保留原有的单一I/O节点,单一数据源的逻辑结构。
在这一架构下,各个计算节点形式上还是通过NFS共享访问I/O节点,但实际的数据读写路径则通过SAN交换直接到达磁盘阵列。
这种模式的可行性已经在现实中被证实。
例如,IBM公司的GPFS技术就是以这种方式解决集群的I/O瓶颈问题的。
这一架构从技术上看似乎是无懈可击的。
它真的一举解决了所有问题的问题吗?非也!当考虑到成本的时候,问题就出现了。
即使按照最保守的32个节点计算,在不考虑容错的前提下,整个SAN系统需要至少提供32个端口用于连接主机,另外还至少需要4个端口连接磁盘阵列。
要建立如此庞大的SAN网络,其成本将相当可观,这也就失去了Linux并行集群的最大优势----性能价格比。
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替代传统的NFS共享之后,多I/O节点被虚拟为一个单一数据源。
各个前端计算节点可以面对这个单一的数据源进行读写操作,省去了复杂的管理。
而PVFS架构中的管理服务器,将前端的所有I/O请求均衡负载到各个I/O节点,从而实现了系统I/O的自动负载均衡。
需要说明的是,PVFS本身有两个重要版本。
其中PVFS1存在严重的单点故障问题,一旦管理服务器宕机,则整个系统都无法正常工作。
PVFS2中针对这个隐患做了比较大的修正,不再单独设立管理服务器,而是各个运行IOD进程的节点都可以接管该功能,以此来改善系统的单点故障问题。
以PVFS构建的系统甚至不再需要SAN系统内文件共享,因为每个原始数据文件在I/O 节点一级就被分割为一组小数据块,分散存储。
笔者对这一方案的顾忌在于技术的成熟度和服务保证。
PVFS目前还不是由商业公司最终产品化的商品,而是基于GPL开放授权的一种开放技术。
虽然免费获取该技术使整体系统成本进一步降低,但由于没有商业公司作为发布方,该技术的后续升级维护等一系列服务,都难以得到保证。
综上所述,笔者认为上述方案各有优势,但问题也同样明显。
如果用户可以接受管理维护的复杂性,那么方案二似乎最为经济实惠。
如果用户愿意接受基于GPL无原厂商服务支持的自由产品,并在短期内不考虑对非Linux集群系统的整合问题,则可以采用PVFS技术,即采用方案五。
方案三虽然是所有方案中性能最好的,但其高昂的成本显然不是每一个用户都愿意接受的。