RAID 5 Linux 磁碟機上目前無法讀取的磁區

RAID 5 Linux 磁碟機上目前無法讀取的磁區

我每 30 分鐘就會收到一次 smartd 訊息/var/log/messages

smartd[3588]:裝置:/dev/sdc,176 目前無法讀取(待處理)磁區

此磁碟機 (sdc) 是使用 mdadm 配置的 RAID 5 的一部分。 Mdadm 監視器顯示 RAID 正常,但我想知道是否需要更換磁碟機。此外,如果有必要將這個磁區或作業系統標記為壞,那麼它已經這樣做了。

如果我需要更換驅動器,如何選擇替換驅動器?我無法在硬碟規格中找到區塊數,因此如果我選擇的區塊數比原始硬碟少,我就會遇到麻煩。

答案1

是的,更換驅動器。

不可讀(待處理)磁區是指其內容無法讀取的磁區。在正常的非 RAID 情況下,當磁碟機一次又一次嘗試讀取磁區直至成功(或直至最終放棄)時,這會導致讀取錯誤或長時間延遲。

對於 RAID,會發生兩件事:

  1. 您的磁碟可能配置了較短的 TLER 值。因此,它將放棄在合理時間內讀取該扇區的嘗試。 (從而防止長時間掛起)。
  2. 您的 RAID 陣列注意到故障並從另一個磁碟讀取資料。這就是RAID 5的優點;你有一份備用副本。

你想做的是:

  1. 檢查您的備份。你不應該需要它們如果一切順利
  2. 取得相同或更大大小的替換磁碟。您可以使用 來檢查尺寸smartctl -a /dev/sdc。不要假設所有大小為 X 的磁碟機都具有相同的容量。製造商喜歡整數;一個 500 GB 驅動器很可能比另一個 500 GB 驅動器小。
  3. 將有問題的磁碟脫機。 ( mdadm --manage --remove /dev/mdX /dev/sdc)
  4. 用新硬體更換磁碟並讓陣列自行重建。 ( mdadm --add /dev/mdX /dev/sdc)

如果您使用大磁碟,那麼這將花費大量時間。有時,從頭開始重建 RAID 陣列並從備份中復原會更快。 (首先測試這些備份!)

當 RAID 重建時,您沒有冗餘。因此,如果另一個磁碟發生故障(例如由於重建的壓力),那麼您就會遇到問題。對於大型磁碟(重建時間較長)和相同日期的批次驅動器,有時會發生這種情況。

答案2

接受的答案通常很好,但從 mdadm 3.3 開始,您可以更換陣列中的驅動器,而無需先刪除故障的驅動器。如果故障的磁碟機大部分可讀,這可以保護您免受大多數雙重故障的影響。

假設 sdd 是新驅動器,而不是第 3 點和第 4 點,請執行以下操作:

  1. 將新磁碟機新增至陣列並將故障磁碟機取代為新磁碟機: mdadm /dev/mdX -add /dev/sdd --replace /dev/sdc --with /dev/sdd

它將觸發使用所有可能的可用資料進行重建,並在準備好時刪除故障/舊的磁碟機。

另外要注意的是,在建立新陣列時,最好在每個實體裝置上建立 1 個大分割區,並在分割區上而不是在原始裝置上建立 raid 陣列。

相關內容