raid10 raid01 raid5詳解

RAID基礎,RAID10與RAID01比較,RAID10與RAID5比較

文檔中,RAID10與RAID5抄襲了piner的文章,敬請諒解。
文檔內容3部分:
1、基本的RAID級別介紹
2、RAID10和RAID01的比較
3、RAID10和RAID5的比較

RAID10和RAID01的比較
 RAID10是先做鏡象,然後再做條帶。
 RAID01則是先做條帶,然後再做鏡象。
比如以6個盤爲例,RAID10就是先將盤分成3組鏡象,然後再對這3個RAID1做條帶。RAID01則是先利用3塊盤做RAID0,然後將另外3塊盤做爲RAID0的鏡象。
下面以4塊盤爲例來介紹安全性方面的差別:
1、RAID10的情況

這種情況中,我們假設當DISK0損壞時,在剩下的3塊盤中,只有當DISK1一個盤發生故障時,纔會導致整個RAID失效,我們可簡單計算故障率爲1/3。
2、RAID01的情況

這種情況下,我們仍然假設DISK0損壞,這時左邊的條帶將無法讀取。在剩下的3塊盤中,只要DISK2,DISK3兩個盤中任何一個損壞,都會導致整個RAID失效,我們可簡單計算故障率爲2/3。
因此RAID10比RAID01在安全性方面要強。

從數據存儲的邏輯位置來看,在正常的情況下RAID01和RAID10是完全一樣的,而且每一個讀寫操作所產生的IO數量也是一樣的,所以在讀寫性能上兩者沒什麼區別。而當有磁盤出現故障時,比如前面假設的DISK0損壞時,我們也可以發現,這兩種情況下,在讀的性能上面也將不同,RAID10的讀性能將優於RAID01。

BTxigua 上傳了這個圖片:
document.body.clientWidth-230) this.width=document.body.clientWidth-230" border="0" />

RAID10RAID5的比較

爲了方便對比,這裏拿同樣多驅動器的磁盤來做對比,RAID5選擇3D+1PRAID方案,RAID10選擇2D+2DRAID方案,如圖:

 

 

1、安全性方面的比較

其實在安全性方面,勿須質疑,肯定是RAID10的安全性高於RAID5。我們也可以從簡單的分析來得出。當盤1損壞時,對於RAID10,只有當盤1對應的鏡象盤損壞,才導致RAID失效。但是對於RAID5,剩下的3塊盤中,任何一塊盤故障,都將導致RAID失效。

在恢復的時候,RAID10恢復的速度也快於RAID5

 

2、空間利用率的比較

RAID10的利用率是50%RAID5的利用率是75%。硬盤數量越多,RAID5的空間利用率越高。

 

3、讀寫性能方面的比較

主要分析分析如下三個過程:讀,連續寫,離散寫。

在介紹這三個過程之前,先介紹一個特別重要的概念:cache

cache已經是整個存儲的核心所在,就是中低端存儲,也有很大的cache存在,包括最簡單的raid卡,一般都包含有幾十,甚至幾百兆的raid cache

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

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

 

1)讀操作方面的性能差異

RAID10可供讀取有效數據的磁盤個數爲4RAID5可供讀取有效數據的磁盤個數也爲4個(校驗信息分佈在所有的盤上),所以兩者的讀的性能應該是基本一致的。

 

 

2)連續寫方面的性能差異

在連續寫操作過程,如果有寫cache存在,並且算法沒有問題的話,RAID5RAID10甚至會更好一些,雖然也許並沒有太大的差別。(這裏要假定存儲有一定大小足夠的寫cache,而且計算校驗的cpu不會出現瓶頸)。

因爲這個時候的RAID校驗是在cache中完成,如4塊盤的RAID5,可以先在內存中計算好校驗,同時寫入3個數據+1個校驗。而RAID10只能同時寫入2個數據+2個鏡相。

 

如上圖所示,4塊盤的RAID5可以在同時間寫入123cache,並且在cache計算好校驗之後,這裏假定是6,同時把三個數據寫到磁盤。而4塊盤的RAID10不管cache是否存在,寫的時候,都是同時寫2個數據與2個鏡相。

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

 

3)離散寫方面的性能差異

例如oracle 數據庫每次寫一個數據塊的數據,如8K;由於每次寫入的量不是很大,而且寫入的次數非常頻繁,因此聯機日誌看起來會像是連續寫。但是因爲不保證能夠添滿RAID5的一個條帶,比如32K(保證每張盤都能寫入),所以很多時候更加偏向於離散寫入(寫入到已存在數據的條帶中)。

 

我們從上圖看一下離散寫的時候,RAID5RAID10工作方式有什麼不同。如上圖:我們假定要把一個數字2變成數字4,那麼對於RAID5,實際發生了4io:先讀出2與校驗6,可能發生讀命中然後在cache中計算新的校驗寫入新的數字4與新的校驗8

如上圖我們可以看到:對於RAID10,同樣的單個操作,最終RAID10只需要2io,而RAID5需要4io.

這裏我忽略了RAID5在那兩個讀操作的時候,可能會發生讀命中操作的情況。也就是說,如果需要讀取的數據已經在cache中,可能是不需要4io的。這也證明了cacheRAID5 的重要性,不僅僅是計算校驗需要,而且對性能的提升尤爲重要。

當然,並不是說cacheRAID10就不重要了,因爲寫緩衝,讀命中等,都是提高速度的關鍵所在,只不過RAID10cache的依賴性沒有RAID5那麼明顯而已。

 

4)磁盤的IOPS對比

假定一個case,業務的iops10000,讀cache命中率是30%,讀iops60%,寫iops40%,磁盤個數爲120,那麼分別計算在raid5raid10的情況下,每個磁盤的iops爲多少。

raid5:

單塊盤的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命中,實際只有4200iops

4 * (10000*0.4) 表示寫的iops,因爲每一個寫,在raid5中,實際發生了4io,所以寫的iops16000

爲了考慮raid5在寫操作的時候,那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

計算出來單個盤的iops148個,基本達到磁盤極限

raid10

單塊盤的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120

= (4200 + 8000)/120

= 102

可以看到,因爲raid10對於一個寫操作,只發生2io,所以,同樣的壓力,同樣的磁盤,每個盤的iops只有102個,還遠遠低於磁盤的極限iops

 

4、小結

所以要求較高的空間利用率,對安全性要求不是特別高、大文件存儲的系統採用RAID5比較好。

相反,安全性要求很高,不計成本,小數據量頻繁寫入的系統採用RAID10的方式比較好。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章