5 votes

Linux mdadm --grow RAID6 : Quelque chose ne va pas - le remodelage a été interrompu

J'ai un RAID60 que je souhaite étendre.

La situation actuelle est la suivante : 2 axes ayant chacun 9 disques + 2 pièces de rechange.

L'avenir, c'est : 4 axes ayant chacun 10 disques + 1 de rechange.

Je dois donc faire un peu de --croissance pour remodeler les lecteurs.

Je pensais que cela suffirait :

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

La dernière commande fonctionne, mais les deux premières commandes échouent avec :

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

Comment puis-je faire croître un RAID6 pour utiliser plus de périphériques ?

Informations sur le système :

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

Makefile pour reproduire le problème :

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{}

2voto

Sakkle Points 998

NeilBrown (neilb (o) suse.de) a répondu à cette question par courriel.

Le problème est que les dispositifs de bouclage sont trop petits. 1 Mo, c'est trop peu. Si la taille est modifiée à 30 Mo, cela fonctionne :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X