Software-Raid

mdadm RAID5 陣列恢復停止而沒有 SCSI 錯誤

  • October 13, 2020

我有一個基於 md 的 RAID5 陣列,它已經執行了大約 2 年沒有問題。昨天我在一個磁碟上發生了自發磁碟和/或 PHY 重置(但不是實際的讀取錯誤)。md 將磁碟標記為故障,剩餘的陣列狀態為“乾淨,已降級”,因此我嘗試刪除並重新添加它。md 開始以良好的速度 (140M/s) 重新同步陣列,但在大約 0.6% 時重新同步速度開始下降,並且在大約 10 秒內 mdadm 退出並顯示消息“md: md0: recovery interrupted”而沒有任何 SCSI 或其他可見錯誤在 dmesg 輸出中(我目前的 SCSI 日誌記錄級別設置為 0x10012DD)。這發生在幾次嘗試中。smartctl -asmartctl -t short並且掃描所有磁碟的前 1%badblocks沒有出現任何錯誤。只讀xfs_repair -n正如預期的那樣,在降級的陣列上顯示了一堆 I/O 錯誤和錯誤的校驗和,但是在所有這些練習之後,重新同步已經超過了它早些時候退出的點。我現在badblocks在其餘磁碟上執行,並希望陣列最終會完成重新同步,這樣我就可以添加新磁碟並最終升級到 RAID6,但自然不能保證這會發生,這就引出了一個問題:

是否有可能使 md resync 克服錯誤並丟棄壞塊?我寧願最終得到一個 0.01% 損壞的數組,也不願什麼都沒有。我在數組中的數據並不重要,我可以在更高級別重新檢查它是否有錯誤,但從頭開始恢復它需要很長時間。

查看 raid5.c 中的驅動程式碼,似乎無法強制 md 在重新同步期間忽略錯誤。但是,如果沒有其他幫助,作為最後的手段,可以通過重新創建陣列來重新組裝陣列而無需強制重新同步--assume-clean,請參見例如RAID Wiki此答案

降級陣列上的只讀 xfs_repair -n 顯示了一堆 I/O 錯誤和錯誤校驗和,正如預期的那樣

預計不會:一個故障/失去的磁碟不會導致其他良好的 RAID5 陣列中的數據損壞。您可能在一個或另一個磁碟上有多個不可讀的數據扇區。mdadm雖然可以強制最近的版本繼續恢復,但內部壞塊列表非常小,並且當它已滿時重建中止。

我建議您仔細檢查所有磁碟的執行狀況。

引用自:https://serverfault.com/questions/1036257