Ajouter un disque additionnel à un RAID 1 en 5 lignes de commande

Un RAID 1 (mirroring) constitue ne bonne garantie contre une panne de disque dur sur une machine (serveur, poste de bureau, NAS) contenant des données critiques. Avec une bonne maintenance, on peut espérer conserver des données avec un faible taux de risque de perte sur de longues durées : une bonne méthode consistant par exemple à ajouter des disques plus récents à la grappe RAID.

Nous allons détailler ici les opérations nécessaires pour ajouter un disque dur de X Go à une grappe (RAID 1) de 2 disques durs de même capacité, gérée par les fonctionnalités de RAID logiciel sous Linux.

La première étape consiste à copier la table des partitions des disques durs actifs dans le RAID (appelons les /dev/sda et /dev/sdb) sur le nouveau disque (/dev/sdc). En effet, le nouveau disque doit être structuré (en termes de partitions) rigoureusement comme les anciens.

Attention, il existe aujourd'hui couramment deux types de table de partition : l'ancien système à base de MBR (Master Boot Record) et le nouveau système nommé GPT (Globally Unique Identifier Partition Table). En MBR, vous pouvez utiliser l'utilitaire fdisk/sfdisk (non détaillé ici). Si vos disques sont formatés avec des tables GPT (le nouveau standard), voici comment faire.

On enregistre d'abord la table de partition du disque sda dans un fichier 'table' :

sgdisk --backup=table /dev/sda

puis on applique cette table au disque /dev/sdc (attention à ne pas se tromper de disque, cela pourrait être destructeur !) :

sgdisk --load-backup=table /dev/sdc

Et comme dans le système GPT chaque partition est identifiée par un unique GUID et que celui-ci est inclus dans la table GPT, alors il faut modifier les GUID pour des valeurs aléatoires dans le disque fraîchement ajouté :

sgdisk -G /dev/sdc

Le nouveau disque dur est maintenant prêt à intégrer le RAID.

mdadm --detail /dev/md0

va nous permettre de regarder les partitions inclues dans cette première partition en RAID. Par exemple, on verra que ce sont les partitions /dev/sda2 et /dev/sdb2 qui sont concernées. On saura donc qu'il faut ajouter /dev/sdc2 :

mdadm --manage /dev/md0 --add /dev/sdc2

Puis

mdadm --detail /dev/md0

doit montrer que le nouveau disque a été ajouté.

Il est toutefois fort probable que le disque ait été monté en 'spare device' i.e. en périphérique activé uniquement en cas de perte d'un autre disque. Si vous souhaitez que les données soient répliquées dès maintenant sur ce disque, il faudra agrandir le RAID :

mdadm --grow /dev/md0 --raid-devices=3

Et le tour est joué, la reconstruction du RAID (i.e. la copie des données vers le nouveau disque) doit s'effectuer de manière transparente. /dev/md0 est désormais répliqué sur 3 disques durs.

Bien sûr, une procédure similaire pourra être déployée en cas de disque défectueux pour ajouter un nouveau disque dans la grappe !