Mdadm

如何擺脫 mdadm 中頑固的“已移除”設備

  • November 14, 2013

我的伺服器的一個驅動器出現故障,因此我從所有三個相關陣列中移除了故障驅動器,更換了驅動器,然後將新驅動器添加到陣列中。其中兩個陣列完美執行。第三個將驅動器作為備用驅動器添加回來,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並將其添加到新數組中。希望它不會被添加為備用!

好吧,所有通常的選項(在我的問題中列出)都失敗了,我別無選擇,只能:

  1. /dev/sda3從數組中移除
  2. 核爆它
  3. 創建一個包含它的降級數組和一個空槽
  4. rsync舊數組中的文件到新數組
  5. 停止舊數組
  6. 核彈/dev/sdb3
  7. 添加/dev/sdb3到新數組

它開始說“備用,正在重建”,但一旦重建,它就會作為活動驅動器添加到陣列中。

當然,這意味著要處理已更改的陣列的連鎖反應(由於這是根文件系統,因此非常痛苦)。

據我所知,前一個數組的定義中有些東西被破壞了,因為:

A)添加驅動器應該像其他兩個一樣剛剛工作(tm) ,

B)如果沒有,縮小和擴大陣列應該有效。

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