Software-Raid

Linux mdadm –grow RAID6:出現問題 - 重塑中止

  • May 6, 2013

我有一個要擴展的 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

如何 –grow 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{}

NeilBrown (neilb (o) suse.de) 通過電子郵件回答了這個問題。

問題是環回設備太小。1 MB 太少了。如果大小更改為 30MB,它可以工作:

seq 0 50 | parallel dd if=/dev/zero of=l{} bs=30M count=1

引用自:https://serverfault.com/questions/503832