Mdadm Raid 5 - Ajout d'un disque

Bonjour,

je post rarement mes problèmes car souvent je trouve les solutions. j’ai cherché sur pas mal de forums, et sur notre meilleur amis de recherche sur internet, et malheureusement, je n’ai rien trouvé d’éxplicite.

Serveur de fichiers en production, Debian LENNY Kernel 2.6.26-1-686

raid 5 logiciel via MDADM v2.6.7.2, 3 disques de 500 GO, sda, sdb, et sdc
J’ai donc actuellement un peut moins d’1 téra puisque N -1 sur /dev/md0

Je cherche la commande de MDADM ou une façon d’intégrer un 4 ième disque “/dev/sdd” à la grappe, (non spare ) sans recréer la grappe complète ou du moins sans perdre les données qui sont dessus ?

Ceci dans le but d’augmenter la capacité du Raid.

Je vous remercie par avance.

Fabien493

Peut être vérifier avant quels sont les types de partition déjà intégrées dans ton raid avec un fdisk -l.

Si elles sont de type FD Linux raid autodtect alors il serait préférable de créer une partition de même type sur ton sdd avant de l’ajouter au raid.

Avec :

Taper “m” pour avoir de l’aide sur l’utilisation de fdisk, mais en gros ça donne :

  • “p” pour afficher les partoch
  • “t” pour changer le type de partition
  • quand on te demande un truc du genre “Hex code (type L to list codes):” tu tapes “L” pour lister les types de partoch et normalement il faut choisir “fd”
  • avant de quitter fdisk il faut faire un “w” pour ecrire les modif

Et ne pas oublié aussi de mettre a jour le ficher de conf de mdadm une fois le nouveau disque intégré et fontionnel au sein du raid :

par contre je sais pas du tout comment va reagir ton raid avec une conf en raid 5 4disk sans spare… En general on fait plutôt du 4 disque avec un spare. Donc attends des avis plus aguerri :unamused:

Merci pour vos réponses.

les 4 disques sont en “FD” : Linux raid autodetect

si je rajoute le 3ieme disque en faisant :

mdadm /dev/md0 -a /dev/sdd1

le nouveau disque passe en spare et non dans la grappe principale.
ce qui fait que ça me donne :
ARRAY /dev/md0 level=raid5 num-devices=3 metadata=00.90 spares=1 UUID=48109bab:7e4393a1:85c944bf:5464697b
devices=/dev/sdc1,/dev/sdb1,/dev/sda1,/dev/sdd1
(c’est pas a l’endroit, mais c’est pas grave)

Peut-être en supprimant directement “spare=1” du fichier de conf cela pourrait-il marcher ?

j’ai vu quelle que part que l’option --grow pourrais servir dans ce cas la sauf que cette option permet d’augmenter la taille du raid, mais je ne sais pas comment l’utiliser.

Je préféré attendre l’avis des experts MDADM avant de risquer de casser le raid.

Merci à tous

fabien493

Bonjour,

J’ai reproduis ton problème par étape, pour te donner la solution :

Création de 3 volumes pour initialiser le raid5

acid:~# lvcreate -L1g -ndisk1 acid_vg

Logical volume “disk1” created

acid:~# lvcreate -L1g -ndisk2 acid_vg

Logical volume “disk2” created

acid:~# lvcreate -L1g -ndisk3 acid_vg

Logical volume “disk3” created

Création du volume en raid5

acid:~# mdadm --create /dev/md0 --force --level=5 --raid-devices=3 /dev/acid_vg/disk1 /dev/acid_vg/disk2 /dev/acid_vg/disk3

mdadm: array /dev/md0 started.

root@acid:~$ cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid5 dm-6[2] dm-5[1] dm-4[0]
2097024 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
resync=PENDING

Lancement de la synchro

mdadm --readwrite /dev/md0
root@acid:~$ cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 dm-6[2] dm-5[1] dm-4[0]
2097024 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
[>…] resync = 0.8% (9856/1048512) finish=1.7min speed=9856K/sec

root@acid:~$ cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 dm-6[2] dm-5[1] dm-4[0]
2097024 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices:

Création du Filesystem et montage

acid:~# mkfs.ext3 /dev/md0

