Linux
如何安全地更換 Linux RAID5 陣列中尚未發生故障的磁碟?
我在 4 個磁碟上有一個軟體 RAID5 陣列(Linux md)。
我想用一個新磁碟替換其中一個磁碟,而不使陣列處於降級狀態,如果可能的話,聯機。這怎麼可能?
這很重要,因為我不想:
- 冒著給其他磁碟帶來壓力的風險,這樣一個磁碟可能會在重建期間崩潰,
- 冒著處於“非平價狀態”的風險,所以我有一段時間沒有安全網了。
我想線上這樣做要求太多,我應該
dd
將舊磁碟的數據原始複製()到離線的新磁碟然後替換它,但我認為理論上是可能的……一些背景:這些磁碟幾乎都在連續旋轉超過 5.5 年。目前它們仍然可以完美執行,並且都通過了(長時間的)SMART 自測。但是,我有理由認為這 4 個磁碟中的一個不會持續太久(假設是預測性故障)。
使用 mdadm 3.3+
從
mdadm
3.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+ 核心。
首先,添加一個新驅動器作為備用驅動器(分別替換RAID
md0
和sdc1
磁碟設備):# mdadm /dev/md0 --add /dev/sdc1
然後,啟動這樣的複制替換操作(
sdd1
作為故障設備):# echo want_replacement > /sys/block/md0/md/dev-sdd1/state
結果
系統會將所有可讀塊從 複製
sdd1
到sdc1
。如果涉及到一個不可讀的塊,它將從奇偶校驗中重建它。操作完成後,之前的備用驅動器(此處:sdc1
)將變為活動狀態,故障驅動器將被標記為故障 (F),以便您將其移除。注意:歸功於frostschutz和Ansgar Esztermann,他們找到了原始解決方案(請參閱重複的問題)。
較舊的核心
其他答案建議: