說說IO(七)- RAID

 

Raid很基礎,但是在存儲系統中佔據非常重要的地位,所有涉及存儲的書籍都會提到RAIDRAID通過磁盤冗餘的方式提高了可用性和可高性,一方面增加了數據讀寫速度,另一方面增加了數據的安全性。

 

RAID 0

 

對數據進行條帶化。使用兩個磁盤交替存放連續數據。因此可以實現併發讀寫,但帶來的問題是如果一個磁盤損壞,另外一個磁盤的數據將失去意義。RAID 0最少需要2塊盤。

 

 

 

 

RAID 1

 

對數據進行鏡像。數據寫入時,相同的數據同時寫入兩塊盤。因此兩個盤的數據完全一致,如果一塊盤損壞,另外一塊盤可以頂替使用,RAID 1帶來了很好的可靠性。同時讀的時候,數據可以從兩個盤上進行讀取。但是RAID 1帶來的問題就是空間的浪費。兩塊盤只提供了一塊盤的空間。RAID 1最少需要2塊盤。

 

 

 

 

RAID 5  RAID 4

使用多餘的一塊校驗盤。數據寫入時,RAID 5需要對數據進行計算,以便得出校驗位。因此,在寫性能上RAID 5會有損失。但是RAID 5兼顧了性能和安全性。當有一塊磁盤損壞時,RAID 5可以通過其他盤上的數據對其進行恢復。

 

如圖可以看出,右下角爲p的就是校驗數據。可以看到RAID 5的校驗數據依次分佈在不同的盤上,這樣可以避免出現熱點盤(因爲所有寫操作和更新操作都需要修改校驗信息,如果校驗都在一個盤做,會導致這個盤成爲寫瓶頸,從而拖累整體性能,RAID 4的問題)。RAID 5最少需要3塊盤。

 

 

RAID 6

 

RAID 6RAID 5類似。但是提供了兩塊校驗盤(下圖右下角爲pq的)。安全性更高,寫性能更差了。RAID 0最少需要4塊盤。

 

 

 

 

 

RAID 10Striped mirror

 

RAID 10RAID 0 RAID 1的結合,同時兼顧了二者的特點,提供了高性能,但是同時空間使用也是最大。RAID 10最少需要4塊盤。

 

 

 

需要注意,使用RAID 10來稱呼其實很容易產生混淆,因爲RAID 0+1RAID 10基本上只是兩個數字交換了一下位置,但是對RAID來說就是兩個不同的組成。因此,更容易理解的方式是“Striped mirrors”,即:條帶化後的鏡像——RAID 10;或者“mirrored stripes”,即:鏡像後的條帶化。比較RAID 10RAID 0+1,雖然最終都是用到了4塊盤,但是在數據組織上有所不同,從而帶來問題。RAID 10在可用性上是要高於RAID 0+1的:

 

  • RAID 0+1 任何一塊盤損壞,將失去冗餘。如圖4塊盤中,右側一組損壞一塊盤,左側一組損壞一塊盤,整個盤陣將無法使用。而RAID 10左右各損壞一塊盤,盤陣仍然可以工作。
  • RAID 0+1 損壞後的恢復過程會更慢。因爲先經過的mirror,所以左右兩組中保存的都是完整的數據,數據恢復時,需要完整恢復所以數據。而RAID 10因爲先條帶化,因此損壞數據以後,恢復的只是本條帶的數據。如圖4塊盤,數據少了一半。


RAID 50

RAID 50 RAID 10,先做條帶化以後,在做RAID 5。兼顧性能,同時又保證空間的利用率。RAID 50最少需要6塊盤。




總結:

  • RAIDLVM中的條帶化原理上類似,只是實現層面不同。在存儲上實現的RAID一般有專門的芯片來完成,因此速度上遠比LVM塊。也稱硬RAID
  • 如上介紹,RAID的使用是有風險的,如RAID 0,一塊盤損壞會導致所有數據丟失。因此,在實際使用中,高性能環境會使用RAID 10,兼顧性能和安全;一般情況下使用RAID 5RAID 50),兼顧空間利用率和性能;

 

 

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