如何告訴 mdadm 再次開始使用 RAID5 陣列中遺失的磁碟?

如何告訴 mdadm 再次開始使用 RAID5 陣列中遺失的磁碟?

我的 Ubuntu 伺服器上運行著一個 3 磁碟 RAID 陣列。這台機器已經完美運作了一年多,但最近我被迫拆除、移動和重建機器。

當我把它們全部重新組合起來並運行 Ubuntu 時,我遇到了一些無法偵測到磁碟的問題。幾次重新啟動後,我解決了這個問題。現在的問題是,每次啟動時,3 磁碟陣列都顯示為降級。由於某種原因,Ubuntu 似乎創建了一個新陣列並將丟失的磁碟添加到其中。

我嘗試停止新的 1 磁碟陣列並添加丟失的磁碟,但我很掙扎。啟動時我得到這個:

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md_d1 : inactive sdf1[2](S)
      1953511936 blocks

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

我有兩個 RAID 陣列,通常顯示為 md1 的陣列沒有出現。

我在某處讀到調用mdadm --assemble --scan會重新組裝丟失的數組,所以我嘗試首先停止 ubuntu 啟動的現有數組:

root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1

....然後嘗試告訴 ubuntu 再次拾取磁碟:

root@uberserver:~# mdadm --assemble --scan
mdadm: /dev/md/1 has been started with 2 drives (out of 3).

這樣就再次啟動了 md1,但它沒有從 md_d1 取得磁碟:

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sde1[1] sdf1[2]
      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]

md_d1 : inactive sdd1[0](S)
      1953511936 blocks

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

這裡出了什麼問題?為什麼 Ubuntu 試圖拾取sdd1到不同的陣列?如何將遺失的磁碟重新找回?

[編輯]- 我意識到我沒有將 md1 新增到自動啟動mdadm.conf。添加 md1 後,mdadm.conf現在嘗試在啟動時安裝陣列,但它仍然丟失sdd1。如果我告訴它嘗試自動組裝,我會覺得它知道它需要sdd1但無法使用它:

root@uberserver:~# mdadm --assemble --scan
/dev/md1: File exists
mdadm: /dev/md/1 already active, cannot restart it!
mdadm:   /dev/md/1 needed for /dev/sdd1...

我缺什麼?

答案1

不確定這是否是解決問題的最乾淨的方法,但以下似乎又讓它重新開始:

root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1

root@uberserver:~# mdadm --add /dev/md1 /dev/sdd1
mdadm: re-added /dev/sdd1

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd1[3] sde1[1] sdf1[2]
      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
      [>....................]  recovery =  0.0% (121728/1953511936) finish=1337.0min speed=24345K/sec

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

仍然不明白為什麼它不能將磁碟加回:-/

答案2

我遇到了類似的問題 - 可能是電源線鬆動導致我的陣列掉落了驅動器 - 因此 mdstat 顯示 [U_UU] 並且對於 SeaChest 等其他工具來說驅動器也消失了。重新安裝所有連接器後,驅動器會重新出現,但 mdadm 沒有自動恢復。它似乎只是把它扔掉了。

me@server:~$ sudo mdadm --details /dev/md0

顯示驅動器已被刪除,即使它存在並且正在運行並且具有正確的 UUID 標籤。

要恢復我只需要運行:

me@server:~$ sudo mdadm --add /dev/md0 /dev/sdb1

它立即添加驅動器並開始恢復(不需要先停止陣列)。

相關內容