![Linux mdadm --grow RAID6:出现错误 - 重塑已中止](https://linux22.com/image/610869/Linux%20mdadm%20--grow%20RAID6%EF%BC%9A%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%20-%20%E9%87%8D%E5%A1%91%E5%B7%B2%E4%B8%AD%E6%AD%A2.png)
我有一个想要扩展的 RAID60。
当前情况为:2 个轴,每个轴有 9 个磁盘 + 2 个备用磁盘。
未来是:4个轴,每个轴有10个磁盘+1个备用磁盘。
所以我需要做一些--grow来重塑驱动器。
我以为这就足够了:
mdadm -v --grow /dev/md1 --raid-devices=10 --backup-file=/root/back-md1
mdadm -v --grow /dev/md2 --raid-devices=10 --backup-file=/root/back-md2
mdadm -v --grow /dev/md0 --raid-devices=4 --add /dev/md3 /dev/md4
最后一个命令有效,但是前两个命令失败,如下所示:
mdadm: Need to backup 7168K of critical section..
mdadm: /dev/md2: Something wrong - reshape aborted
我怎样才能扩大 RAID6 以使用更多设备?
系统信息:
$ mdadm --version
mdadm - v3.2.5 - 18th May 2012
$ uname -r
3.5.0-17-generic
重现该问题的 Makefile:
all: install_parallel createmd0 createmd3 createmd4
install_parallel:
parallel --version || wget -O - pi.dk/3 | bash
loop:
# make enough loop-devices
seq 0 50 | parallel mknod -m 660 /dev/loop{} b 7 {} || true
seq 0 50 | parallel dd if=/dev/zero of=l{} bs=1M count=1
seq 0 50 | parallel losetup -f l{}
createmd1: loop
mdadm --create /dev/md1 -c 128 --level=6 --raid-devices=9 -x 2 /dev/loop1? /dev/loop1
createmd2: loop
mdadm --create /dev/md2 -c 128 --level=6 --raid-devices=9 -x 2 /dev/loop2? /dev/loop2
createmd3: loop
mdadm --create /dev/md3 -c 128 --level=6 --raid-devices=10 -x 1 /dev/loop3? /dev/loop3
createmd4: loop
mdadm --create /dev/md4 -c 128 --level=6 --raid-devices=10 -x 1 /dev/loop4? /dev/loop4
createmd0: loop createmd1 createmd2
mdadm --create /dev/md0 -c 512 --level=0 --raid-devices=2 /dev/md1 /dev/md2
grow:
mdadm -v --grow /dev/md1 --raid-devices=10 --backup-file=/root/back-md1
mdadm -v --grow /dev/md2 --raid-devices=10 --backup-file=/root/back-md2
mdadm -v --grow /dev/md0 --raid-devices=4 --add /dev/md3 /dev/md4
info:
mdadm --version
uname -r
clean:
mdadm --stop /dev/md0 /dev/md? || true
seq 0 50 | parallel losetup -d /dev/loop{} || true
seq 0 50 | parallel rm l{}
答案1
NeilBrown (neilb (o) suse.de) 通过电子邮件回答了这个问题。
问题是回环设备太小。1 MB 太小了。如果将大小更改为 30MB,则可行:
seq 0 50 | parallel dd if=/dev/zero of=l{} bs=30M count=1