部分奇偶校驗日誌

部分奇偶校驗日誌 (PPL) 是 RAID5 陣列可用的功能。PPL 解決的問題是,在發生非正常關機後,特定條帶的奇偶校驗可能與其它成員磁碟上的資料不一致。如果陣列也處於降級狀態,則無法重新計算奇偶校驗,因為其中一個磁碟丟失。當重建陣列或在降級狀態下使用它時,這可能會導致靜默資料損壞 - 從奇偶校驗計算出的陣列塊的資料在非正常關機期間未被寫入請求觸及,這些資料可能不正確。這種情況被稱為 RAID5 寫入空洞。因此,預設情況下,md 不允許啟動損壞的降級陣列。

寫入操作的部分奇偶校驗是未被此寫入修改的條帶資料塊的 XOR。它足以用於從寫入空洞中恢復。將部分奇偶校驗與修改後的塊進行 XOR 運算會生成與寫入操作之前的狀態一致的條帶奇偶校驗,而不管哪些塊寫入已完成。如果此條帶的一個未修改資料磁碟丟失,則可以使用此更新的奇偶校驗來恢復其內容。在發生非正常關機後啟動陣列並且所有磁碟都可用時,也會執行 PPL 恢復,從而無需重新同步陣列。因此,不支援同時使用寫入意圖點陣圖和 PPL。

在處理寫入請求時,PPL 會在新資料和奇偶校驗傳送到磁碟之前寫入部分奇偶校驗。PPL 是一個分散式日誌 - 它儲存在陣列成員驅動器的元資料區域中,位於特定條帶的奇偶校驗驅動器上。它不需要專用日誌驅動器。寫入效能降低高達 30%-40%,但它可以隨著陣列中驅動器數量的增加而擴充套件,並且日誌驅動器不會成為瓶頸或單點故障。

與 raid5-cache(md 中用於關閉寫入空洞的另一種解決方案)不同,PPL 不是真正的日誌。它不能防止丟失正在進行的資料,只能防止靜默資料損壞。如果條帶的損壞磁碟丟失,則不會為此條帶執行 PPL 恢復(奇偶校驗不會更新)。因此,如果該磁碟丟失,條帶的寫入部分可能具有任意資料。在這種情況下,行為與普通 raid5 相同。

PPL 可用於 md version-1 元資料和外部(特別是 IMSM)元資料陣列。可以使用 mdadm 選項 --consistency-policy=ppl 啟用它。

PPL 對陣列中的最大磁碟數量有限制,最多為 64 個磁碟。這允許保持資料結構和實現的簡單性。具有如此多磁碟的 RAID5 陣列不太可能出現,因為存在多個磁碟故障的高風險。這種限制不應成為現實生活中的限制。