将 linux md raid 写入日志添加到现有阵列

将 linux md raid 写入日志添加到现有阵列

我有一个带有相当大磁盘的raid5阵列,因此在断电的情况下重建非常慢。值得庆幸的是,有--write-journallinux md raid 的选项。手册页列出了该--write-journal选项用于创建、构建或增长:部分,所以我认为它应该在增长模式下工作,并尝试动态添加写入日志:

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

有谁知道我是否可以将写入日志添加到现有数组中?如果是这样,怎么办?

答案1

它应该像这样工作:

# 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)似乎只适用于首先使用日志创建的数组。上述输出是在以下之后产生的:

# 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重新创建突袭或编辑数组的元数据。这两种选择都有点危险。

答案2

该 PDF 指出这是可能的:https://events.static.linuxfound.org/sites/events/files/slides/2016_vault_write_journal_cache_v2.pdf

mdadm --manage /dev/md0 --add-journal /dev/sdf

答案3

raid 应处于只读状态。请参阅 --add-journal 中 http://man7.org/linux/man-pages/man8/mdadm.8.html

尝试: mdadm --manage /dev/md0 --readonly --add-journal /dev/sdf

相关内容