如何擺脫 mdadm 中頑固的“已移除”設備
我的伺服器的一個驅動器出現故障,因此我從所有三個相關陣列中移除了故障驅動器,更換了驅動器,然後將新驅動器添加到陣列中。其中兩個陣列完美執行。第三個將驅動器作為備用驅動器添加回來,
mdadm
詳細資訊中有一個奇怪的“已刪除”條目。我都試過了
mdadm /dev/md2 --remove failed
和
mdadm /dev/md2 --remove detached
正如這里和這裡所建議的那樣,兩者都沒有抱怨,但也沒有任何效果。
有誰知道我如何擺脫該條目並正確添加驅動器?(理想情況下不重新同步第三次,我已經不得不做兩次,這需要幾個小時。但如果這就是它所需要的,那就是它所需要的。)新驅動器是
/dev/sda
,相關分區是/dev/sda3
.這是數組的詳細資訊:
# mdadm --detail / dev / md2 /dev/md2: 版本:0.90 創建時間 : Wed Oct 26 12:27:49 2011 突襲等級:raid1 陣列大小:729952192(696.14 GiB 747.47 GB) 使用的開發大小:729952192(696.14 GiB 747.47 GB) 突襲設備:2 設備總數:2 首選未成年人:2 持久性:超級塊是持久的 更新時間:2013年11月12日星期二17:48:53 狀態:乾淨,退化 有源設備:1 工作裝置:2 失敗的設備:0 備用設備:1 UUID:2fdbf68c:d572d905:776c2c25:004bd7b2(本地到主機等等) 事件:0.34665 編號 主要次要 RaidDevice 狀態 0 0 0 0 已移除 1 8 19 1 主動同步 /dev/sdb3 2 8 3 - 備用 /dev/sda3
如果它是相關的,它是一個 64 位伺服器。它通常執行 Ubuntu,但現在我在數據中心的“救援”作業系統中,即 Debian 7 (wheezy)。上次我在 Ubuntu 中時,“已刪除”條目就在那裡(目前它不會從磁碟啟動),所以我認為這不是 Ubuntu/Debian 衝突(當然,它們非常接近有關的)。
更新:
在本地機器上對測試設備進行了廣泛的測試後,我很明顯地從
mdadm
這個陣列中得到了異常行為。例如,/dev/sda3
再次從數組中刪除後,我這樣做了:mdadm /dev/md2 --grow --force --raid-devices=1
這擺脫了“已移除”的設備,只剩下
/dev/sdb3
. 然後我 nuked/dev/sda3
(給它寫了一個文件系統,所以它不再有 raid fs),然後:mdadm /dev/md2 --grow --raid-devices=2
…這給了我一個在插槽 0 中並在插槽 1 中“刪除”的數組,
/dev/sdb3
正如您所期望的那樣。然後mdadm /dev/md2 --add /dev/sda3
…添加它 -再次作為備用。(又是 3.5 小時的下水道。)
所以有了陣列中重建的備用,鑑於
mdadm
手冊頁說RAID 設備更改
…
當設備數量增加時,任何存在的熱備件都將立即啟動。
…我將陣列增加到三個設備,以嘗試啟動“備用”:
mdadm /dev/md2 --grow --raid-devices=3
我得到了什麼?兩個“移除”設備和備用設備。然而,當我使用測試數組執行此操作時,我沒有得到這種行為。
所以我
/dev/sda3
再次 nuked,用它來創建一個全新的數組,並將數據從舊數組複製到新數組:rsync -r -t -v --exclude 'lost+found' --progress /mnt/oldarray/* /mnt/newarray
當然,這需要幾個小時。希望完成後,我可以完全停止舊數組 nuke
/dev/sdb3
並將其添加到新數組中。希望它不會被添加為備用!
好吧,所有通常的選項(在我的問題中列出)都失敗了,我別無選擇,只能:
/dev/sda3
從數組中移除- 核爆它
- 創建一個包含它的新降級數組和一個空槽
rsync
舊數組中的文件到新數組- 停止舊數組
- 核彈
/dev/sdb3
- 添加
/dev/sdb3
到新數組它開始說“備用,正在重建”,但一旦重建,它就會作為活動驅動器添加到陣列中。
當然,這意味著要處理已更改的陣列的連鎖反應(由於這是根文件系統,因此非常痛苦)。
據我所知,前一個數組的定義中有些東西被破壞了,因為:
A)添加驅動器應該像其他兩個一樣剛剛工作(tm) ,
和
B)如果沒有,縮小和擴大陣列應該有效。