一客户那边出现了跟存储磁盘IOPS相关的问题:应用系统在调用数据库时特别慢,页面打开同样慢。最终一路排查下来,问题还是在存储端。存储中划给oracleRAC使用的RAID5,使用的是包含EMC存储操作系统在内的5块硬盘。
具体的说:这5块盘,都是FC 10K RPM的450G硬盘(每个盘的IOPS为140),磁盘最大的IOPS为700。假设读写比为2:1,能够提供给前端应用的IOPS只能为:350(RAID5是1读4写)。这样的IOPS,的确不能满足实际应用的使用需求所导致的情况。这个问题其实也不是碰到一次两次,就借着这次一起整理下关于磁盘IOPS的计算方式:
1、准备工作:
通常当数据库管理员提出需要更多存储空间的时候,他们还会指定必须要达到多少IOPS。首先需要知道I/O中读操作(Read)与写操作(Write)所占的百分比。然后通过下列公式,将主机的IOPS需求转换成硬盘实际IOPS负载:
在计算具体的磁盘IOPS之前,需要对常见的RAID类型的读写比、不同硬盘类型的IOPS值、具体应用的IOPS需求等等有一些了解。
不同RAID类型的IOPS计算公式:
不同磁盘类型的IOPS:
2、案例
看两个案例,其中第二个也是在客户现场碰到的实际情况。 IOPS的计算需要结合上述表格中的相应参数值。
1、20TB 存储空间同时满足 4500 IOPS 、 RAID5 ,从实际使用来说,如何计算不同 RAID 所支持的 IOPS ?RAID5 或者 RAID10 的时候分别需要多少块硬盘?
首先需要知道 I/O 中读操作与写操作所占的百分比。然后通过第 2 章节中的公式,将主机 IOPS 需求转换成硬盘实际 IOPS 负载:
假定 4500 IOPS 中读 / 写比是 2 https://www.3tt.net/?mod=artinfo&aid= 912:1 ,则不同的 RAID 类型 Drive IOPS 分别如下:
RAID10 :( 2/3 ) 4500+2 ( 1/3 ) *4500 = 6000 IOPS
RAID5 :( 2/3 ) 4500+4 ( 1/3 ) *4500 = 9000 IOPS
RAID6 :( 2/3 ) 4500+6 ( 1/3 ) *4500 = 12000 IOPS
再参照第 2 章节中不同硬盘类型的 IOPS 值,换算出需要多少块盘:
RAID10 :6000/180 = 34 块
RAID5 :9000/180 = 50 块
RAID6 :12000/180 = 67 块
1、客户环境中,存在一个 RAID group ,是由 5 块 450G 10K RPM 的 FC 盘组成,换算出该 RAID 支持的最大 IOPS 以及能够给前端应用提供的 IOPS
首先 10K RPM 的 FC 盘,单块盘的 IOPS 为 140 , 5 块盘最大 IOPS 值为 700 。
假设读写比为 2 :1 ,能够提供给前端应用的 IOPS 为:
( 2/3 ) X+4 ( 1/3 ) *X = 700
2*X = 700 X=350 能够提供给前端应用的 IOPS 为 350 。