儲存篇(3)

渣渣強發表於2018-07-08

raid篇

全稱Redundant Array of Independent Disks,主要是為了擴充磁碟能力。

raid0

許多檔案系統和卷管理系統都使用塊而不是扇區作為基本的儲存單位。假如以4個扇區作為塊大小,不同磁碟相同偏移的塊組成條帶這個概念。所以當有大檔案寫入的時候,資料有大概率可以以條帶為單位寫入,也就是說分塊寫入多個盤,而不是一個硬碟系統順序寫入,大大提高了速度。

raid1

raid0的缺點很明顯,但有一塊盤出現故障,整個陣列就會出現問題。那麼假如每次都是寫冗餘盤則提高資料安全性,即資料寫到工作盤,也必須寫到影子盤中。raid1的容量和寫入效能存在著木桶效應。

raid2

raid2的想法是在每個條帶做一個備份,其提供的思路是找到一個演算法,通過掩蓋一個數字,可以通過其他數字進行推算。raid2沒有引入加減,加法只能判斷是否出錯,沒辦法糾錯。所以raid2是採取了漢明碼進行校驗,漢明碼具有一位的糾錯能力,但如果兩位出錯則無法糾正。
科普:海明碼 2^K -1 >=M+K (m為資訊位個數)
海明碼(i=1,2,...,k)排在第位,然後將資料位依照從低到高的順序填在剩餘的空間裡,構成H1~H12。其中Ci的確定方法如下:

儲存篇(3)

儲存篇(3)
三.當接收方收到資訊T後,對T依據同樣的異或規則重新計算校驗碼。然後對接收到的C1C2C3C4和新計算出的C1C2C3C4進行按位異或運算,如果結果全為0,則傳輸無誤,如果結果不為0,則計算的結果對應的十進位制就表明了錯誤發生的位置,如結果為0101這表示第5位出錯也就是D2出錯(對應校驗位位置索引號和計算包含該編碼的位置)。

raid3

raid3的校驗盤使用xor進行儲存,raid3的條帶設定為4kb,適配了上層的資料組織,如果使用四塊盤,則條帶深度為2個扇區或者1kb。總之保持條帶大小為上層塊大小,在連續寫入時,可以以條帶為單位寫入,大大提高磁碟並行度。
raid3和raid2每次只能做一次io(io大於block size),不適合要求多io併發的情況,因此會造成io等待。raid3併發是一次io多磁碟併發存取。

raid4

為了提高io並行,raid4提高了條帶的寬度,使得一個io被禁錮在一個磁碟中,這個時候其他io就可以跟這個io同時進行,所以實現io併發需要增加資料的隨機分佈性。但這個方式有一個很大的錯誤就是會使得校驗盤變成熱點盤。

raid5

假設一塊磁碟沒辦法被多個io佔用,那麼將校驗盤做多塊則可以避免這個問題,因此raid5的設計就是將校驗盤分割開,組合在資料盤之中,避開raid4的問題。raid5的節省空間隨著磁碟數量的增加越來越少。raid5在隨機iops大的讀方面具有高效能。但其缺點是寫效能較差,它每次寫一個扇區就需要產生其校驗扇區。
Raid5寫的過程是這樣,新資料過來後,控制器立即讀取更新扇區舊資料,同時讀取這個條帶上的校驗資料,然後三者運算後將新的校驗資料寫會磁碟。

因此可以看到隨機併發io和寫效能二者取其一。所以對於raid4和raid5來說處理寫方面是失敗的,raid2和raid3比raid5好,因為其條帶小,正常的io可以覆寫所有盤。

raid5ee

加一塊冗餘校驗盤做熱備

raid10和raid01

raid10是在raid1的基礎上做raid0,當io落到raid0某位置上,假如第一塊raid1盤壞了,則備份盤可以代替,所以raid10只有在一組raid1壞了前提下才不可用,而對於raid01,假如第一塊盤有一個壞了,下一次io只能落到冗餘的raid0上,利用率低。

相關文章