昨天苏州一客户那边出现了跟存储磁盘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之前,需要对常见的RAID类型的读写比、不同硬盘类型的IOPS值、具体应用的IOPS需求等等有一些了解。
不同RAID类型的IOPS计算公式:
RAID类型 |
公式 |
RAID5、RAID3 |
Drive IOPS=Read IOPS + 4*Write IOPS |
RAID6 |
Drive IOPS=Read IOPS+6*Write IOPS |
RAID1、RAID10 |
Drive IOPS=Read IOPS+2*Write IOPS |
不同磁盘类型的IOPS:
硬盘类型 |
IOPS |
FC 15K RPM |
180 |
FC 10K RPM |
140 |
SAS 15K RPM |
180 |
SAS 10K RPM |
150 |
SATA 10K RPM |
290 |
SATA 7.2K RPM |
80 |
SATA 5.4K RPM |
40 |
Flash drive |
2500 |
2、案例
看两个案例,其中第二个也是昨天在客户现场碰到的实际情况。 IOPS的计算需要结合上述表格中的相应参数值。
1) 20TB存储空间同时满足4500 IOPS、RAID5,从实际使用来说,如何计算不同RAID所支持的IOPS?RAID5或者RAID10的时候分别需要多少块硬盘?
首先需要知道I/O中读操作与写操作所占的百分比。然后通过第2章节中的公式,将主机IOPS需求转换成硬盘实际IOPS负载:
假定4500 IOPS中读/写比是2: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块
2) 客户环境中,存在一个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。