文章中心
鴻萌課堂:磁盤陣列 RAID 知識系列(三)
具有奇偶校驗功能的 RAID
RAID 5 利用條帶化和奇偶校驗技術(shù)的結(jié)合。在 RAID 5 中,數(shù)據(jù)流被分割成一定大小的塊(塊大小),然后依次寫入成員盤。在每一行中,有一個磁盤被指定存儲一定的校驗和,即所謂的奇偶校驗函數(shù),它是根據(jù)行中其他成員磁盤的數(shù)據(jù)計算出來的。當(dāng)單塊磁盤發(fā)生故障時,可以利用奇偶校驗計算出缺失的數(shù)據(jù)。通過這樣的方式提供了容錯功能。
RAID 5至少需要三塊磁盤。理論上,磁盤的最大數(shù)量不受限制,但在實(shí)際操作中,需要考慮到硬件RAID情況下控制器的容量。陣列的容量為(N-1)乘以N塊磁盤組成的陣列中最小的成員磁盤的大小。
這樣,在RAID 5中,一個磁盤的容量被用來存儲奇偶函數(shù)數(shù)據(jù),以提供容錯能力。
RAID 5 布局
根據(jù)奇偶校驗塊的位置和數(shù)據(jù)塊的寫入順序,RAID 5有四種不同的類型(注意,在下面的圖中,每行的第一個塊是紅色的)。
左右數(shù)組由奇偶塊如何分布到成員磁盤上決定。同步性和異步性定義了數(shù)據(jù)塊的順序。
對于RAID 5的數(shù)據(jù)恢復(fù),除了考慮塊的大小,起始偏移量和成員盤的順序外,所有這些參數(shù)都應(yīng)該被分析到。
在 RAID 5 陣列中,寫入大小小于數(shù)據(jù)塊大小的數(shù)據(jù),需要進(jìn)行以下操作:
讀取舊的數(shù)據(jù)塊
讀取舊的奇偶校驗塊
將舊數(shù)據(jù)塊中的數(shù)據(jù)與新到的數(shù)據(jù)塊進(jìn)行比較。每改變一個位,改變奇偶校驗中相應(yīng)的位。
寫入新的數(shù)據(jù)塊。
寫入新的奇偶校驗塊。
可以看出,奇偶校驗更新會降低系統(tǒng)的寫入性能。
對于等于或大于由N個數(shù)據(jù)塊組成的行的大小的寫入,由于不需要讀取舊的數(shù)據(jù)塊并查找變化,所以寫入速度會更快一些。
RAID 6
RAID 6 同時使用條帶和奇偶校驗技術(shù),但與 RAID 5 不同的是,它使用兩個獨(dú)立的奇偶校驗函數(shù),然后寫入兩個成員盤。通常情況下,其中一個奇偶校驗函數(shù)與 RAID 5 中的函數(shù)相同(XOR函數(shù)),而第二個函數(shù)則更為復(fù)雜。奇偶校驗數(shù)據(jù)有助于在兩個成員盤同時失效時恢復(fù)數(shù)據(jù)。
創(chuàng)建 RAID 6 至少需要4塊磁盤。陣列的容量是N塊磁盤組成的陣列中最小的成員磁盤大小的(N-2)倍。
讀取速度比單塊磁盤的情況下快(N-2)倍--行中的兩塊磁盤持有奇偶校驗,讀取時無用。這樣的讀取速度值與RAID 5>中大致相同。
在 RAID 6 中,寫入速度并沒有提高,因為每次寫入都需要重新計算和更新兩個不同的奇偶校驗塊。RAID 6 是相當(dāng)昂貴的存儲選項。然而,當(dāng)它需要一個大的和可靠的存儲空間時,那么 RAID 6 是最好的選擇之一,因為它可以在兩塊磁盤發(fā)生故障時保護(hù)數(shù)據(jù)。這可能發(fā)生在以下情況:
陣列正在重建(所謂的重建時間)。
由于操作者的錯誤而導(dǎo)致錯誤的磁盤被熱插拔。
數(shù)據(jù)恢復(fù)方面的思考
當(dāng)RAID 5中缺少一個硬盤時,會有一定的速度損失,因為缺少的硬盤上存儲的數(shù)據(jù)必須重新計算。然而,重新計算的速度仍然比讀取一個物理損壞的硬盤要快得多。因此,您應(yīng)該避免使用已知物理損壞(多個壞扇區(qū)或類似問題)的硬盤進(jìn)行恢復(fù)。
雖然 RAID 6 可以由控制器用N-2塊硬盤重建,但我們分析RAID 6陣列時最好還是需要N-1塊硬盤來分析恢復(fù)RAID6。
帶延遲奇偶校驗的RAID 5恢復(fù)
一些控制器(如HP SmartArray)使用非標(biāo)準(zhǔn)的條帶方案,稱為延遲奇偶校驗(DP)。
實(shí)際上,使用了兩個不同的塊大小,一個用于奇偶校驗,另一個用于數(shù)據(jù)。奇偶校驗塊大小是數(shù)據(jù)塊大小的整數(shù)倍。因此,在RAID配置中出現(xiàn)了兩個額外的參數(shù)--延遲和first delay。延遲參數(shù)表示多重性,即一個奇偶校驗塊中適合多少數(shù)據(jù)塊;first delay表示第一個奇偶校驗塊中包含多少數(shù)據(jù)塊??赡艿难舆t值有1、2、4、8、16、32,第一個延遲可以從1到延遲值。
延遲奇偶校驗的RAID的更多細(xì)節(jié)
延遲奇偶校驗的RAID恢復(fù)比上面簡單的模型稍微復(fù)雜一些。完整的模型包括起始偏移量,起始偏移量小于一個數(shù)據(jù)塊。因此,除了磁盤順序,還有7個數(shù)組參數(shù):
開始偏移量。
數(shù)據(jù)塊大小(對應(yīng)于沒有延遲的RAID中典型的塊大小)。
延遲(一個延遲奇偶校驗塊中的數(shù)據(jù)塊數(shù))。
Firstdelay(第一個延遲奇偶校驗塊中的數(shù)據(jù)塊數(shù))。
在第一個塊中的奇偶校驗位置。
旋轉(zhuǎn),它決定了奇偶校驗塊在數(shù)組中的位置變化。
數(shù)據(jù)放置的類型(同步或異步)。
請注意,偏移量和奇偶校驗塊開始的磁盤已經(jīng)改變。偏移量從2變?yōu)?,第一個奇偶校驗塊的磁盤變成了磁盤1而不是磁盤2。如果無法指定第一個奇偶校驗的磁盤,則偏移量增加,以便切斷奇偶校驗的第一整圈。在這個例子中,應(yīng)該使用的偏移量是13。理論上講,這樣的轉(zhuǎn)換會導(dǎo)致一些用戶數(shù)據(jù),本來在第一行的數(shù)據(jù),不能被工具讀取(由于負(fù)地址)。在這個例子中,灰色標(biāo)記的數(shù)據(jù)塊,從0到5,都會丟失。如果無法設(shè)置奇偶校驗開始的磁盤,我們將不得不使用偏移量為13.在這種情況下,從1到21(含21)的數(shù)據(jù)塊將丟失。
在實(shí)踐中,控制器元數(shù)據(jù)而不是用戶數(shù)據(jù)經(jīng)常被放置在這些塊中,因此所有的用戶數(shù)據(jù)仍然可以訪問。
RAID 6 恢復(fù)和 RAID 6 參數(shù)
RAID 6布局利用兩種不同的奇偶校驗功能,這有助于RAID 6陣列在雙磁盤故障下生存。盡管RAID6被認(rèn)為比RAID5更可靠,但控制器故障的概率是一樣的。因此,如果您的RAID6出現(xiàn)故障,這很可能是由于控制器故障造成的。為了從控制器故障中恢復(fù)RAID6,您需要知道或恢復(fù)以下參數(shù):
成員盤的數(shù)量
磁盤順序以及哪個磁盤是陣列中的第一個磁盤。
塊大小。
成員盤的起始偏移量。
每個奇偶函數(shù)的位置。
奇偶函數(shù)的旋轉(zhuǎn)。
用于計算第二個奇偶校驗函數(shù)的算法。
奇偶校驗函數(shù)的模式。
我們只有知道這些參數(shù)才能成功重建RAID6。
RAID 6 的復(fù)雜性
RAID 6比RAID 5復(fù)雜得多。
第一個奇偶校驗函數(shù)(XOR,圖中表示為P)自然來自RAID5。然而,第二個奇偶校驗函數(shù)(Q)沒有被廣泛接受的標(biāo)準(zhǔn)。通常情況下,使用Reed-Solomon碼或其一些變體。 Reed-Solomon碼取決于輸入的順序。這又產(chǎn)生了四種變化:從左到右或從右到左,以及如果P或Q先計算。有幾種布局的變化,可容納兩個奇偶函數(shù)。