Device | Type | IOPS |
---|---|---|
7,200 rpm SATA drives | HDD | ~75-100 IOPS[2] |
10,000 rpm SATA drives | HDD | ~125-150 IOPS[2] |
10,000 rpm SAS drives | HDD | ~140 IOPS [2] |
15,000 rpm SAS drives | HDD | ~175-210 IOPS [2] |
RAID level | Read | Write |
---|---|---|
RAID 0 | 1 | 1 |
RAID 1 and 10 | 1 | 2 |
RAID 5 | 1 | 4 |
RAID 6 | 1 | 6 |
假設你有10個驅動器,每個驅動器的IOPS為150,那么總的IOPS為1500
如果使用raid5的話可以得到1500個讀IOPS,375個寫IOPS.
如何監控讀寫操作的IOPS?
使用windows自帶的perfmon監控如下值:
邏輯/物理磁盤的Avg.Disk read/sec,Avg.Disk write/sec.
還有Disk Transfers/sec.Disk Transfers/sec是讀寫IOPS的綜合
磁盤響應時間(Disk Response Time)條目
1.Avg. Disk sec/Transfer:顯示了存儲端處理的每個IO的平均時間。
2.Avg. Disk sec/Read:顯示了存儲端處理的每個讀IO的平均時間。
3.Avg. Disk sec/Write:顯示了存儲端處理的每個寫IO的平均時間。
上述條目顯示的單位都是毫秒ms
IOPS條目
1.Disk Transfers/sec:顯示了磁盤上的IOPS總數,直觀的顯示了說對應LUN上的每秒IO的吞吐量。
2.Disk Reads/sec:顯示了磁盤每秒的讀IO數量。
3.Disk Writes/sec:顯示了磁盤每秒的寫IO數量。
Throughput(MB/s)條目:
1.Disk Bytes/sec:顯示了磁盤上的總的數據傳輸量,單位為Byte。
2.Disk Read Bytes/sec:顯示了磁盤上讀數據的傳輸量。
3.Disk Write Bytes/sec:顯示了磁盤上寫數據的傳輸量。
讀寫百分比
% idle time 、%disk time、%disk read time、% disk write time這幾個值顯示磁盤處於做讀寫狀態的百分比。理論上,disk time%這個值應該小於100%,否則則說明磁盤處於極度繁忙狀態,或存在性能問題。
隊列條目
Avg. Disk Queue Length、Avg. disk read queue length、Avg. disk write queue length、Current Disk Queue Length這幾個值顯示了磁盤隊列長度的相關信息。所謂Disk Queue也就是服務器端發出的存儲操作正在等待被存儲處理的請求數目。例如有一個應用發出一條讀請求,但是目標磁盤當時正在處理其他任務。那么這個新的讀請求就會被放在磁盤隊列里。這時候磁盤隊列的值就是1。理論上講,Current Disk Queue Length的這個值不應該長時間地大於2。Avg. Disk Queue Length的值也是,如果看到采樣期間,平均的Queue Length大於1,則說明在采樣的某段時間存儲無法完全響應應用端說發出的IO請求的。
參數 |
描述 |
值 |
磁盤轉速 |
這個參數直接影響磁盤能夠從正確的扇區讀取數據的快慢 |
15,000 RPM: 150 隨機 IOPS |
Read/Write |
IOPS 可以分解為讀和寫操作。不同的進程對讀寫的密集程度不一。讀、寫比例影響總IOPS |
|
RAID 級別 |
RAID 配置會由於不同類型的冗余影響實際寫的數量。寫懲罰會影響總IOPS |
RAID 0: 無RAID 懲罰 |
桌面 生命周期 |
每個桌面有6種狀態,每個階段對存儲子系統都有不同的影響. |
啟動: 26 IOPS
登出: 12 IOPS Offline: 0 IOPS |
根據這6種不同的虛擬桌面狀態可以幫助架構師基於每服務器計算IOPS需求和完整的虛擬桌面基礎架構.公式如下 :
總原生 IOPS=磁盤轉速 IOPS * 磁盤數目
舉例而言: 假設我們有8 塊72G 的15,000 轉 SCSI3 驅動,並按照RAID 10 配置。那么,這個存儲系統總共會產生720 個功能性IOPS,計算公式如下:
功能性 IOPS=(((總原生 IOPS×寫 %))/(RAID 懲罰))+(總原生IOPS×讀 %)
總原生 IOPS=150×8=1200
功能性IOPS=(((1200× .8))/2)+(1200×.2)= 720
如果是MCS, 功能性IOPS =(1200*0.5)/2+ 1200*0.5=900
這個計算會幫助確定當所有的桌面執行同樣行為時候的可能性,當然,不是所有的情況都適合。實際上,在不同的hypervisor 上,不同的虛擬機狀態可能是不一樣的。因此,作為一個架構師來說,你需要根據不同桌面的綜合體驗來計算不同的服務器需求。根據計算,很有可能你都會發現可能你根本不需要SAN,使用本地硬盤就足夠了!
淺談RAID寫懲罰(Write Penalty)與IOPS計算
介紹
通常在討論不同RAID保護類型的性能的時候,結論都會是RAID-1提供比較好的讀寫性能,RAID-5讀性能不錯,但是寫入性能就不如RAID-1,RAID-6保護級別更高,但寫性能相對更加差,RAID10是提供最好的性能和數據保護,不過成本最高等等。其實決定這些性能考慮的因素很簡單,它就是RAID Write Penalty(寫懲罰)。本文從原理上解釋了不同RAID保護級別的寫懲罰,以及通過寫懲罰計算可用IOPS的方法。
更多信息
RAID-5 Write Penalty的例子:
存儲方案規划的過程中,最基本的考慮因素有兩個,性能和容量。性能上的計算看可以分為IOPS和帶寬需求。計算IOPS,拋開存儲陣列的緩存和前端口不談。計算后端物理磁盤的IOPS不能簡單的把物理磁盤的最大IOPS相加而獲得。原因是,對於不同的RAID級別,為了保證當有物理磁盤損壞的情況下可以恢復數據,數據寫入的過程中都需要有一些特別的計算。比如對於RAID-5,條帶上的任意磁盤上的數據改變,都會重新計算校驗位。如下圖所示,一個7+1的RAID-5的條帶中,七個磁盤存儲數據,最后一個磁盤存儲校驗位。
對於一個數據的寫入,我們假設在第五個磁盤上寫入的數據為1111,如下圖所示。那么整個RAID-5需要完成寫入的過程分為以下幾步:
1.讀取原數據0110,然后與新的數據1111做XOR操作: 0110 XOR 1111 = 1001
2.讀取原有的校驗位0010
3.用第一步算出的數值與原校驗位再做一次XOR操作: 0010 XOR 1001 = 1011
4.然后將1111新數據寫入到數據磁盤,將第三步計算出來的新的校驗位寫入校驗盤。
由上述幾個步驟可見,對於任何一次寫入,在存儲端,需要分別進行兩次讀+兩次寫,所以說RAID-5的Write Penalty的值是4。
不同RAID級別的Write Penalty:
下表列出了各種RAID級別的Write Penalty值:
RAID-0:直接的條帶,數據每次寫入對應物理磁盤上的一次寫入
RAID-1和10:RAID-1 和RAID-10的寫懲罰很簡單理解,因為數據的鏡像存在的,所以一次寫入會有兩次。
RAID-5:RAID-5由於要計算校驗位的機制存在,需要讀數據、讀校驗位、寫數據、寫校驗位四個步驟,所以RAID-5的寫懲罰值是4。
RAID-6:RAID-6由於有兩個校驗位的存在,與RAID-5相比,需要讀取兩次校驗位和寫入兩次校驗位,所以RAID-6的寫懲罰值是6。
計算IOPS:
根據上文的描述,在實際存儲方案設計的過程中,計算實際可用IOPS的過程中必須納入RAID的寫懲罰計算。計算的公式如下:
物理磁盤總的IOPS = 物理磁盤的IOPS × 磁盤數目
可用的IOPS = (物理磁盤總的IOPS × 寫百分比 ÷ RAID寫懲罰) + (物理磁盤總的IOPS × 讀百分比)
假設組成RAID-5的物理磁盤總共可以提供500 IOPS,使用該存儲的應用程序讀寫比例是50%/50%,那么對於前端主機而言,實際可用的IOPS是:
(500 ×50% ÷ 4)+ ( 500 * 50%) = 312.5 IOPS
通常當數據庫管理員提出需要更多存儲空間的時候,他們還會指定必須要達到多少IOPS。現在有這樣一個需求,20TB存儲空間同時滿足4500 IOPS+RAID 5,我應該如何計算?RAID 5或者RAID 1/0的時候分別需要多少塊硬盤?
RAID類型 | 公式 |
---|---|
RAID 5和3 | Drive IOPS = Read IOPS + 4*Write IOPS |
RAID 6 | Drive IOPS = Read IOPS + 6*Write IOPS |
RAID 1和1/0 | Drive IOPS = Read IOPS + 2*Write IOPS |
假定4500 IOPS中讀/寫比是2:1,則不同RAID類型Drive IOPS要求分別如下:
RAID 1/0: (2/3)*4500 + 2*(1/3)*4500 = 6000 IOPS
RAID 5: (2/3)*4500 + 4*(1/3)*4500 = 9000 IOPS
RAID 6: (2/3)*4500 + 6*(1/3)*4500 = 12000 IOPS
再參照下表中不同類型硬盤單塊IOPS參數,得出需要多少塊硬盤:
硬盤類型 | IOPS |
---|---|
Fibre Channel 15k rpm | 180 |
SAS 15k rpm | 180 |
Fibre Channel 10k rpm | 140 |
SATA 7.2k rpm | 80 |
SATA 5.4k rpm | 40 |
Flash drive | 2500 |
假定選用FC 15K RPM硬盤,則:
RAID 1/0: 6000/180 = 34 塊
RAID 5: 9000/180 = 50 塊
RAID 6: 12000/180 = 67 塊
注:實際情況下還需考慮Vault Drivers (共5塊)以及Hot Spares (建議每30塊硬盤一個)。
最后,如果選用600GB FC硬盤來實現20TB可用空間,則RAID 1/0需要78塊,RAID 5需要42塊。