mke2fs 1.41.3 (12-Oct-2008)
Étiquette de système de fichiers=
Type de système d’exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
131072 i-noeuds, 524256 blocs
26212 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=536870912
16 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912

Écriture des tables d’i-noeuds : complété
Création du journal (8192 blocs) : complété
Écriture des superblocs et de l’information de comptabilité du système de
fichiers : complété

Le système de fichiers sera automatiquement vérifié tous les 34 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.

acid:~# mount /dev/md0 /mnt
acid:~# df -h /mnt

Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/md0 2,0G 36M 1,9G 2% /mnt

Création d’un volume à ajouter au raid5

acid:~# lvcreate -L1g -ndisk4 acid_vg

Logical volume “disk4” created

Ajout du volume au raid5, en spare

acid:~# mdadm --add /dev/md0 /dev/acid_vg/disk4

mdadm: added /dev/acid_vg/disk4

root@acid:~$ cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 dm-73 dm-6[2] dm-5[1] dm-4[0]
2097024 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices:

Passage du raid5 à 4 volumes actifs

acid:~# mdadm --grow /dev/md0 --raid-devices=4

mdadm: Need to backup 384K of critical section…
mdadm: … critical section passed.

root@acid:~$ cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 dm-7[3] dm-6[2] dm-5[1] dm-4[0]
2097024 blocks super 0.91 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
[>…] reshape = 1.1% (12480/1048512) finish=5.5min speed=3120K/sec

unused devices:

root@acid:~$ cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 dm-7[3] dm-6[2] dm-5[1] dm-4[0]
3145536 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices:

Pour l’instant, le volume monté fait toujours 2Go

acid:~# df -h /mnt

Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/md0 2,0G 36M 1,9G 2% /mnt

Agrandissement du Filesystem

acid:~# resize2fs /dev/md0

resize2fs 1.41.3 (12-Oct-2008)
Le système de fichiers de /dev/md0 est monté sur /mnt ; le changement de taille doit être effectué en ligne
old desc_blocks = 1, new_desc_blocks = 1
En train d’effectuer un changement de taille en ligne de /dev/md0 vers 786384 (4k) blocs.
Le système de fichiers /dev/md0 a maintenant une taille de 786384 blocs.

acid:~# df -h /mnt
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/md0 3,0G 36M 2,8G 2% /mnt

Ne pas oublier de mettre à jour la conf !

mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf

En esperant t’avoir aidé !

:smt006

Merci beaucoup acid.g,

je n’aurais pas pensé que tu aille aussi loin. La commande que je cherchais était bien :

par-contre je ne pensais pas qu’il fallait resizer md0 après l’ajout du disque dans la grappe.
un peut compliquer quand même, je pensais que MDADM pouvais gérer l’ajout de disque dans la grappe principale automatiquement, sans passer par X et Y commande.

sur ceux, je suis en train de rebuilder le nouveau disque, cela devrais être effectif demain, (c’est pas des disques de 1 Go lol)

une fois le disque rebuildé, j’entame le resize, et si tout ce passe bien, alors je n’aurais qu’a te tirer mon chapeau !!!

Merci Beaucoup et à demain.

fabien493

Salut,

alors, après le rebuilding du nouveau disque, j’ai fait le resize2fs :

# resize2fs /dev/md0 resize2fs 1.41.3 (12-Oct-2008) Le système de fichiers de /dev/md0 est monté sur /mnt/partages ; le changement de taille doit être effectué en ligne old desc_blocks = 59, new_desc_blocks = 88 En train d'effectuer un changement de taille en ligne de /dev/md0 vers 366287952 (4k) blocs. Le système de fichiers /dev/md0 a maintenant une taille de 366287952 blocs.
Vérification :
Avant :

# df -h /dev/md0 917G 410G 461G 48% /mnt/partages
Après :

# df -h /dev/md0 1,4T 410G 896G 32% /mnt/partages

Alors voila, je suis obligé de te dire un grand et énorme merci, avec mon chapeau !

Merci acid.g !

fabien493

tiens, je me pose justement des question ssur les perfs du raid5 logiciel.

est ce que ce sont des hdd sata , avec 500 Go j’imagine que oui

