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

P.P*_*ter 4 linux software-raid mdadm raid5

我有一个带有相当大磁盘的 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
Run Code Online (Sandbox Code Playgroud)

有谁知道我是否可以向现有数组添加写日志?如果是这样,如何?

fro*_*utz 5

它应该像这样工作:

# mdadm --manage /dev/md42 --readonly --add-journal /dev/loop3
mdadm: Journal added successfully, making /dev/md42 read-write
mdadm: added /dev/loop3
Run Code Online (Sandbox Code Playgroud)

但是,目前(使用内核 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
Run Code Online (Sandbox Code Playgroud)

创建一个没有日志的数组,所有添加日志的尝试都失败了:

# 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
Run Code Online (Sandbox Code Playgroud)

所以这似乎还不太可能。

在 linux-raid 邮件列表上发现了一个讨论,这是一个计划中的功能。如果从那以后就实施了,我不知道如何实施。也许自己联系邮件列表以提醒 mdadm 开发人员有人希望它起作用!

您可能不得不求助于mdadm --create重新创建raid或编辑阵列的元数据。这两种选择都有点危险。