Raid

RAID6 擦洗錯配修復?

  • July 30, 2018

您可以使用 啟動 mdadm 陣列的清理echo 'check' > /sys/block/mdX/md/sync_action,如果發現壞扇區,它將自動重寫它(來自鏡像或來自 RAID5/6 的奇偶校驗資訊)。

但是,如果所有塊讀取成功但發現不一致,則認為這是不匹配。在這種情況下,修復很複雜,因為 mdadm 無法判斷哪個鏡像包含正確的數據 (RAID1/10) 或者是數據還是奇偶校驗損壞 (RAID5)。

理論上,如果我正確理解 RAID6,RAID6 就不是這種情況。因為存在雙奇偶校驗,所以應該可以查明單個損壞的位置,無論是數據還是奇偶校驗。

  1. 我的理解是否正確,這在理論上應該可行嗎?
  2. 如果正確,mdadm 是否能夠在不猜測哪個塊損壞的情況下修復這些不一致的數據?

理論上是可能的:數據+奇偶校驗給你三個關於數據應該是什麼的意見;如果其中兩個是一致的,您可以假設第三個是不正確的,並根據前兩個重新編寫它。

Linux RAID6 不這樣做。相反,只要出現不匹配,就會假定兩個奇偶校驗值不正確,並根據數據值重新計算。有人提議改為“多數票”制度,但尚未實施。

mdadm軟體包包括raid6check 實用程序,該實用程序在奇偶校驗不匹配的情況下嘗試找出哪個磁碟是壞的,但它有一些粗糙的邊緣,預設情況下沒有安裝,並且不修復它發現的錯誤。

引用自:https://unix.stackexchange.com/questions/137384