Réduire la taille d'un volume système en RAID1
Lors de l'installation de ma station de travail en openSUSE Leap 42.3, je n'avais pas créé de partition /home dédiée, n'en ayant alors pas l'utilité. Mes besoins ayant changé, me voici avec une partition racine sur un RAID1 qu'il va me falloir réduire sans perte de données, car je n'ai pas l'intention de réinstaller. Je partage ici la procédure que j'ai suivie dans l'espoir qu'elle puisse vous être utile.
Le contexte :
- Un RAID1 nommé /dev/md127 composé de /dev/sda3 et /dev/sdb3
- ... d'une taille de de 216 Go
- ... contenant un système de fichiers au format btrfs
- ... que je veux réduire à 51 Go (soit 10 Go de plus que la taille actuellement consommée)
- ... dont les partitions débutent, sur leur disque respectif, à 8.5 Go.
Préparation :
Bien entendu, afin de pallier tout problème éventuel, j'ai fait une sauvegarde complète de mon /home :
rsync -arv --progress /home/ /run/media/sogal/MyDisk/homebak/
Et j'ai testé ma procédure par deux fois dans une machine virtuelle reproduisant le contexte énoncé précédemment.
Puis j'ai lancé l'utilitaire btrfs de défragmentation sur / au cas où :
btrfs filesystem defragment -r -v /
Ceci étant fait, je peux passer à la phase du redimensionnement proprement dit. Pour cela, il me faut un système live, j'ai pris la dernière Linux Mint, seule ISO Live récente que j'avais sous la main, avec laquelle j'ai créé une clé USB bootable.
La procédure :
Démarrer sur la clé USB ;
Installer les utilitaires de gestion RAID nécessaires :
apt-get install mdadmCharger les modules nécessaires :
modprobe mdio modprobe linear modprobe multipath modprobe raid0 modprobe raid1 modprobe raid5 modprobe raid6 modprobe raid10Chercher les volumes RAID présents :
mdadm --examine --scanActiver les volumes RAID trouvés :
mdadm -A --scanMonter le volume RAID1 à réduire :
mount /dev/md127 /mntRedimensionner le système de fichiers :
btrfs filesystem resize -165G /mntCette opération a pris un bon moment, laisser le travail se faire !
Une fois le système de fichiers btrfs réduit, démonter le volume RAID1 :
umount /mntMettre une des partitions en échec :
mdadm /dev/md127 --fail /dev/sda3Puis la retirer du RAID :
mdadm /dev/md127 --remove /dev/sda3Redimensionner la partition un poil plus grand que le système de fichiers :
parted /dev/sda → resizepart 3 → end 60GB→ Yes → quitVérifier le système de fichiers :
btrfs check /dev/sda3Il va renvoyer une série de messages qui ne veulent pas dire que le système de fichiers est corrompu, pour s'assurer de la réussite du test, vérifier son code de retour :
echo $?si c'est 0, c'est tout bon.
Réduire le volume RAID1 à une taille légèrement inférieure à celle des partitions qui le composent (j'ai mis 500 Mo de moins) :
mdadm --grow /dev/md127 --size=xxxxoù xxxx = taille souhaitée en GB * 1024 * 1024
Rajouter le disque au RAID :
mdadm /dev/md127 --add /dev/sda3Attendre la reconstruction du volume RAID1, visible en lançant :
cat /proc/mdstatFaire pareil avec l'autre partition (/dev/sdb3 dans mon cas) (étapes 8 à 14 mais pas la 13 !)
Agrandir le volume RAID1 au maximum de la nouvelle taille des partitions qui le composent :
mdadm --grow /dev/md127 --size maxRedémarrer sur votre système habituel :
reboot
Le résultat :
Au redémarrage sur ma Leap, rien à signaler, mes disques /dev/sda et /dev/sdb disposent maintenant d'un espace libre de 165 Go dans lequel j'ai pu créer, respectivement les partitions /dev/sda4 et /dev/sdb4 que j'ai ajouté à un nouveau volume RAID1 (chiffré pour le coup) dans lequel j'ai transféré mon /home.
Enjoy !