昨天一客戶那邊出現了跟存儲磁盤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。