Mdadm

從 raid-5 恢復到 raid-6 重塑和崩潰,mdadm 報告 0K/sec 重建

  • June 4, 2018

我有一個類似於舊執行緒的問題,但我並沒有被 100% 的 CPU 使用率困住。

我在我的 5x3TB raid-5 陣列中添加了一個磁碟 (sdd1),並將其升級到 raid-6,一切順利,直到電源背板出現故障並且伺服器在寫入過程中崩潰。

mdadm –assemble 需要一個臨時文件,我在升級時確實指定了該文件,並且使用 –assemble –temporary-file=,它將數組設置為活動並重塑。問題是,它正在以 0K/秒的速度重塑並且不會完成。

順便說一下,臨時文件是零字節。

我有哪些選擇?我現在可以訪問我的文件,所以如果我能找到 7 TB 的儲存空間,我可以花幾天時間複製所有內容、失敗並從頭開始重建陣列,但有更簡單的選擇嗎?

**我可以讓 sdd1(我試圖添加的新驅動器)失敗並重新啟動一個新的五磁碟 raid-5 到六磁碟 raid-6 陣列重建嗎?**或者這是否會擾亂假定的 raid-6 陣列,但實際上大部分是 raid-5,因為它沒有完成 raid-5 -> raid-6 的重塑?

cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid6 sdd[0] sdb1[6] sdf[5] sde[3] sda[2] sdc[1]
     11721060352 blocks super 1.2 level 6, 512k chunk, algorithm 18 [6/5] [UUUUU_]
     [=>...................]  reshape =  8.4% (247529472/2930265088) finish=3353419520.0min speed=0K/sec

unused devices: <none>

嘗試:

echo frozen > /sys/block/md127/md/sync_action
echo reshape > /sys/block/md127/md/sync_action

此時您可能會有一個降級的 RAID-6(/dev/sdd失去),所以:

  1. 執行watch cat /proc/mdstat並密切關注它,直到沒有重新同步或重塑活動。
  2. mdadm --add /dev/md127 /dev/sdd
  3. 再次執行watch cat /proc/mdstat

那應該使重塑以不錯的速度執行。

順便說一句,每 2 秒執行一次不應該是顯著cat /proc/mdstatwatchCPU 負載,但是對於要執行數小時的東西,您可能不需要 2 秒更新。每 10 或 30 秒更新一次就足夠了,例如watch -n 30 cat /proc/mdstat在上面的步驟 3 中使用。

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