Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a RAID60 that I want to expand.

The current is: 2 axles each having 9 disks + 2 spares.

The future is: 4 axles each having 10 disks + 1 spare.

So I need to do some --grow to reshape the drives.

I thought this would be enough:

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

The last command works, but the 2 first commands fail with:

mdadm: Need to backup 7168K of critical section..
mdadm: /dev/md2: Something wrong - reshape aborted

How can I --grow a RAID6 to use more devices?

Info about the system:

$ mdadm --version
mdadm - v3.2.5 - 18th May 2012
$ uname -r

Makefile to reproduce the problem:

all:        install_parallel createmd0 createmd3 createmd4

    parallel --version || wget -O - | bash

    # 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

    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 --version
    uname -r

    mdadm --stop /dev/md0 /dev/md? || true
    seq 0 50 | parallel losetup -d /dev/loop{} || true
    seq 0 50 | parallel rm l{}
share|improve this question
up vote 2 down vote accepted

NeilBrown (neilb (o) answered this by email.

The problem is the loopback-devices are too small. 1 MB is too little. If size is changed to 30MB it works:

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

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.