起的。如果瓶颈定位于存储,那么可能是由于服务I/O的磁盘数量不足,在控制器造成争用,或是阵列前端口带宽不足。
性能调优需要针对不同应用程序负载来完成。针对大型文件和流数据的调优并不适合于小型文件,反之亦然。这也就是为什么在大多数存储系统中往往做一个平衡,需要用户尝试并找出系统的折中。用户通常需要优化吞吐量或IOPS,但并不需要对两者同时优化。
3.RAID组中的磁盘故障。特别是在RAID 5中会造成性能的下降,因为系统需要重建校验数据。相比数据读写操作,重建会对性能造成更大影响。
即便坏盘是造成故障的根源,但控制器还是可能成为瓶颈,因为在重建过程中它需要不停地服务数据。当重建完成时,性能才会恢复正常。
4.部署了一种新的应用,而卷存在于处理繁忙邮件系统的同一磁盘。如果新的应用变得繁忙,邮件系统性能将会遭受影响。额外的流量最终会将磁盘完全覆盖。
存储瓶颈常发区域:
存储区域网络(STORAGE-AREA NETWORK, SAN)/阵列前端口
存储部署于集中化SAN环境时,需考虑服务器和SAN之间的潜在网络瓶颈。例如,运行多部虚拟机的整合服务器可能不具备支持工作负载要求的足够网络端口。添加网络端口或转移网络密集型工作负载至其他服务器可解决这一问题。如前所述,对于带宽集中型应用,需考虑NFS有多少FIBER CHANNEL 端口, OR ISCSI 端口 OR ETHERNET 端口,需要用户站在带宽的角度来考量整个架构。
可能发生的问题包括:
? ? ? ? ?
如果阵列中端口数量不够,就会发生过饱和/过度使用。 虚拟服务器环境下的过量预定 端口间负载不均衡
交换机间链路争用/流量负荷过重
如某一HBA端口负载过重将导致HBA拥塞。使用虚拟机会导致问题更加严重。
存储控制器
一个标准的主动——被动或主动——主动控制器都有一个性能极限。接近这条上限取决于用户有多少块磁盘,因为每块磁盘的IOPS和吞吐量是固定的。
可能出现的问题包括:
? ? ? ?
控制器I/O过饱和,使得从缓存到阵列能够处理的IOPS受到限制 吞吐量“淹没“处理器 CPU过载/处理器功率不足 性能无法跟上SSD
CACHE
由于服务器内存和CPU远比机械磁盘快得多,需为磁盘添加高速内存以缓存读写数据。例如,写入磁盘的数据存储在缓存中直到磁盘能够跟上,同时磁盘中的读数据放入缓存中直到能被主机读取。CACHE比磁盘快1000倍,因此将数据写入和读出CACHE对性能影
响巨大。智能缓存算法能够预测你需要查找的数据,你是否会对此数据频繁访问,甚至是将访问频繁的随机数据放在缓存中。
可能发生的问题包括:
? ? ? ?
CACHE MEMORY不足
CACHE写入过载,引起性能降低 频繁访问顺序性数据引起CACHE超负荷
CACHE中需要持续不断地写入新数据,因此如果CACHE总是在REFILL,将无法
从CACHE获益。
磁盘
磁盘瓶颈与磁盘转速有关, 慢速磁盘会引入较多延时。存储性能问题的排查首先考虑的因素就是磁盘速度,同时有多少块磁盘可进行并发读写。而另一因素是磁盘接口。采用更快的接口能够缓解磁盘瓶颈,但更重要的是在快速接口与相应更大的缓存大小以及转速之间取得平衡。同样,应避免将快速和慢速磁盘混入同一接口,因为慢速磁盘将会造成快速接口与快速磁盘的性能浪费。
可能引发的问题包括:
? ? ? ?
过多应用命中磁盘
磁盘数量不足以满足应用所需的IOPS或吞吐量 磁盘速度过慢无法满足性能需求及支持繁重工作负荷
DISK GROUP往往是CLASSIC存储架构的潜在性能瓶颈,这种结构下RAID最多
配置在16块磁盘。THIN结构通常每个LUN拥有更多磁盘,从而数据分布于更多SPINDLE,因增加的并发性而减少了成为瓶颈的可能。
需要监控的指标:
曾经一度存储厂商们强调的是IOPS和吞吐量,但现在重点逐渐转变成为响应时间。也就是说,不是数据移动的速度有多快,而在于对请求的响应速度有多快。
正常情况下,15,000 RPM FIBRE CHANNEL磁盘响应时间为4MS,SAS磁盘响应时间约为5MS至6MS,SATA为10MS,而SSD少于1MS。如果发现FIBRE CHANNEL磁盘响应时间为12MS,或SSD响应时间变成5MS,那么就说明可能产生了争用,可能芯片发生了故障。
除了响应时间,其他需要监控的指标包括:
? ? ? ? ? ?
队列长度,队列中一次积累的请求数量,平均磁盘队列长度; 平均I/O大小千字节数;
IOPS (读和写,随机和顺序,整体平均IOPS); 每秒百万字节吞吐量; 读写所占比例;
容量(空闲,使用和保留)。
数据存储性能最佳实践:
性能调优和改进的方式有很多种,用户当然可以通过添加磁盘,端口,多核处理器,内存来改善,但问题是:性价比,以及对业务是否实用。本文建议的方式是在预算范围内
找寻性能最大化的解决方案。另外一个需要考虑的方面是环境并非一尘不变,系统部署方案要能够适应环境的改变需求。
首先需要考虑刷数据的性能特征,需要了解IO工作情况是怎样的。是否是CACHE友好型?是否是CPU集中型?业务数据很大数量很少,还是很小但数量很多?另外一方面就是构成存储环境的组件。包括应用,存储系统本身,网络。。。瓶颈可能在哪里,改善哪里最有效?
以下是一些常规建议:
1. 不要仅仅根据空闲空间来分配存储,而需要结合考虑性能需求,确保为吞吐量或IOPS分配足够多的磁盘。
2. 在磁盘间均衡分布应用负载,以减少热点地区的产生。
3. 理解应用负载类型,并针对负载选择匹配的RAID类型。例如,写密集型应用建议使用RAID 1而不是RAID 5。因为当写入RAID 5时,需要计算校验位,需耗费较多时间。而RAID 1,写入两块磁盘速度快得多,无需计算。
4. 磁盘类型(FIBRE CHANNEL, SAS, SATA)与期望性能相匹配。对于关键业务应用部署高性能磁盘,例如15,000 RPM FIBRE CHANNEL。
5. 对于I/O密集型应用考虑采用SSD,但并不适用于写性能重要型应用。只要没有达到控制器瓶颈,SSD对读性能提升显著,但对写性能提升并没有明显效果。