圖 1) RAID 4 奇偶校驗示例。
在本示例中,為了便于演示,計算奇偶校驗的方式為將每個水平條帶中的值相加,然后將所得之和存儲為奇偶校驗值 (3 + 1 + 2 + 3 = 9)。在實際操作中,將使用異或 (XOR) 運算方式計算奇偶校驗。
如果需要從單個故障中重建數(shù)據(jù),那么只需反向執(zhí)行用于生成奇偶校驗的流程。例如,如果第一個磁盤發(fā)生故障,RAID 4 會根據(jù)其余磁盤的數(shù)據(jù)重新計算磁盤 1 的每個塊中的數(shù)據(jù);在本示例中,只需從存儲的奇偶校驗值中減去其余磁盤的值 (9 – 3 – 2 – 1 = 3)。這也解釋了為什么單奇偶校驗 RAID 只能在單個磁盤出現(xiàn)故障時起到防護作用。您會發(fā)現(xiàn),如果缺少兩個值,則沒有足夠的信息來重新計算缺少的值。
在典型的 RAID 實施中,為了將新數(shù)據(jù)寫入已包含數(shù)據(jù)(和奇偶校驗)的條帶,您必須讀取奇偶校驗塊并計算該條帶的新奇偶校驗值,然后才能寫入數(shù)據(jù)塊和新奇偶校驗塊。對于要寫入的每個塊,這是一筆很大的開銷。
NetApp 通過盡可能地在內(nèi)存中緩存寫入(通過 NVRAM 中的日志提供保護),然后寫入完整的 RAID 條帶和奇偶校驗來減少這方面的損失。這樣一來,在寫入之前就無需讀取奇偶校驗數(shù)據(jù),并且還支持 WAFL 針對完整的數(shù)據(jù)塊條帶執(zhí)行單奇偶校驗計算。(確切的塊數(shù)目取決于 RAID 組大小。)由于在現(xiàn)有塊被修改時,WAFL 絕不會覆蓋現(xiàn)有塊并且它可以將數(shù)據(jù)和元數(shù)據(jù)(描述數(shù)據(jù)組織方式的說明信息)寫入任意位置,因此上述目標(biāo)可以實現(xiàn)。而在其他數(shù)據(jù)布局中,修改過的數(shù)據(jù)塊一般會被覆蓋,并且元數(shù)據(jù)通常需要位于固定位置。
添加對角奇偶校驗:RAID-DP
NetApp RAID-DP 在每個 RAID 組中使用兩個奇偶校驗磁盤。一個奇偶校驗磁盤存儲針對水平條帶計算的奇偶校驗,如前所述。另一個奇偶校驗磁盤存儲根據(jù)對角條帶計算的奇偶校驗。相對于圖 1 的水平奇偶校驗圖,圖 2 添加了一個對角奇偶校驗條帶(用藍底塊表示)并新增了一個奇偶校驗磁盤(用“DP”表示)。
圖 2) 添加對角奇偶校驗。
在計算中,對角奇偶校驗條帶包括水平奇偶校驗磁盤中的一個塊。對于原始 RAID 4 構(gòu)造中的所有磁盤(包括數(shù)據(jù)和奇偶校驗磁盤),RAID-DP 采用相同的處理方式。請注意,在對角奇偶校驗條帶中忽略了一個磁盤。圖 3 顯示了其他水平和對角奇偶校驗條帶。
圖 3) 顯示水平和對角奇偶校驗的多個條帶。
每個對角奇偶校驗條帶僅缺少一個磁盤,并且每個對角缺少另一個不同的磁盤。還有一個在對角奇偶校驗磁盤上未存儲奇偶校驗的對角條帶(圖 3 中的白色塊)。這并不會影響恢復(fù)所有數(shù)據(jù)的能力。
從雙磁盤故障中恢復(fù)
通過結(jié)合使用水平和對角奇偶校驗,可以在同一 RAID 組中從雙磁盤故障中恢復(fù)。如果發(fā)生單個磁盤故障或者塊或位錯誤,那么只需水平奇偶校驗即可重新創(chuàng)建缺少的數(shù)據(jù)。
發(fā)生雙磁盤故障之后,RAID-DP 首先確定開始重建所在的鏈,如圖 4 所示。請謹記,僅當(dāng)缺少一個元素時,才能通過奇偶校驗重建數(shù)據(jù);這也是每個對角奇偶校驗條帶跳過其中一個數(shù)據(jù)磁盤的原因。
圖 4) 使用對角奇偶校驗開始 RAID-DP 恢復(fù)。
如果使用對角奇偶校驗恢復(fù)了第一個塊,那么轉(zhuǎn)而也可以使用水平奇偶校驗恢復(fù)第二個塊(圖 4 中的第一行)。繼而又可以使用對角奇偶校驗恢復(fù)另一個缺少的塊。此恢復(fù)鏈繼續(xù),直到由于條帶不存在任何對角奇偶校驗而終止。此時,將找到另一個切入點,從 而開始恢復(fù)另一條對角和水平條帶鏈。最終,直至填滿足夠的缺少塊,即僅使用水平奇偶校驗即可重新計算缺少奇偶校驗的條帶的所有值。在 TR-3298:《RAID-DP》中更加全面地介紹了此流程。
在本文中,我簡化了這些示例,便于您更加輕松地了解關(guān)于 RAID-DP 的基本概念,但是重要的是要了解如何在具有包含數(shù)十個磁盤的 RAID 組以及百萬行數(shù)據(jù)的實際存儲部署中應(yīng)用相同的流程。雖然故障示例說明的是兩個相鄰數(shù)據(jù)磁盤的恢復(fù),但無論磁盤是否相鄰以及無論故障磁盤本身是數(shù)據(jù)磁盤還是奇偶校驗磁盤,相同的流程均適用。
優(yōu)化寫入:RAID-DP
如前面 RAID 4 討論中所述,WAFL 總是盡可能地緩存完整的塊條帶并將其寫入磁盤。RAID-DP 在內(nèi)存中緩存數(shù)據(jù)塊,以通過一次讀取操作完成多個水平和對角奇偶校驗計算。與 RAID 4 相比,RAID-DP 會帶來 2% 的性能開銷,這是計算對角奇偶校驗和寫入第二個奇偶校驗塊所帶來的額外開銷。
用例
至于 RAID-DP 的用例,由于該技術(shù)在 NetApp 存儲的應(yīng)用非常廣泛,因此相對于應(yīng)該使用該技術(shù)的情況,談?wù)摽赡苓x擇不使用它的一些情況會更加容易。超過 90% 的 NetApp 客戶已使用 RAID-DP,包括用于最重要的業(yè)務(wù)工作負載和性能要求最高的工作負載。RAID-DP 是 NetApp 所有全新存儲系統(tǒng)的默認選項,我們規(guī)定在最佳實踐中要使用 RAID-DP,并且在公布的性能基準(zhǔn)測試中也使用了 RAID-DP。所有 NetApp 軟件均與 RAID-DP 完全兼容。其他任何供應(yīng)商都不會宣稱其 RAID 6 實施可以做到這些。
您可能選擇使用 RAID 4 而不使用 RAID-DP 的唯一情況是對靈活性要求低的情況,如暫存空間、測試和實驗室環(huán)境。
使用 RAID-DP
RAID-DP 是在 Data ONTAP 版本 6.5 中推出的。
創(chuàng)建 RAID-DP 卷
若要通過 RAID-DP RAID 組創(chuàng)建聚合(或傳統(tǒng)卷),請在借助 NetApp 圖形工具配置存儲時選擇對應(yīng)選項,或?qū)?-t raid_dp 開關(guān)添加到聚合創(chuàng)建或卷創(chuàng)建命令。
如果未指定 RAID 類型,Data ONTAP 將自動使用默認 RAID 類型 — 目前推出的所有 Data ONTAP 版本均采用 RAID-DP。您可以通過從 Data ONTAP 信息庫中選擇您所用的 Data ONTAP 版本來了解系統(tǒng)的默認選項。(需要具有 NetApp NOW? 訪問權(quán)限。)
現(xiàn)有 RAID 4 RAID 組可以轉(zhuǎn)換為 RAID-DP。可以在聚合或傳統(tǒng)卷級別進行轉(zhuǎn)換,并且必須具有可用于每個 RAID 組的對角奇偶校驗磁盤的磁盤(大小至少與 RAID 組中的最大磁盤相同)。
選擇 RAID-DP RAID 組大小
通過 RAID-DP 可使用更大的 RAID 組,從而可以抵消對奇偶校驗所需的額外磁盤可用容量的影響。要降低甚至消除此影響,一個選擇是對于所使用的磁盤驅(qū)動器類型,使用默認 RAID-DP 組大小。基于默認 RAID-DP RAID 組大小的倍數(shù)創(chuàng)建聚合。
對于硬盤驅(qū)動器(SATA、FC 和 SAS),首選調(diào)整大小的方式是在 12 (10+2) 到 20 (18+2) 之間確定 RAID 組大小,從而獲得均勻的 RAID 組布局(所有 RAID 組包含相同數(shù)量的驅(qū)動器)。如果多個 RAID 組大小實現(xiàn)了均勻的 RAID 組布局,建議使用上述范圍之內(nèi)的更大的 RAID 組大小值。如果無法避免不完整的 RAID 組(有時會出現(xiàn)這種情況),則建議聚合所缺少的驅(qū)動器數(shù)量最多比 RAID 組數(shù)量少一個(否則,您將會選擇下一個最小的 RAID 組大小)。應(yīng)在 RAID 組中均勻分布導(dǎo)致 RAID 組不完整的缺少的驅(qū)動器,以使每個 RAID 組所缺少的驅(qū)動器不超過一個。
RAID-DP 管理
如果使用或轉(zhuǎn)換為 RAID-DP,操作流程需要很少的更改,甚至無需任何更改。存儲系統(tǒng)可以包含混合的 RAID 4 和 RAID-DP 聚合,并且用于管理的命令可保持不變。
RAID-DP 重建
如果發(fā)生雙磁盤故障,RAID-DP 將自動提高重建流程的優(yōu)先級,從而可以更加快速地完成恢復(fù)。因此,從雙故障磁盤中重建數(shù)據(jù)所花費的時間略微少于從單磁盤故障中重建數(shù)據(jù)。在發(fā)生雙磁盤故障的情況下,很可能是一個磁盤先于另一個磁盤發(fā)生故障,并且至少已使用水平奇偶校驗重新創(chuàng)建一些信息。RAID-DP 將在第二個磁盤故障中缺少兩個元素的地方開始恢復(fù),以自動調(diào)節(jié)此情況。
借助 Data ONTAP 所具有的一些選項,存儲管理員可以調(diào)整 RAID 重建對系統(tǒng)性能所帶來的影響。
默認情況下,raid.reconstruct.perf_impact 選項設(shè)置為“中”。此選項包括三個值:低、中和高。將此選項設(shè)置為“低”可能會增加 RAID 重建的完成時間,因為系統(tǒng)資源設(shè)置為優(yōu)先響應(yīng)前臺 I/O。將此選項設(shè)置為“高”將支持 RAID 恢復(fù)操作與前臺 I/O 競爭獲得更多系統(tǒng)資源(因而會降低前臺 I/O 性能)。
在某些情況下,可能需要調(diào)整此選項,但這應(yīng)該是最后的手段。NetApp 一般建議保留默認值。
結(jié)論
NetApp RAID-DP 技術(shù)是一個重要的靈活性工具,可用于幾乎所有常見存儲工作負載。
本文作者:
NetApp高級技術(shù)營銷工程師 Carlos Alvarez 和技術(shù)營銷工程師 Jay White
?