Raid

刪除 RAID 1 中的“故障狀態”

  • January 13, 2021

我想知道如果(例如)有人出現錯誤的硬碟故障,是否有可能刪除 RAID 1 中的“故障”狀態。

我已經用Google搜尋了答案,並找到了幾個重新創建數組並添加“assume-clean”的教程,但我無法在正在執行的系統上執行此操作。那麼,是否有可能在將硬碟從 RAID 中移除之前對其進行“故障排除”?

mdadm 中沒有這樣的命令。如果您已將分區設置為故障狀態,則使其再次聯機的唯一方法是刪除並重新讀取它,例如

mdadm --remove /dev/md0 /dev/sdb1
mdadm --add /dev/md0 /dev/sdb1

故障狀態寫入磁碟/分區開頭的超級塊中,以及有關 RAID 的其他元數據。這些塊需要有足夠的資訊來重建 RAID,以防出現問題。

mdadm有一個將磁碟設置為故障的命令,但沒有人將其設置為健康,因為如果它出錯了,您可能會失去數據。但它們是你想要的情況。例如,在有 2 個托架的家用 NAS 中,您可以決定只使用一個磁碟(開始時)。通常,在這種情況下,那些 NAS 作業系統只用一個磁碟創建一個 RAID 1,而無需告知。如果稍後,無論出於何種原因,該磁碟被標記為已降級,您就會被卡住。即使您的磁碟是健康的。注意:可能會發生作業系統認為 I/O 響應太慢作為降級磁碟。

在這種情況下(您的 SMART 數據是乾淨的),唯一的解決方案是刪除故障狀態標誌。但這真的很危險。您必須首先停止您的 RAID。所有磁碟都將被分離,但超級塊和數據將保留在磁碟上。要擺脫超級塊,您必須使用此磁碟/分區和--assume-clean選項創建一個新的 RAID。這將在舊的超級塊之上寫入一個新的超級塊,但保留數據。請注意,如果沒有此選項,您可能會失去所有數據,並被警告即使使用它也始終存在風險。

所以在這個特定的例子中,類似於:

# Stop the RAID1
mdadm -S /dev/mdX
# Recreate a RAID1 with just one disk keeping the data as is
mdadm --create --assume-clean --level=1 --force --raid-devices=1 /dev/mdX /dev/sdXY

可能會刪除故障標誌。

順便說一句,如果您想知道為什麼不放第二張磁碟並使其同步。答案是:不可能與標記為有故障的磁碟同步任何內容mdadm

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