圖 1) RAID 4 奇偶校驗(yàn)示例。

在本示例中,為了便于演示,計(jì)算奇偶校驗(yàn)的方式為將每個(gè)水平條帶中的值相加,然后將所得之和存儲(chǔ)為奇偶校驗(yàn)值 (3 + 1 + 2 + 3 = 9)。在實(shí)際操作中,將使用異或 (XOR) 運(yùn)算方式計(jì)算奇偶校驗(yàn)。

如果需要從單個(gè)故障中重建數(shù)據(jù),那么只需反向執(zhí)行用于生成奇偶校驗(yàn)的流程。例如,如果第一個(gè)磁盤發(fā)生故障,RAID 4 會(huì)根據(jù)其余磁盤的數(shù)據(jù)重新計(jì)算磁盤 1 的每個(gè)塊中的數(shù)據(jù);在本示例中,只需從存儲(chǔ)的奇偶校驗(yàn)值中減去其余磁盤的值 (9 – 3 – 2 – 1 = 3)。這也解釋了為什么單奇偶校驗(yàn) RAID 只能在單個(gè)磁盤出現(xiàn)故障時(shí)起到防護(hù)作用。您會(huì)發(fā)現(xiàn),如果缺少兩個(gè)值,則沒有足夠的信息來重新計(jì)算缺少的值。

在典型的 RAID 實(shí)施中,為了將新數(shù)據(jù)寫入已包含數(shù)據(jù)(和奇偶校驗(yàn))的條帶,您必須讀取奇偶校驗(yàn)塊并計(jì)算該條帶的新奇偶校驗(yàn)值,然后才能寫入數(shù)據(jù)塊和新奇偶校驗(yàn)塊。對于要寫入的每個(gè)塊,這是一筆很大的開銷。

NetApp 通過盡可能地在內(nèi)存中緩存寫入(通過 NVRAM 中的日志提供保護(hù)),然后寫入完整的 RAID 條帶和奇偶校驗(yàn)來減少這方面的損失。這樣一來,在寫入之前就無需讀取奇偶校驗(yàn)數(shù)據(jù),并且還支持 WAFL 針對完整的數(shù)據(jù)塊條帶執(zhí)行單奇偶校驗(yàn)計(jì)算。(確切的塊數(shù)目取決于 RAID 組大小。)由于在現(xiàn)有塊被修改時(shí),WAFL 絕不會(huì)覆蓋現(xiàn)有塊并且它可以將數(shù)據(jù)和元數(shù)據(jù)(描述數(shù)據(jù)組織方式的說明信息)寫入任意位置,因此上述目標(biāo)可以實(shí)現(xiàn)。而在其他數(shù)據(jù)布局中,修改過的數(shù)據(jù)塊一般會(huì)被覆蓋,并且元數(shù)據(jù)通常需要位于固定位置。

添加對角奇偶校驗(yàn):RAID-DP

NetApp RAID-DP 在每個(gè) RAID 組中使用兩個(gè)奇偶校驗(yàn)磁盤。一個(gè)奇偶校驗(yàn)磁盤存儲(chǔ)針對水平條帶計(jì)算的奇偶校驗(yàn),如前所述。另一個(gè)奇偶校驗(yàn)磁盤存儲(chǔ)根據(jù)對角條帶計(jì)算的奇偶校驗(yàn)。相對于圖 1 的水平奇偶校驗(yàn)圖,圖 2 添加了一個(gè)對角奇偶校驗(yàn)條帶(用藍(lán)底塊表示)并新增了一個(gè)奇偶校驗(yàn)磁盤(用“DP”表示)。

圖 2) 添加對角奇偶校驗(yàn)。

在計(jì)算中,對角奇偶校驗(yàn)條帶包括水平奇偶校驗(yàn)磁盤中的一個(gè)塊。對于原始 RAID 4 構(gòu)造中的所有磁盤(包括數(shù)據(jù)和奇偶校驗(yàn)磁盤),RAID-DP 采用相同的處理方式。請注意,在對角奇偶校驗(yàn)條帶中忽略了一個(gè)磁盤。圖 3 顯示了其他水平和對角奇偶校驗(yàn)條帶。

圖 3) 顯示水平和對角奇偶校驗(yàn)的多個(gè)條帶。

每個(gè)對角奇偶校驗(yàn)條帶僅缺少一個(gè)磁盤,并且每個(gè)對角缺少另一個(gè)不同的磁盤。還有一個(gè)在對角奇偶校驗(yàn)磁盤上未存儲(chǔ)奇偶校驗(yàn)的對角條帶(圖 3 中的白色塊)。這并不會(huì)影響恢復(fù)所有數(shù)據(jù)的能力。

從雙磁盤故障中恢復(fù)

