RAID 10 vs. RAID 5 Performance 上給出了使用SQLIO.EXE 產生8KB 隨機讀和寫的一個效能資料圖,相差接近一倍的效能差距。
磁碟存取時間=磁碟尋道時間+延遲
延遲時間=1minute/RPM/2
決定IOPS的主要因素在於陣列的演算法、Cache命中率,以及磁碟個數。陣列的演算法會由於陣列的不同而不同,例如在hds usp上面,可能因為ldev(lun)存在隊列或者資源限制,而導致單個ldev的IOPS上不去。所以我們在進行儲存I/O設計時,必須結合我們使用的儲存產品去瞭解這個儲存的一些演算法規則與限制。
在RAID5與RAID10上,讀IOPS沒有差別。但是,相同的業務寫IOPS,最終落在磁碟上的IOPS卻是有差別的,而我們評估的正是磁碟的IOPS,如果達到了磁碟的限制,效能肯定是上不去了。
1. 安全性方面的比較
其實在安全性方面,毋庸置疑,肯定是RAID10的安全性高於RAID5。我們可以通過簡單的分析來得出此結論。當盤1損壞時,對於RAID10,只有當盤1對應的鏡像盤也損壞,才會導致RAID失效。但是對於RAID5,剩下的3塊盤中,任何一塊盤出現故障,都將導致RAID失效。
在恢複的時候,RAID10恢複的速度也快於RAID5。
2. 空間利用率的比較
RAID10的利用率是50%,RAID5的利用率是75%。硬碟數量越多,RAID5的空間利用率越高。
3. 讀寫效能方面的比較
主要分析如下三個操作:讀、連續寫、離散寫。
提示:
儲存的Cache我們已經在2.1.3中講述,因為這三個操作跟Cache有很大的關係。
1) 讀操作方面的效能差異
RAID10可供讀取有效資料的磁碟個數為4,RAID5可供讀取有效資料的磁碟個數也為4個(校正資訊分布在所有的盤上),所以兩者在讀方面的效能應該是基本一致的。
2) 連續寫方面的效能差異
在連續寫操作過程中,如果有寫Cache存在,並且演算法沒有問題的話,RAID5比RAID10甚至會更好一些,雖然也許並沒有太大的差別(這裡要假定儲存有一定大小,足夠的寫Cache,而且計算校正的CPU不會出現瓶頸)。
因為這個時候的RAID校正是在Cache中完成,如4塊盤的RAID5,可以先在記憶體中計算好校正,然後同時寫入3個資料+1個校正。而RAID10隻能同時寫入2個資料+2個鏡像。
3) 離散寫方面的效能差異
例如SQL Server資料庫每次寫一個資料區塊的資料,如4KB或8KB,由於每次寫入的量不是很大,而且寫入的次數非常頻繁,因此聯機日誌看起來會像是連續寫。但是因為不保證能夠填滿RAID5的一個條帶,比如32KB(保證每張盤都能寫入),所以很多時候更加偏向於離散寫入(寫入到已存在資料的條帶中)。
4) 磁碟的IOPS對比
對空間利用率要求較高,而對安全性要求不是特別高的大檔案儲存體的系統,採用RAID5比較好。相反,安全性要求很高,不計成本,小資料量頻繁寫入的系統採用RAID10的方式比較好。
根據經驗與分析:小I/O的資料庫類型操作,如ERP等應用,建議採用RAID10;而大型檔案儲存體、資料倉儲,如醫學PACS系統、視頻編輯系統,從空間利用的角度,建議採用RAID5。
在一個實際的案例中,一個恢複壓力很大的standby(這裡主要是寫,而且是小IO的寫),採用了RAID5的方案,發現效能很差,通過分析,每個磁碟的IOPS在高峰時期,快達到200了,導致響應速度非常之慢。後來改造成RAID10,就避免了這個效能問題,每個磁碟的IOPS降到了100左右。所以,瞭解RAID5和RAID10原理,對我們根據應用系統的特點來做儲存I/O設計,從而保證效能非常重要。
相關文章:
RAID在SQL Server中的應用(RAID幾種層級)
RAID 10 vs. RAID 5 Performance
SQL Server之RAID簡介
SQL Server IO 子系統淺究 II
SQLIO測試 SAN
伺服器IO測試利器--SQLIO
Raid5 Raid10效能測試