MDADM - agrandissement RAID1
Posté le 03. Juin 2022 • 5 minutes • 925 mots • Autres langues: English
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 :
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 :
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 :
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 :
cat /proc/mdstat
Et le détail de la grappe RAID avec :
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 :
- Partitionner votre nouveau disque
- Le raccrocher dans la grappe RAID1
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 :
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
- MBR (Master Boot Record) est voué à disparaître et ne peut être utilisé pour des volumétries supérieures à 2To et avec 4 partitions principales maximum. C’etait la table de partition de l’époque BIOS.
- GPT (GUID Partition Table) est l’avenir et peut gérer d’immense volume (9,4 Zo soit 9 400 000 000 To) avec jusqu’à 128 partitions. C’est la table de partition moderne liée à UEFI.
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 :
- Sur une carte mère BIOS avec un disque en GPT, vous aurez besoin pour démarrer avec Grub qu’une partition de 1Mo de flag EF02 “BIOS boot partition” soit créée.
- Sur une carte mère UEFI avec un disque en GPT, vous aurez besoin pour démarrer avec Grub qu’une partition de plusieurs Mo (50-100Mo en fonction de s’il y a plusieurs système d’exploitation présents) de flag EF00 “EFI System” soit créée.
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.
mdadm --manage /dev/md0 --add /dev/sdbX
On laisse la synchronisation se faire. Vous pouvez la suivre avec l’habituelle commande :
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 :
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 :
mdadm --grow --size max /dev/md0
Enfin il est nécessaire de réétendre le système de fichier (dans notre cas ext4) :
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 🎉 .