Le gros avantage du système LVM2 (Logical Volumes Management, deuxième génération) est de pouvoir redimensionner ses partitions à chaud (c'est-à-dire sans redémarrage). En particuliers, quand on utilise un système de fichiers redimensionnable aussi, sous entendu sans démontage de l'arborescence. Pour cela j'utilise le système de fichier ReiserFS qui est extensible à chaud, mais par réductible cependant.
Dans le cas qui m'intéresse il s'agit de réduire une partition, en l'occurrence /opt qui fait 15Go pour augmenter deux autres partition, /var (actuellement 5Go) et /home (65Go).
Ces actions impliquent que les outils de manipulation des volumes logiques et des partitions ReiserFS sont installés. Etant donné les risques lors de manipulation de partition et notamment la réduction, sauvegarder vos données !!!
Toutes ces manipulations nécessitent les droit d'administrateur.
Réduire un Volume Logique
Dans mon exemple, je veux reduire /opt de 15Go à 5Go qui n'est plus occupé que par 441 Mo de données. Bien entendu, ce ne serais pas possible avec plus de 5Go d'espace occupé.
Le volume logique contenant /opt est /dev/vg/opt du groupe de volume vg. Le périphérique associé est /dev/mapper/vg-opt en se qui concerne le système de fichier.
Le principe: réduire d'abord le contenu (système de fichier), puis le contenant (volume logique).
On commence donc par redimensionner le système de fichier:
# umount /opt
En cas de problème, on peux consulter la liste des fichiers ouverts de /opt, grâce à lsof (LiSt Open Files):
# lsof | grep "/opt"
Ensuite, on redimensionne le système de fichiers:
# resize_reiserfs -s -10G /dev/mapper/vg-opt resize_reiserfs 3.6.19 (2003 www.namesys.com) You are running BETA version of reiserfs shrinker. This version is only for testing or VERY CAREFUL use. Backup of you data is recommended. Do you want to continue? [y/N]:y Processing the tree: 0%....20%....40%....60%....80%....100% left 0, 10458 /sec nodes processed (moved): int 5 (3), leaves 576 (217), unfm 104004 (48304), total 104585 (48524). check for used blocks in truncated region ReiserFS report: blocksize 4096 block count 1310720 (3932160) free blocks 1197885 (3819245) bitmap block count 40 (120) Syncing..done resize_reiserfs: Resizing finished successfully.
Enfin, on peux réduire la taille du volume logique (répondre "y" à l'avertissement) :
# lvreduce -L -10G /dev/vg/opt WARNING: Reducing active and open logical volume to 15,00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce opt? [y/n]: y Reducing logical volume opt to 5,00 GB Logical volume opt successfully resized
Et on oublie pas de remonter la partition à sa place:
# mount /opt
La commande vgdisplay (Volumes Groups DISPLAY: affichage des groupe de volumes) devrait confirmer le nouvel espace libre dans le groupe de volumes:
# vgdisplay --- Volume group --- VG Name vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 43 VG Access read/write VG Status resizable MAX LV 0 Cur LV 7 Open LV 7 Max PV 0 Cur PV 1 Act PV 1 VG Size 137,58 GB PE Size 4,00 MB Total PE 35220 Alloc PE / Size 30720 / 120,00 GB <strong> Free PE / Size 4500 / 17,58 GB</strong> VG UUID EDFJB6-sx7P-SyWj-g4VZ-8oay-q1xZ-Q7J27L
A noter qu'il me restait encore 7.58Go de libre dans ce groupe de volumes.
Etendre un Volume Logique
C'est plus simple, du fait qu'il n'y a pas besoin de démonter la partition à étendre.
Le principe:étendre le contenant (volume logique), avant le contenu (système de fichier).
Ici, je vais augmenter de 5Go la partition /var :
# lvextend -L +5G /dev/vg/var Extending logical volume var to 10,00 GB Logical volume var successfully resized
Suivi du système de fichier:
# resize_reiserfs -s +5G /dev/mapper/vg-var resize_reiserfs 3.6.19 (2003 www.namesys.com) resize_reiserfs: On-line resizing finished successfully.
Il reste à faire de même avec la partition /home:
# lvextend -L +10G /dev/vg/home Extending logical volume home to 75,00 GB Logical volume home successfully resized # resize_reiserfs -s +10G /dev/mapper/vg-home resize_reiserfs 3.6.19 (2003 www.namesys.com) resize_reiserfs: On-line resizing finished successfully.
La commande df -h confirme que c'est tout bon:
# df -h Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur /dev/md2 4,6G 465M 4,0G 11% / udev 10M 156K 9,9M 2% /dev <strong>/dev/mapper/vg-home 75G 38G 38G 51% /home</strong> /dev/mapper/vg-tmp 5,0G 232M 4,8G 5% /tmp /dev/mapper/vg-usr 20G 3,7G 17G 19% /usr <strong>/dev/mapper/vg-var 10G 3,6G 6,5G 36% /var</strong> /dev/mapper/vg-var--tmp--portage 10G 665M 9,4G 7% /var/tmp/portage /dev/mapper/vg-devel 9,9G 151M 9,2G 2% /mnt/devel shm 1001M 0 1001M 0% /dev/shm /dev/sdg1 28G 19G 9,5G 67% /media/sdg1 <strong>/dev/mapper/vg-opt 5,0G 441M 4,6G 9% /opt</strong>