圖 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è)磁盤(pán)發(fā)生故障,RAID 4 會(huì)根據(jù)其余磁盤(pán)的數(shù)據(jù)重新計(jì)算磁盤(pán) 1 的每個(gè)塊中的數(shù)據(jù);在本示例中,只需從存儲(chǔ)的奇偶校驗(yàn)值中減去其余磁盤(pán)的值 (9 – 3 – 2 – 1 = 3)。這也解釋了為什么單奇偶校驗(yàn) RAID 只能在單個(gè)磁盤(pán)出現(xiàn)故障時(shí)起到防護(hù)作用。您會(huì)發(fā)現(xiàn),如果缺少兩個(gè)值,則沒(méi)有足夠的信息來(lái)重新計(jì)算缺少的值。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

用例

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

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

使用 RAID-DP

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

創(chuàng)建 RAID-DP 卷

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

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

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

選擇 RAID-DP RAID 組大小

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

對(duì)于硬盤(pán)驅(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 組大小值。如果無(wú)法避免不完整的 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)器不超過(guò)一個(gè)。

RAID-DP 管理

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

RAID-DP 重建

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

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

默認(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 競(jìng)爭(zhēng)獲得更多系統(tǒng)資源(因而會(huì)降低前臺(tái) I/O 性能)。

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

結(jié)論

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

本文作者:

NetApp高級(jí)技術(shù)營(yíng)銷(xiāo)工程師 Carlos Alvarez 和技術(shù)營(yíng)銷(xiāo)工程師 Jay White

?

分享到

huanghui

相關(guān)推薦