Command-Line

MDADM - 災難恢復或從我將 RAID5 陣列放入的狀態繼續前進

  • September 7, 2018

長話短說,對於我在這裡的第一個執行緒,我有一個軟體 RAID5 陣列設置如下:4 個磁碟設備,每個磁碟設備都有一個 linux-RAID 分區。這些磁碟是: /dev/sda1 /dev/sdb1 /dev/sdd1 /dev/sde1

/dev/md0 是帶有加密 LVM 的 raid5 設備。我使用 cryptsetup 打開設備,然後使用 vgscan 和 lvcan -a 映射我的捲。

昨天,我發現 /dev/sdd1 失敗了。以下是我遵循的步驟:

0.刪除故障磁碟

#  mdadm --remove /dev/md0 /dev/sdd1

1.檢查故障驅動器

mdadm --examine /dev/sdd1

我收到“無法讀取元數據”錯誤。

2.嘗試讀取分區表

我使用 parted 發現我的 Linux-RAID 分區不見了,當我嘗試重新創建它時(希望能夠重新添加驅動器)我得到“你的設備不可寫”

所以,很明顯:硬碟已經死了。

3. 從我的機箱中取出硬碟(壞事接踵而至)

所以我試圖從我的案例中提取 /dev/sdd1 ,不知道它是 4 個驅動器中的哪一個。所以我拔掉了一根 SATA 電纜,發現我剛剛拔掉了 /dev/sde1 ;我重新插入它並拔掉了下面的一個,很好!它是 /dev/sdd1

4.我做了什麼?!悲傷的臉

使用 :

# mdadm --detail /dev/md0

我意識到 /dev/sde1 將數組標記為“已刪除”。我嘗試重新添加它,而不是使用 –re-add,但是:

mdadm --add /dev/md0 /dev/sde1

/proc/mdstat 向我展示了重建過程,並且 mdadm –detail /dev/md0 將 /dev/sde1 顯示為“備用”;我知道我可能在這裡做了一些可怕的事情。

我試圖從陣列中刪除 /dev/sde1 並使用 –re-add 但 mdadm 告訴我他不能這樣做並建議我停止並重新組裝陣列

5. 從這裡去哪裡?

首先,我正在等待一個新的硬碟來替換有故障的硬碟。一旦我擁有它並將其設置為稱為 /dev/sdd1 的新 Linux-RAID 分區設備,我將不得不停止陣列(不再安裝 LVM 卷,顯然,cryptsetup 關閉了加密設備,然而mdadm 還不能停止陣列)。我正在考慮重新啟動整個系統並從頭開始工作。這是我認為我應該做的:

# mdadm --stop /dev/md0
# mdadm --stop /dev/md0
# mdadm --examine /dev/sd*1
# mdadm --assemble --scan --run --verbose

我讀到沒有 –run 選項,mdadm 將拒絕掃描降級的陣列。

最佳情況:/dev/sde1 被重新組裝過程辨識,新的 /dev/sdd1 用於修復以前的故障。我不會失去任何數據並且會很高興。

最糟糕也是最常見的情況:重新組裝陣列無法恢復 /dev/sde1,我必須從一個空白的新陣列開始。

我在這裡錯過了什麼嗎?我應該從這個程序中查看什麼?

來自法國的問候

因此,感謝此連結,我設法完全康復

我所做的如下:

  1. 我更換了故障磁碟並重新啟動了伺服器。
  2. 然後,我將新磁碟格式化為 Linux-RAID 分區類型。
# mdadm --examine /dev/sda1 /dev/sdb1 /dev/sdd1 /dev/sde1

然後,基於上面的連結,我(重新)創建了數組,基於 –examine 命令給出的資訊。

# mdadm --create /dev/md0 --level=5 --raid-devices=4 --chunk=512 --name=server:0 /dev/sda1 /dev/sdb1 missing /dev/sde1 --assume-clean

如該連結所述, –assume-clean 成功了!它避免了來自 /dev/sde1 的“備用”狀態,並將其用作新陣列的活動部分。

從“現有”設備重新創建數組的關鍵可能是不要弄亂塊參數,除非您會失去數據。

  1. 然後我將新設備添加到這個新陣列中:
# mdadm --add /dev/md0 /dev/sde1

伺服器開始重建(10 Tb 需要 6 小時),之後,我強制對整個陣列進行完整性檢查(也需要 6 小時)

我恢復了一切,我鬆了一口氣!

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