web-dev-qa-db-ja.com

Linux mdadm --grow RAID6:何か問題があります-reshapeが中止されました

拡張したいRAID60があります。

現在は次のとおりです。それぞれ9つのディスク+2つのスペアを持つ2つの車軸。

将来は次のとおりです。それぞれが10個のディスク+1個のスペアを持つ4つの車軸。

したがって、ドライブの形状を変更するために、いくつかの-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

最後のコマンドは機能しますが、最初の2つのコマンドは次のように失敗します。

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{}
5
Ole Tange

NeilBrown(neilb(o)suse.de)はこれに電子メールで回答しました。

問題はループバックです-デバイスが小さすぎます。 1MBは少なすぎます。サイズを30MBに変更すると、次のように機能します。

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