est ce que tu peux me donner des valeurs concernant les débits obtenus merci??

Salut thomas.leclerc,

effectivement ce sont bien des disques sata de 500go

coté pèrf :

[code]# hdparm -tT /dev/md0

/dev/md0:
Timing cached reads: 1584 MB in 2.00 seconds = 792.28 MB/sec
Timing buffered disk reads: 564 MB in 3.00 seconds = 187.97 MB/sec
[/code]

5 minutes après :

/dev/md0: Timing cached reads: 1666 MB in 2.00 seconds = 832.97 MB/sec Timing buffered disk reads: 572 MB in 3.01 seconds = 190.27 MB/sec

amicalement,
fab

Bonjour,

J’ai moi aussi testé le rajout d’un disque dur dans un raid 5. Ca marche ! Les premiers essais n’ont vraiment pas été concluants : 4 disques d’1 To, on en enlève un de la grappe, on le reajoute et on en remet un en plus en spare. Et là tout plante ! Noyau qui part totalement en live (Ubuntu 8.04 desktop). Donc on réinstalle tout en partant sur un Ubuntu serveur 9.04. Et là, plus aucun problème ! 4 disques en raid, avec un fichier test. On enlève un disque, le fichier est toujours là. On rajoute deux disques : réparation, puis ajout d’un disque en spare. On passe le raid sur 5 disques. Puis on aggrandit la partition (resize2fs). Le fichier n’a pas été altéré, la taille est maintenant de presque 4 To. Bon bien sûr il faut pas être pressé, entre le temps de la construction, de la reconstruction, de l’ajout d’un disque et du resize … Je ne sais pas si le temps pour faire un resize dépend de la quantité de données présente sur la partition, mais si c’est le cas, c’est vraiment pas gagné. Ca a pris une bonne demi heure si mes souvenirs son tbons, alors qu’il n’y avait qu’un pauvre fichier texte. Si c’est le cas, je n’ose imaginer le temps nécessaire quand le raid sera presque rempli …

Donc en conclusion, sans passer par un LVM, ça marche bien, sans avoir besoin de faire de sauvegarde …

Salut à tous,

Pour ma part, lors du passage du RAID 5 avec 4 disques + 1 spare à 5 disque avec la commande : mdadm --grow /dev/md0 --raid-devices=5 j’obtiens ca :

[quote]root@SERVEUR:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdf1[3] sdc1[1] sdd1[2] sdb1[0] sde14
4395406848 blocks level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
bitmap: 1/175 pages [4KB], 4096KB chunk

unused devices:
root@SERVEUR:~# mdadm --grow /dev/md0 --raid-devices=5
mdadm: Need to backup 6144K of critical section…
mdadm: Cannot set device size/shape for /dev/md0: Device or resource busy
[/quote]

Auriez- vous une idée? Je suis sec là … je ne trouve pas de réponses …

J’ai trouvé ce genre de solution, pourriez vous m’expliquer de quoi il s’agit et des risques ?

[quote]Solution:

  • remove the internal bitmap (e.g. mdadm --grow /dev/mdX -b none);
  • grow the raid array (e.g. mdadm --grow /dev/mdX -n4);
  • re-add the internal bitmap (e.g. mdadm --grow /dev/mdX -b internal).[/quote]

D’avance merci pour votre aide

Re,

j’a itrouvé également ceci, est-ce que j’ai des risques de perdre les données de mon raid ?

[quote]You may get an error like: Cannot set device size/shape for /dev/md5: Device or resource busy

In this case, check to see if you are using an intent bitmap. If you are you must remove the bitmap first, grow the array, then re-add the bitmap.

mdadm --grow /dev/mdX -b none
mdadm --grow /dev/mdX -n
mdadm --wait /dev/mdX
mdadm --grow /dev/mdX -b internal[/quote]

Merci

Salut Kmailla,
Tu risques de ne pas avoir beaucoup de réponses à poster ainsi, à la fin d’un fil résolu…
Qui ne correspond pas tout à fait à ton problème en plus!
Pour maximiser les chances de régler ton problème, ouvre plutôt un nouveau sujet!

C’est ce que j’étais entrain de faire enfaite,

Merci :slight_smile: