昨天苏州一客户那边出现了跟存储磁盘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类型

公式

RAID5RAID3

Drive IOPS=Read IOPS + 4*Write IOPS

RAID6

Drive IOPS=Read IOPS+6*Write IOPS

RAID1RAID10

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 IOPSRAID5,从实际使用来说,如何计算不同RAID所支持的IOPSRAID5或者RAID10的时候分别需要多少块硬盘?

首先需要知道I/O中读操作与写操作所占的百分比。然后通过第2章节中的公式,将主机IOPS需求转换成硬盘实际IOPS负载:

假定4500 IOPS中读/写比是21,则不同的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值,换算出需要多少块盘:

RAID106000/180 = 34

RAID59000/180 = 50

RAID612000/180 = 67

   2)   客户环境中,存在一个RAID group,是由5450G 10K RPMFC盘组成,换算出该RAID支持的最大IOPS以及能够给前端应用提供的IOPS

首先10K RPMFC盘,单块盘的IOPS1405块盘最大IOPS值为700

假设读写比为21,能够提供给前端应用的IOPS为:

2/3*X+4*1/3*X = 700

2*X = 700 X=350  能够提供给前端应用的IOPS350