Raven - Blog
03. Juin 2022

MDADM - agrandissement RAID1

Posté le 03. Juin 2022  •  5 minutes  • 1011 mots  • Autres langues:  English
ATTENTION : Tout au long de cette note il est primordial de bien repérer vos disques, vos partitions, vos montages, la construction du RAID. Vos sauvegardes doivent être réalisées, testées et opérationnelles avant de débuter une telle opération. Votre PCA/PRA doit être établi et prêt. Vous ne devez copier aucune commande sans la comprendre et vous devez être capable d'en anticiper ses conséquences.

Aujourd’hui, je réalise un tutoriel pour les SysAdmin qui souhaitent augmenter la volumétrie d’un RAID de niveau 1 sous MDADM sur un serveur bare metal. Mon article est réalisé sous la distribution Debian GNU/Linux, sans interface graphique.

Contexte de ce tutoriel

Nous prendrons pour exemple un hypothétique RAID1 /dev/md0 composé de 2 disques (/dev/sda et /dev/sdb) de 1To (table de partition MBR) que nous souhaitons remplacer par 2 disques de 3To (table de partition GPT).

Si votre carte mère dispose d’une fonctionnalité hotswap et que celle-ci est activée sur les ports SATA, il n’est pas nécessaire de prévoir de coupure du serveur.

Comme rappelé en haut de cette note, il est primordial de bien repérer ses disques, ses partitions, ses montages, et la construction du raid. Aidez-vous pour cela de divers outils comme :

1
2
3
4
5
6
cat /proc/mdstat
mdadm --detail /dev/md0
cat /etc/fstab
df -h
mount
blkid

A - Vérification du GRUB

Avant de commencer, on vérifie que Grub est bien installé sur les deux disques. Pour cela, relancez une installation de Grub sur tous les disques de votre grappe. Pour notre exemple, on fera :

1
2
grub-install /dev/sda
grub-install /dev/sdb

B - Retrait du premier disque

D’abord il faut retirer un disque du RAID1 en place dans mdadm. Pour cela, provoquez une défaillance sur un disque sinon il ne pourra pas être retiré proprement, car il sera en cours d’utilisation.

Mise en défaillance d’un premier disque :

1
mdadm --manage /dev/md0 --set-faulty /dev/sda1

On vérifie que l’état du raid soit bien sur [U_] au lieu de [UU] avec :

1
cat /proc/mdstat

Et le détail de la grappe RAID avec :

1
mdadm --detail /dev/md0

Votre premier disque est désormais détaché de la grappe RAID, vous avez vérifié que votre système démarrait sur l’autre disque. Arrêtez la machine pour débrancher le disque de 1To et insérez le disque de 3To à la place (ou faites-le à chaud dans le cas de hot swapping).

C - Partitionnement

Votre nouveau disque de plus grande volumétrie étant inséré et le serveur étant redémarré il va falloir :

Pour le partitionnement : les disques avec une table de partition MBR peuvent être gérés avec l’utilitaire fdisk. Pour les disques avec table de partition GPT il est nécessaire d’utiliser gdisk.

Dans notre exemple, nous utilisons GPT et je fais le partitionnement suivant :

1
2
3
4
5
6
7
gdisk -l /dev/sdb
---
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  BIOS boot partition
   2            4096          208895   100.0 MiB   EF00  EFI System
   3          208896         8597503   4.0 GiB     FD00  Linux RAID
   4         8597504      5860533134   2.7 TiB     FD00  Linux RAID

D - Point sur UEFI et BIOS

Il existe deux principaux types de table de partition : MBR et GPT

Pour rappel, le BIOS et l’UEFI (remplaçant du BIOS) sont les intermédiaires entre le matériel et le système d’exploitation. C’est le BIOS ou l’UEFI qui vont permettre de démarrer votre machine et de lancer votre OS.

En ce qui concerne le partitionnement, notez bien que :

Dans le cas de ce tutoriel, on part du principe que nous avons du vieux matériel et une carte mère BIOS ne gérant pas UEFI.

Je préfère alors assurer l’avenir en créant une partition EF02 et une partition EF00 (dont on ne se servira pas évidemment). Ainsi, en cas de panne matérielle à l’avenir, vous pourrez réintégrer ces disques sur une carte mère UEFI car la partition sera déjà en place et il n’y aura plus qu’à faire l’installation du paquet Grub en version UEFI. Pratique !

E - Réintégration dans la grappe

On va réintégrer le disque dans la grappe RAID1 pour que les données de ce nouveau disque de 3To se synchronisent sur le disque de 1To.

1
mdadm --manage /dev/md0 --add /dev/sdbX

On laisse la synchronisation se faire. Vous pouvez la suivre avec l’habituelle commande :

1
cat /proc/mdstat

E - Installation de GRUB

ATTENTION, la simple commande grub-install /dev/sdb ne fonctionnera pas, vous n’aurez pas d’erreur, MAIS le système ne redémarrera pas pour autant.

Le disque ayant été changé il est nécessaire d’installer Grub dessus via la commande :

1
grub-install --recheck /dev/sdb

F- Installation du second disque

Une fois la première synchronisation terminé, répétez les étapes B, C, E.

G - Extension du RAID et du FileSystem

Une fois les deux disques en places et la synchro RAID terminée, l’espace n’est pas immédiatement disponible.

Il est nécessaire d’agrandir le RAID avec la commande suivante :

1
mdadm --grow --size max /dev/md0

Enfin il est nécessaire de réétendre le système de fichier (dans notre cas ext4) :

1
resize2fs /dev/md0

Si vous utilisez des LVM, redimensionnez-les également.

C’est désormais terminé vous pouvez laisser votre RAID se reconstruire et l’espace de 3To est utilisable dès à présent 🎉 .

Follow me

Subscribe to my RSS feed !