Linux

如何安全地更換 Linux RAID5 陣列中尚未發生故障的磁碟?

  • December 9, 2021

我在 4 個磁碟上有一個軟體 RAID5 陣列(Linux md)。

我想用一個新磁碟替換其中一個磁碟,而不使陣列處於降級狀態,如果可能的話,聯機。這怎麼可能?

這很重要,因為我不想:

  • 冒著給其他磁碟帶來壓力的風險,這樣一個磁碟可能會在重建期間崩潰,
  • 冒著處於“非平價狀態”的風險,所以我有一段時間沒有安全網了。

我想線上這樣做要求太多,我應該dd將舊磁碟的數據原始複製()到離線的新磁碟然後替換它,但我認為理論上是可能的……

一些背景:這些磁碟幾乎都在連續旋轉超過 5.5 年。目前它們仍然可以完美執行,並且都通過了(長時間的)SMART 自測。但是,我有理由認為這 4 個磁碟中的一個不會持續太久(假設是預測性故障)。

使用 mdadm 3.3+

mdadm3.3(2013 年 9 月 3 日發布)開始,如果您有3.2+ 核心,您可以按照以下方式進行操作:

# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1

sdd1是您要更換的設備,sdc1是這樣做的首選設備,並且必須在陣列上聲明為備用設備。

--with選項是可選的,如果未指定,將使用任何可用的備用。

較舊的 mdadm 版本

注意:您仍然需要3.2+ 核心

首先,添加一個新驅動器作為備用驅動器(分別替換RAIDmd0sdc1磁碟設備):

# mdadm /dev/md0 --add /dev/sdc1

然後,啟動這樣的複制替換操作(sdd1作為故障設備):

# echo want_replacement > /sys/block/md0/md/dev-sdd1/state 

結果

系統會將所有可讀塊從 複製sdd1sdc1。如果涉及到一個不可讀的塊,它將從奇偶校驗中重建它。操作完成後,之前的備用驅動器(此處:sdc1)將變為活動狀態,故障驅動器將被標記為故障 (F),以便您將其移除。

注意:歸功於frostschutzAnsgar Esztermann,他們找到了原始解決方案(請參閱重複的問題)。

較舊的核心

其他答案建議:

  • Johnny方法:將陣列轉換為 RAID6,“替換”磁碟,然後返回 RAID5,
  • Hauke Laging方法:從 RAID5 陣列中暫時移除磁碟,使用新磁碟使其成為 RAID1(鏡像)的一部分,然後將該鏡像驅動器添加回 RAID5 陣列(理論上)…

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