信息化 频道

上下通连一条心

不同RAID对IOPS性能的影响

    在我们的上一篇文章“RAID5和RAID10,哪种RAID适合你()中曾经讨论过,在RAID5与RAID10的不同机制上,读数据时,IOPS性能其实没有差别。但是,相同的业务,在写入数据时,采用不同的RAID机制最终落在磁盘上的IOPS是有差别的,我们评估的正是磁盘的整体IOPS,如果达到了磁盘的限制,性能肯定是上不去了。

    那我们假定一个case,业务应用的IOPS是10000,读cache命中率是30%,读IOPS为60%,写IOPS为40%,磁盘个数为120,那么分别计算在RAID5与RAID10的情况下,每个磁盘的IOPS为多少。

    RAID5:
    1. 单块盘的IOPS = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120
    2.              = (4200 + 16000)/120
    3.              = 168

    这里的10000*(1-0.3)*0.6表示是读的IOPS,比例是0.6,除掉cache命中,实际只有4200个读IOPS。

    而4 * (10000*0.4) 表示写的IOPS,因为每一个写,在RAID5中,实际发生了4个io,所以写的IOPS为16000个。

    为了考虑RAID5在写操作的时候,那2个读操作也可能发生命中,所以更精确的计算应该为:
    1. 单块盘的IOPS = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120
    2.              = (4200 + 5600 + 8000)/120
    3.              = 148

    这样我们计算出来单个盘的IOPS为148个,基本达到磁盘IOPS极限,在这种情况下,磁盘的工作状态是非常不理想的。

    RAID10对IOPS性能的影响
    1. 单块盘的IOPS = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120
    2.              = (4200 + 8000)/120
    3.              = 102

    可以看到,因为RAID10对于一个写操作,只发生2次io,所以,同样的压力,同样的磁盘,每个盘的IOPS只有102个,还远远低于磁盘的极限IOPS。

    这里回到我们先前讨论的case上来,在我们先前采用RAID5的时候,通过分析,每个磁盘的IOPS在高峰时期,快达到200了,导致响应速度巨慢无比。改造成RAID10,每个磁盘的IOPS降到100左右,很好的避免了这个性能问题。

    因此,综合本文的上篇“RAID5和RAID10,哪种RAID适合你”,我们可以得出结论:

    影响读数据的关键因素是cache命中率,在读数据的情况下,RAID5与RAID10性能本身没有太大差别。但是对于写数据的一些应用,尤其是小I/O频繁写入的一些应用,如企业ERP生产系统等等,RAID10相比RAID5可能产生较大的性能差异。而大型文件存储,数据仓库,如医疗PACS系统、视频编辑系统则从空间利用的角度,建议采用RAID5。

0
相关文章