Linux

將 linux md raid 寫入日誌添加到現有陣列

  • August 22, 2019

我有一個帶有相當大磁碟的 raid5 陣列,因此在斷電的情況下重建速度非常慢。值得慶幸的是,有--write-journallinux md raid 的選項。手冊頁列出了For create, build, or grow:--write-journal部分中的選項,所以我認為它應該在增長模式下工作,並嘗試動態添加寫入日誌:

# mdadm --grow /dev/md1 --write-journal /dev/ssd/md1-journal
mdadm: :option --write-journal not valid in grow mode

有誰知道我是否可以將寫入日誌添加到現有數組?如果是這樣,怎麼辦?

它應該像這樣工作:

# mdadm --manage /dev/md42 --readonly --add-journal /dev/loop3
mdadm: Journal added successfully, making /dev/md42 read-write
mdadm: added /dev/loop3

但是,目前(使用核心 4.18,mdadm 4.1-rc)似乎只有首先使用 journal 創建的數組才有可能。上述輸出是在以下情況下產生的:

# mdadm --create /dev/md42 --level=5 --raid-devices=3 /dev/loop[012] --write-journal /dev/loop3
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md42 started.
# mdadm --manage /dev/md42 --fail /dev/loop3 --remove /dev/loop3
mdadm: set /dev/loop3 faulty in /dev/md42
mdadm: hot removed /dev/loop3 from /dev/md42

創建一個沒有日誌的數組,所有添加日誌的嘗試都失敗:

# mdadm --create /dev/md42 --level=5 --raid-devices=3 /dev/loop[012]
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md42 started.
# mdadm --manage /dev/md42 --readonly --add-journal /dev/loop3
mdadm: /dev/md42 does not support journal device.
# mdadm --manage /dev/md42 --readwrite --add /dev/loop3
# echo journal > /sys/block/md42/md/dev-loop3/state
bash: echo: write error: Invalid argument

所以這似乎還不可能。

在 linux-raid 郵件列表上發現了一個討論,這是一個計劃中的功能。如果它已經實施,我不知道如何實施。也許您自己聯繫郵件列表以提醒 mdadm 開發人員有些人希望這個工作!

您可能不得不求助於mdadm --create重新創建 RAID或編輯陣列的元數據。任何一種選擇都有點危險。

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