RAID5 : comment agrandir l'array ?

J'avais initialement chez moi, un RAID5 logiciel (mdadm), sur un serveur Linux, composé de 3 disques. Je l'avais taillé il y a déjà trois ans, avec des disques énormes pour l'époque. Puis j'ai commencé à accumuler un max de données : sauvegardes en tous genres (backup de mes sites internet, backup de machines...), photos prises avec le reflex (jpeg + raw), vidéos filmées en 1080p, machines virtuelles... Si bien que récemment, j'ai commencé à m'inquiéter lorsque j'ai vu que j'avais atteint les 90% du stockage. Sans parler de la dégradation des performances lorsque l'on arrive sur la fin des disques. Je me suis donc dis : allez hop, il faut faire du ménage. Et je l'ai fais. J'ai bien gagné quelques Go, mais ils ont vite été réutilisés, et je me suis retrouvé à nouveau avec la même problématique. Une seule solution était donc envisageable : agrandir l'array. Pour ceux qui ne parlent pas bien le langage geek, je devais tout simplement agrandir l'espace de stockage RAID.

 

Si l'opération n'a rien de compliqué en soit, je me suis dis que cela pourrait toujours être utile à quelques uns de voir comment cela se passe en pratique.

 

Le RAID5

Avant de passer à l'agrandissement de mon RAID, je vais d'abord expliquer ce qu'est un RAID5. Le RAID5 est une technologie visant à utiliser 'n' disques (au moins 3) de même capacité, pour en faire un espace de stockage. La capacité est alors de n-1 disques, la capacité de l'un des disques est, en effet, sacrifiée afin de sécuriser la grappe (en anglais on parle d'array). Ainsi, si vous disposez de 3 disques de 1To, votre RAID5 aura une capacité de 2To. Avec ce RAID, vous disposez d'une tolérance de panne d'un disque. Ce qui signifie que si un des disques lâche, vous ne perdrez pas vos données. En revanche, si 2 disques lâchent simultanément, toutes les données sont perdues.

L'espace d'un disque est donc utilisé pour sécuriser l'ensemble. Comment cela se passe t-il en pratique ? Après avoir écrit sur n-1 disques, le contrôleur RAID effectue un contrôle de parité, et le stock sur le dernier. Et le contrôle de parité se fait sur tous les disques : il n'y a pas un disque dédié à cela. Pour mieux comprendre, voici un schéma :

Fonctionnement du RAID5

 

Le RAID 5 peut évoluer. Il est ainsi possible d'y ajouter de nouveaux disques pour agrandir sa capacité. Pour cela, il faut nécéssairement un disque de même capacité que ceux utilisés dans la grappe. L'opération se passe alors en deux étapes : préparer le disque, et ensuite l'intégrer au RAID.

 

Préparation du disque

La préparation du disque est une opération simple, que vous avez déjà dû réaliser lorsque vous avez créer votre RAID. Le disque devra contenir une table de partition valide (MBR, ou pour les disques de 2To et plus GPT). Pour définir la table de partition, il suffit d'utiliser fdisk (ou gdisk pour les disques GPT). Pour les exemples qui suivent, j'utilise gdisk, mais les manipulations sont identiques avec fdisk, et disons que le disque est le périphérique sdg

# gdisk /dev/sdg

Une fois dans l'utilitaire gdisk, il convient de créer une nouvelle table de partition en appuyant sur la lettre o. Si des partitions sont déjà présentes sur le disque, l'utilitaire demandera confirmation en précisant que les partitions actuelles seront supprimées.

Ensuite, il convient de créer une partition et de la formater. Pour cela, on utilise encore gdisk (ou fdisk) : tapez n pour créer une partition, ensuite on se laisse guider pour le numéro de partition, les blocs de début et fin... Une fois tous les paramètres renseignés, n'oubliez pas de quitter gdisk (fdisk) avec w pour valider les changements.

Attention, les partitions d'un RAID doivent être parfaitement alignées. Il convient donc de créer sa partition en conséquence. Pour ma part, j'ai du créer ma partition avec un décalage (offset) de 2048 bytes. Maintenant que votre disque est prêt, il faut l'ajouter au RAID5.

 

Intégration d'un nouveau disque au RAID5

Pour intégrer le disque au RAID5, il faut faire un peu de ligne de commande. Ouvrez un terminal et tapez les commandes suivantes. Tout d'abord, on va ajouter au RAID le nouveau disque, en procédant comme cela :

sudo mdadm --manage /dev/md1 --add /dev/sdg1

Dans cet exemple, /dev/md1 est le périphérique RAID, et /dev/sdg1 est le disque à inclure.

Ensuite, on va étendre l'espace sur la nouvelle partition :

mdadm --grow /dev/md1 -n 4

Cette opération peut être longue, puisque le RAID va être reconstruit en prenant en compte le disque supplémentaire.

À ce stade, votre RAID5 possède toujours la même capacité qu'initialement, mais s'étend sur 4 disques au lieu de 3. Il convient donc enfin, d'étendre la partition RAID, avec la commande suivante :

resize2fs /dev/md1

Attention, plusieurs remarques concernant cette dernière commande. Tout d'abord, il est préférable de démonter votre volume avant d'étendre sa capacité, et ce pour deux raisons : il ne faut pas solliciter le stockage pendant l'opération, et surtout cela sera bien plus rapide. Même si vous souhaitez étendre une partition qui ne vous sert qu'à stocker des fichiers, c'est plus facile de le faire après démontage de la partition. Maintenant, si vous le désirez, il est possible d'effectuer l'agrandissement à chaud. Dans ce cas, sachez que si vous avez un kernel 2.6, cela n'est possible que pour les systèmes ext3. Enfin, l'agrandissement à chaud prend beaucoup de temps. Pour mon cas, cela a pris environ 3 heures...

Dernière remarque concernant le resize2fs. Vous pouvez lui indiquer la taille à attendre. Si vous n'indiquez rien, il prendra par défaut la partition en entier.

 

Voilà donc comment agrandir une grappe RAID5. Et si vous désirez ajouter plus d'un disque, c'est possible. Pour le faire en une seule fois il suffit d'ajuster les commandes précédentes avec les informations adéquates (ajouter tous les disques et bien préciser le nombre à utiliser).

 

Un petit conseil pour finir cet article. Si a un moment vous avez un doute, que vous rencontrez une difficulté, n'hésitez pas à demander de l'aide. Travailler sur des partitions (ou du stockage) existantes est toujours délicat. Alors avant de faire quelque chose d'irréversible, dans le doute, prenez le temps et faites vous aider.

 

Steven

Ingénieur Systèmes passionné d'informatique et de High-Tech, Sandstorm a créé JusteGeek.fr en 2013. Il aime les geekeries en tout genre. "Si un produit s'allume c'est un bon point. S'il est connecté, c'est encore mieux !"

Vous aimerez aussi...

4 réponses

  1. moielias dit :

    Hey petite question : es que si dans la config comme toi de 3*2to je rajoute +1 disque mais que je n'agrandis pas l'array es que c'est comme si j'avais un raid6 (tolérance de panne 2 disque) ?

    🙂

  2. Arsène dit :

    Bonjour,
    Autre petite question. Pour la commande "resize2fs /dev/md1": est-ce que si le raid à plusieurs partitions (par exemple /dev/md1p1 et /dev/md1p2). La commande est toujours avec "/dev/md1" ou il faut directement sélectionner la partition à agrandir ?
    Merci

    • Arsène dit :

      Solution:
      De mon côté avant faire un "resize2fs /dev/md1p2" pout agrandir le système de fichier, il faut augmenter la taille de la partition:
      " parted -s /dev/md1 resizepart 2 XXXXXXXXs"
      avec - 2 pour la partition 2
      - XXXXXXX le numéros du secteur de fin. On peut l'obtenir avec "disk -l /dev/md1" auquel on enlève 1. De plus en cas de partition stp il faut enlever encore 33 (par default) secteurs pour le miroir de la table de partition.
      - s (attaché aux chiffres) pour "sector"

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.