Tu vas avoir besoin de la fonction --grow de mdadm
deux fois, pour réduire le nombre de composants de l’ensemble RAID /dev/md0 à 2 et pour réduire la taille des composants à ~70 Gio.
Mais ce n’est pas tout : avant, il faut réduire la taille du système de fichiers contenu dans /dev/md0 sinon il sera tronqué et inutilisable. Si le système de fichiers est de type ext2/3/4, la réduction ne peut se faire qu’à froid, démonté. Si c’est la racine, il faut donc démarrer un autre système comme une distribution “live”. Une alternative consiste à le faire depuis le shell de l’initramfs avant que la racine soit montée, mais c’est moins confortable.
La séquence serait à peu près celle-ci :
# reduire le systeme de fichiers avec une marge
resize2fs -p /dev/md0 68G
# reduire le nombre de composants du RAID a 2
mdadm --grow /dev/md0 --raid-devices=2
# reduire la taille du RAID avec une marge
mdadm --grow /dev/md0 --size=69G
Réduire la partition à 70 Gio (ne pas confondre avec 70 Go soit environ 65 Gio, ce qui serait trop petit). Selon le programme utilisé, il sera peut-être nécessaire d’arrêter le RAID :
mdadm --stop /dev/md0
Vérifier avec lsblk
que la nouvelle taille a été prise en compte par le noyau. Sinon, exécuter partprobe
ou redémarrer avant de poursuivre.
# agrandir le RAID a la taille maxi en recuperant la marge
mdadm --grow /dev/md0 --size=max
# agrandir le systeme de fichiers à la taille maxi en recuperant la marge
resize2fs -p /dev/md0
Ensuite, créer une partition de la même taille sur l’autre disque et l’ajouter au RAID
mdadm /dev/md0 --add /dev/sdXN
Concernant le swap il est probablement plus simple de le recréer effectivement. Attention à remettre le même UUID ou à le mettre à jour dans les fichiers qui y font référence comme /etc/fstab ou /etc/initramfs-tools/conf.d/resume (spécifie le swap utilisé pour l’hibernation).
Note que lorsqu’on a besoin de plusieurs volumes RAID de même niveau sur le même jeu de disques, une alternative à la création de plusieurs ensembles RAID consiste à créer un seul ensemble RAID et à utiliser LVM pour créer des volumes logiques par dessus. C’est plus souple pour la gestion des volumes et de leur taille. Mais cela ne peut être fait que lors de la création. On ne peut pas transformer en LVM un volume qui ne l’est pas sans le détruire.