Linux

從新 HDD 和帶有壞塊的舊 HDD 重新製作 SW RAID1

  • February 11, 2014

我有一個 SW RAID1,我剛剛用新的硬碟替換了 /dev/sda,因為舊硬碟出現故障。

現在,在嘗試重新創建 RAID 陣列時,我發現“好”硬碟 (/dev/sdb) 有壞塊,阻止 mdadm 重新同步陣列。

雖然我可以進行備份,也可以替換 /dev/sdb 並完全重新安裝伺服器,但我想知道是否有任何方法可以“欺騙” mdadm 重新同步 RAID 陣列,然後用新的 HDD 替換 /dev/sdb .

據我推測,壞塊位於 /dev/sdb 的未使用區域中,僅在嘗試重新創建 RAID 陣列時使用。

您能否驗證磁碟上受影響的塊和底層壞扇區是否重新分配到**“備用扇區”區域**?當寫操作失敗時,應該重新分配壞扇區。使用 smartctl 驗證它:

smartctl -a /dev/sdb | grep -i reallocated

最後一列應包含重新分配的扇區總數。如果為零,請嘗試讀取壞扇區:

hdparm –-read-sector XXXXXXXX /dev/sdb

它應該返回一個I/O 錯誤,否則我建議跳過下一節

該錯誤意味著該扇區尚未重新分配。所以你可以嘗試通過寫它來強制重新分配它。請記住,此步驟後儲存在該扇區中的任何數據都將失去!!!

hdparm –-write-sector XXXXXXXX --yes-i-know-what-i-am-doing /dev/sdb

順便說一句,應該可以從核心消息(dmesg 命令或/var/log/messages)中獲取扇區號**XXXXXXXX 。**由於您在重新同步期間遇到了壞塊,因此應該有一些類似的相關消息:

... end_request: I/O error, dev sdb, sector 1261071601

然後,嘗試再次使用 smartctl 進行驗證。計數器增加了嗎?如果是這樣,請嘗試使用 hdparm 閱讀它。現在,它應該沒有任何錯誤地讀取它,因為它應該被重新分配。完畢。

最後,您可以繼續使用 mdadm 並將磁碟添加到降級鏡像。

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