Augmenter la capacité d'un volume RAID 5

Download PDF

Un avantage non négligeable d’un volume RAID 5 logiciel est de pouvoir en augmenter la capacité à volonté (ou presque).

Dans un précédent billet j’avais décrit comment créer un volume RAID 5 logiciel à l’aide de l’outil mdadm. Il faut savoir que le volume RAID 5 ainsi créé n’est pas figé : nous verrons ici comment y ajouter des disques pour en augmenter la capacité.

1. Identifier le volume RAID et ses constituants

Supposons pour les besoins de l’exercice que nous disposions du volume RAID 5 créé dans le précédent billet, contenant donc quatre disques (quatre partitions) d’1 To chacun. Le volume est désigné par /dev/md0, et un petit coup d’œil dans le fichier /proc/mdstat nous montre par exemple :

/proc/mdstat

Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[0] sdf1[3] sde1[2] sdd1[1]
2895866452 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

Le volume est donc constitué des partitions /dev/sdc1, /dev/sdd1, /dev/sde1 et /dev/sdf1.

2. Ajouter la nouvelle partition au volume RAID

Il est d’abord nécessaire d’éteindre la machine, et de sortir un tournevis pour ajouter physiquement le disque dur dans l’ordinateur.

Une fois la machine de nouveau opérationnelle, supposons que le nouveau disque soit désigné comme /dev/sde. On commence par y créer une partition, avec fdisk ou Gparted, que l’on appelera /dev/sde1.

Pour la suite il sera nécessaire de démonter le volume RAID, pour être sûr qu’il ne sera utilisé par aucun processus :

server:~# umount /dev/md0

Ajoutons cette nouvelle partition au volume RAID 5 :

server:~# mdadm --add /dev/md0 /dev/sde1

Cette opération ne prend que quelques secondes. Ensuite, il faut étendre le volume RAID 5 pour qu’il utilise le nouvel espace disponible :

server:~# mdadm --grow /dev/md0 --raid-devices=5

Cette opération consiste à recalculer tous les bits de parité et reconstruire la redondance RAID 5… Cela peut durer plusieurs heures, pendant lesquelles il ne faut évidemment aucune interruption ni coupure de courant, sans quoi le volume peut devenir complètement inutilisable, avec le risque d’en perdre toutes les données. Il est possible de suivre la progression en regardant le fichier /proc/mdstat qui, lors de la reconstruction, ressemblera à ceci :

/proc/mdstat

Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[0] sdf1[3] sde1[2] sdd1[1] sde1[4]
3895866452 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]
[=====>……………] recovery = 27.1% (1058594/3906250) finish=86.3min speed=65602K/sec

Une fois cette grosse opération terminée, il est prudent de vérifier l’intégrité du volume. Ceci se fait grâce à l’outil fsck sous Linux, ici comme nous avons une partition au format ext3 :

server:~# fsck.ext3 /dev/md0

De nouveau cela peut prendre plusieurs heures.

3. Augmenter la taille de la partition RAID

Enfin, il faut redimensionner la partition du RAID 5 pour occuper toute la place sur les disques :

server:~# resize2fs /dev/md0

Il n’y a plus qu’à remonter le disque (notez qu’il n’y a pas besoin de redémarrer) :

server:~# mount /dev/md0

Et voilà, le volume RAID est de nouveau opérationnel. Sa capacité a augmenté, dans notre cas d’environ 1 To.

Je voudrais rappeler qu’un volume RAID 5 est tolérant à la panne d’un seul disque, en revanche si deux disques sont défaillants alors l’intégralité des données est perdue. Or, en augmentant le nombre de disques constituant un RAID 5, la probabilité que deux disques lâchent en même temps se trouve augmentée. Au-delà de six disques, plutôt qu’un seul volume RAID 5 utilisant tous les disques, il peut être plus sûr de créer deux volumes RAID 5 différents, car ils pourront résister chacun à la panne d’un de leurs disques. Un moyen encore plus sûr serait d’utiliser un autre niveau de RAID, comme le RAID 6 qui tolère la panne de deux disques, ou si les données sont très sensibles, le RAID 10, 15 ou 51.