通過結(jié)合使用水平和對角奇偶校驗(yàn),可以在同一 RAID 組中從雙磁盤故障中恢復(fù)。如果發(fā)生單個(gè)磁盤故障或者塊或位錯(cuò)誤,那么只需水平奇偶校驗(yàn)即可重新創(chuàng)建缺少的數(shù)據(jù)。

發(fā)生雙磁盤故障之后,RAID-DP 首先確定開始重建所在的鏈,如圖 4 所示。請謹(jǐn)記,僅當(dāng)缺少一個(gè)元素時(shí),才能通過奇偶校驗(yàn)重建數(shù)據(jù);這也是每個(gè)對角奇偶校驗(yàn)條帶跳過其中一個(gè)數(shù)據(jù)磁盤的原因。

使用對角奇偶校驗(yàn)開始 RAID-DP 恢復(fù)。

圖 4) 使用對角奇偶校驗(yàn)開始 RAID-DP 恢復(fù)。

如果使用對角奇偶校驗(yàn)恢復(fù)了第一個(gè)塊,那么轉(zhuǎn)而也可以使用水平奇偶校驗(yàn)恢復(fù)第二個(gè)塊(圖 4 中的第一行)。繼而又可以使用對角奇偶校驗(yàn)恢復(fù)另一個(gè)缺少的塊。此恢復(fù)鏈繼續(xù),直到由于條帶不存在任何對角奇偶校驗(yàn)而終止。此時(shí),將找到另一個(gè)切入點(diǎn),從 而開始恢復(fù)另一條對角和水平條帶鏈。最終,直至填滿足夠的缺少塊,即僅使用水平奇偶校驗(yàn)即可重新計(jì)算缺少奇偶校驗(yàn)的條帶的所有值。在 TR-3298:《RAID-DP》中更加全面地介紹了此流程。

在本文中,我簡化了這些示例,便于您更加輕松地了解關(guān)于 RAID-DP 的基本概念,但是重要的是要了解如何在具有包含數(shù)十個(gè)磁盤的 RAID 組以及百萬行數(shù)據(jù)的實(shí)際存儲(chǔ)部署中應(yīng)用相同的流程。雖然故障示例說明的是兩個(gè)相鄰數(shù)據(jù)磁盤的恢復(fù),但無論磁盤是否相鄰以及無論故障磁盤本身是數(shù)據(jù)磁盤還是奇偶校驗(yàn)磁盤,相同的流程均適用。

優(yōu)化寫入:RAID-DP

如前面 RAID 4 討論中所述,WAFL 總是盡可能地緩存完整的塊條帶并將其寫入磁盤。RAID-DP 在內(nèi)存中緩存數(shù)據(jù)塊,以通過一次讀取操作完成多個(gè)水平和對角奇偶校驗(yàn)計(jì)算。與 RAID 4 相比,RAID-DP 會(huì)帶來 2% 的性能開銷,這是計(jì)算對角奇偶校驗(yàn)和寫入第二個(gè)奇偶校驗(yàn)塊所帶來的額外開銷。

用例

至于 RAID-DP 的用例,由于該技術(shù)在 NetApp 存儲(chǔ)的應(yīng)用非常廣泛,因此相對于應(yīng)該使用該技術(shù)的情況,談?wù)摽赡苓x擇不使用它的一些情況會(huì)更加容易。超過 90% 的 NetApp 客戶已使用 RAID-DP,包括用于最重要的業(yè)務(wù)工作負(fù)載和性能要求最高的工作負(fù)載。RAID-DP 是 NetApp 所有全新存儲(chǔ)系統(tǒng)的默認(rèn)選項(xiàng),我們規(guī)定在最佳實(shí)踐中要使用 RAID-DP,并且在公布的性能基準(zhǔn)測試中也使用了 RAID-DP。所有 NetApp 軟件均與 RAID-DP 完全兼容。其他任何供應(yīng)商都不會(huì)宣稱其 RAID 6 實(shí)施可以做到這些。

您可能選擇使用 RAID 4 而不使用 RAID-DP 的唯一情況是對靈活性要求低的情況,如暫存空間、測試和實(shí)驗(yàn)室環(huán)境。

使用 RAID-DP

RAID-DP 是在 Data ONTAP 版本 6.5 中推出的。

創(chuàng)建 RAID-DP 卷

若要通過 RAID-DP RAID 組創(chuàng)建聚合(或傳統(tǒng)卷),請?jiān)诮柚?NetApp 圖形工具配置存儲(chǔ)時(shí)選擇對應(yīng)選項(xiàng),或?qū)?-t raid_dp 開關(guān)添加到聚合創(chuàng)建或卷創(chuàng)建命令。

如果未指定 RAID 類型,Data ONTAP 將自動(dòng)使用默認(rèn) RAID 類型 — 目前推出的所有 Data ONTAP 版本均采用 RAID-DP。您可以通過從 Data ONTAP 信息庫中選擇您所用的 Data ONTAP 版本來了解系統(tǒng)的默認(rèn)選項(xiàng)。(需要具有 NetApp NOW? 訪問權(quán)限。)

現(xiàn)有 RAID 4 RAID 組可以轉(zhuǎn)換為 RAID-DP??梢栽诰酆匣騻鹘y(tǒng)卷級別進(jìn)行轉(zhuǎn)換,并且必須具有可用于每個(gè) RAID 組的對角奇偶校驗(yàn)磁盤的磁盤(大小至少與 RAID 組中的最大磁盤相同)。

選擇 RAID-DP RAID 組大小

通過 RAID-DP 可使用更大的 RAID 組,從而可以抵消對奇偶校驗(yàn)所需的額外磁盤可用容量的影響。要降低甚至消除此影響,一個(gè)選擇是對于所使用的磁盤驅(qū)動(dòng)器類型,使用默認(rèn) RAID-DP 組大小?;谀J(rèn) RAID-DP RAID 組大小的倍數(shù)創(chuàng)建聚合。

對于硬盤驅(qū)動(dòng)器(SATA、FC 和 SAS),首選調(diào)整大小的方式是在 12 (10+2) 到 20 (18+2) 之間確定 RAID 組大小,從而獲得均勻的 RAID 組布局(所有 RAID 組包含相同數(shù)量的驅(qū)動(dòng)器)。如果多個(gè) RAID 組大小實(shí)現(xiàn)了均勻的 RAID 組布局,建議使用上述范圍之內(nèi)的更大的 RAID 組大小值。如果無法避免不完整的 RAID 組(有時(shí)會(huì)出現(xiàn)這種情況),則建議聚合所缺少的驅(qū)動(dòng)器數(shù)量最多比 RAID 組數(shù)量少一個(gè)(否則,您將會(huì)選擇下一個(gè)最小的 RAID 組大小)。應(yīng)在 RAID 組中均勻分布導(dǎo)致 RAID 組不完整的缺少的驅(qū)動(dòng)器,以使每個(gè) RAID 組所缺少的驅(qū)動(dòng)器不超過一個(gè)。

RAID-DP 管理

如果使用或轉(zhuǎn)換為 RAID-DP,操作流程需要很少的更改,甚至無需任何更改。存儲(chǔ)系統(tǒng)可以包含混合的 RAID 4 和 RAID-DP 聚合,并且用于管理的命令可保持不變。

RAID-DP 重建

如果發(fā)生雙磁盤故障,RAID-DP 將自動(dòng)提高重建流程的優(yōu)先級,從而可以更加快速地完成恢復(fù)。因此,從雙故障磁盤中重建數(shù)據(jù)所花費(fèi)的時(shí)間略微少于從單磁盤故障中重建數(shù)據(jù)。在發(fā)生雙磁盤故障的情況下,很可能是一個(gè)磁盤先于另一個(gè)磁盤發(fā)生故障,并且至少已使用水平奇偶校驗(yàn)重新創(chuàng)建一些信息。RAID-DP 將在第二個(gè)磁盤故障中缺少兩個(gè)元素的地方開始恢復(fù),以自動(dòng)調(diào)節(jié)此情況。

借助 Data ONTAP 所具有的一些選項(xiàng),存儲(chǔ)管理員可以調(diào)整 RAID 重建對系統(tǒng)性能所帶來的影響。

默認(rèn)情況下,raid.reconstruct.perf_impact 選項(xiàng)設(shè)置為“中”。此選項(xiàng)包括三個(gè)值:低、中和高。將此選項(xiàng)設(shè)置為“低”可能會(huì)增加 RAID 重建的完成時(shí)間,因?yàn)橄到y(tǒng)資源設(shè)置為優(yōu)先響應(yīng)前臺(tái) I/O。將此選項(xiàng)設(shè)置為“高”將支持 RAID 恢復(fù)操作與前臺(tái) I/O 競爭獲得更多系統(tǒng)資源(因而會(huì)降低前臺(tái) I/O 性能)。

在某些情況下,可能需要調(diào)整此選項(xiàng),但這應(yīng)該是最后的手段。NetApp 一般建議保留默認(rèn)值。

結(jié)論

NetApp RAID-DP 技術(shù)是一個(gè)重要的靈活性工具,可用于幾乎所有常見存儲(chǔ)工作負(fù)載。

本文作者:

NetApp高級技術(shù)營銷工程師 Carlos Alvarez 和技術(shù)營銷工程師 Jay White

?

分享到

huanghui

相關(guān)推薦