Il arrive de manquer de place sur son serveur. Même si on dispose de LVM, parfois il ne reste plus d’espace à allouer… Il faut donc penser à repartitionner. Dans mon cas, c’est pour des vservers et cela peu se faire à chaud. Pour vous, même dans le cas de la partition root du système, tout peut se faire à chaud SAUF le fsck qui nécessite un redémarrage.

Il y a 2 étapes :

  • On va réduire un volume LVM disposant de trop d’espace
  • On va ajouter cette espace récupéré à un autre volume LVM qui en a besoin

Réduction d’un Logical Volume LVM

On commence par réduire la taille du LV (volume logique) dont on a suffisamment de place pour raboter. Notre VG (volume gorup) aura de nouveau de l’espace libre. Et ensuite on attribuera cette place libre au LV qui doit être augmenté.

On check le type de système, la taille etc :

$ dumpe2fs -h /dev/mapper/vgsys-vservers

On démonte et on force le check de la partition :

$ umount /dev/mapper/vgsys-vservers

$ fsck.ext4 -fy /dev/mapper/vgsys-vservers

Pour une partition montée à forcer au démarrage de la machine, créez un fichier vide nommé « forcefsck » à la racine du système.

 

On regarde la taille de la partition à réduire :

$ lvs

LV         VG     Attr   LSize   Origin Snap%  Move Log Copy%  Convert
vservers   vgsys  -wi-a-  88.47g

Ici je veux réduire à 80G, on va donc réduire à 79G. C’est pour être certain de ne perdre aucune donnée lorsque l’on va réduire le LV. Une fois le LV réduit à 80Go, on augmentera la taille du système de fichiers à celui du LV pour avoir nos 80G.

$ resize2fs /dev/mapper/vgsys-vservers 79G

On réduit le logical volume :

$ lvreduce -L 80G -v /dev/mapper/vgsys-vservers
Finding volume group vgsys
WARNING: Reducing active logical volume to 80.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vservers? [y/n]: y
Archiving volume group "vgsys" metadata (seqno 26).
Reducing logical volume vservers to 80.00 GiB
Found volume group "vgsys"
Found volume group "vgsys"
Loading vgsys-vservers table (254:6)
Suspending vgsys-vservers (254:6) with device flush
Found volume group "vgsys"
Resuming vgsys-vservers (254:6)
Creating volume group backup "/etc/lvm/backup/vgsys" (seqno 27).
Logical volume vservers successfully resized

On vérifie :

$ lvs

On adapte la taille de notre système de fichiers pour atteindre les 80G :

$ resize2fs /dev/mapper/vgsys-vservers

On remonte et c’est fait.

$ mount /dev/mapper/vgsys-vservers

On a maintenant ~8,5Go à répartir :

$ vgdisplay vgsys
--- Volume group ---
VG Name               vgsys
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  27
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                10
Open LV               10
Max PV                0
Cur PV                1
Act PV                1
VG Size               148.81 GiB
PE Size               4.00 MiB
Total PE              38096
Alloc PE / Size       35927 / 140.34 GiB
Free  PE / Size       2169 / 8.47 GiB

 

Augmenter la taille d’un volume logique LVM

On va maintenant augmenter la taille de notre LV manquant de place. Cela peut se faire à chaud sans démontage de partition :

On prend le nombre max d’extend libre, ici 2169 repris dans la commande « vgdisplay » plus haut. Attention qu’on utilise l’option petit « L » pour travailler avec les extend plutôt que la taille :

$ lvextend -l +2169 /dev/mapper/vs-mysql

Extending logical volume vs-mysql to 28.47 GiB
Logical volume rigamysql successfully resized

$ resize2fs /dev/mapper/vs-mysql

Filesystem at /dev/mapper/vs-mysql is mounted on /vserver/server/var/lib/mysql; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/vs-mysq to 7463936 (4k) blocks.
The filesystem on /dev/mapper/vs-mysq is now 7463936 blocks long.

Voilà on respire à nouveau 🙂

Un lien si vous avez besoin de plus d’informations sur LVM.