1. 程式人生 > >RAID10和RAID5區別比較,利用率與安全的取捨

RAID10和RAID5區別比較,利用率與安全的取捨

為了方便RAID 10和RAID5對比,這裡拿同樣多驅動器的磁碟來做對比(4個相同的磁碟),RAID 5可以選擇3D+1P的RAID方案,RAID 10則可以選擇2D+2D的RAID方案。

  • 安全性方面的比較, 其實在安全性方面,勿須質疑,肯定是RAID 10的安全性高於RAID 5。我們也可以從簡單的分析來得出。當盤1損壞時,對於RAID 10,只有當盤1對應的鏡象盤損壞,才導致RAID失效。但是對於RAID 5,剩下的3塊盤中,任何一塊盤故障,都將導致RAID失效, 在恢復的時候,RAID10恢復的速度也快於RAID5。
  • 空間利用率的比較: RAID 10的利用率是50%,RAID 5的利用率是75%。硬碟數量越多,RAID 5的空間利用率越高。
  • 讀寫效能方面的比較: 主要分析分析如下三個過程:讀,連續寫,離散寫。

在介紹這三個過程之前,先介紹一個特別重要的概念:cache(寫入快取), cache已經是整個儲存的核心所在,就是中低端儲存,也有很大的cache存在,包括最簡單的raid卡,一般都包含有幾十,甚至幾百兆的Raid cache。

Cache的主要作用是什麼呢?體現在讀與寫兩個不同的方面,如果作為寫,一般儲存陣列只要求寫到cache就算完成了寫操作,所以,陣列的寫是非常快速的,在寫cache的資料積累到一定程度,陣列才把資料刷到磁碟,可以實現批量的寫入,至於cache資料的保護,一般都依賴於鏡相與電池(或者是UPS)。

Cache的讀一樣不可忽視,因為如果讀能在cache中命中的話,將減少磁碟的尋道,因為磁碟從尋道開始到找到資料,一般都在6ms以上,而這個時間,對於那些密集型io的應用可能不是太理想。但是,如果cache能命中,一般響應時間則可以在1ms以內。兩者應該相差3個數量級(1000倍)。

讀操作方面的效能比較

RAID 10可供讀取有效資料的磁碟個數為4,RAID 5可供讀取有效資料的磁碟個數也為4個(校驗資訊分佈在所有的盤上),所以兩者的讀的效能應該是基本一致的。

連續寫方面的效能比較

在連續寫操作過程,如果有寫cache存在,並且演算法沒有問題的話,RAID 5比RAID 10甚至會更好一些,雖然也許並沒有太大的差別。(這裡要假定儲存有一定大小足夠的寫cache,而且計算校驗的cpu不會出現瓶頸)。 因為這個時候的RAID校驗是在cache中完成,如4塊盤的RAID 5,可以先在記憶體中計算好校驗,同時寫入3個數據+1個校驗。而RAID 10只能同時寫入2個數據+2個鏡相。

根據前面對快取原理的介紹,寫cache是可以快取寫操作的,等到快取寫資料積累到一定時期再寫到磁碟。但是,寫到磁碟陣列的過程是遲早也要發生的,所以RAID 5與RAID 10在連續寫的情況下,從快取到磁碟的寫操作速度會有較小的區別。不過,如果不是連續性的強連續寫,只要不達到磁碟的寫極限,差別其實並不是太大。

離散寫方面的效能比較

如果採用的是 oracle 資料庫,每次寫一個數據塊的資料,如8K;由於每次寫入的量不是很大,而且寫入的次數非常頻繁,因此聯機日誌看起來會像是連續寫。但是因為不保證能夠添滿RAID 5的一個數據條帶塊,比如32K(保證每個盤都能寫入),所以很多時候更加偏向於離散寫入(寫入到已存在資料的條帶中)。在 離散寫的時候對於RAID5,實際發生了4次i/o:但 對於RAID 10,同樣的操作,最終RAID 10只需要2個i/o操作,但是,在RAID 5中, 如果需要讀取的資料已經在cache中,可能並不需要4個io的。這也證明了cache對RAID5 的重要性,不僅僅是計算校驗需要,而且對效能的提升尤為重要。 當然,並不是說cache對RAID10就不重要了,因為寫緩衝,讀命中等,都是提高速度的關鍵所在,只不過RAID 10對cache的依賴性沒有RAID 5那麼明顯而已。

磁碟世紀讀寫操作(機械 電磁操作)的IOPS對比

假定有一個數據請求事件,其iops是10000,讀cache命中率是30%,讀iops為60%,寫iops為40%,磁碟個數為120,那麼分別計算在raid5與raid10的情況下,每個磁碟的iops為多少。

Raid 5: 單塊盤的iops =(10000*(1-0.3)*0.6+4*(10000*0.4))/120=(4200+16000)/120=168

這裡的10000*(1-0.3)*0.6表示是讀的iops,比例是0.6,除掉cache命中,實際只有4200個iops。4*(10000*0.4)表示寫的iops,因為每一個寫,在raid 5中,實際發生了4個io,所以寫的iops為16000個。

為了考慮raid 5在寫操作的時候,那2個讀操作也可能發生命中,所以更精確的計算為:單塊盤的iops = (10000*(1-0.3)*0.6+2*(10000*0.4)*(1-0.3)+2*(10000*0.4))/120=(4200 + 5600 + 8000)/120=148計算出來單個盤的iops為148個,基本達到磁碟極限。

Raid10:單塊盤的iops=(10000*(1-0.3)*0.6+2*(10000*0.4))/120=(4200+8000)/120=102

可以看到,因為raid 10對於一個寫操作,只發生2次io,所以,同樣的壓力,同樣的磁碟,每個盤的iops只有102個,這遠遠低於磁碟的極限iops。

Raid10和Raid5對比結論

要求較高的空間利用率,對安全性要求不是特別高、大檔案儲存的系統採用RAID 5比較好。相反,安全性要求很高,不計成本,小資料量頻繁寫入的系統採用RAID 10的方式比較好。另外關於限制: 在Raid 10中,四個硬碟的總空間不能大於3.8T,這樣現在的大容量磁碟: 1T的就無法使用,限制了儲存空間,而RAID 5就基本不存在這種限制。另外,磁碟數量增加,對電源的要求上升,能耗也加大了,且伺服器散熱風扇的噪音也將急劇增大。

http://mtoou.info/raid10-raid5-bijiao/http://mtoou.info/raid10-raid5-bijiao/