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.
4 mars 2019 at 18:35
Bonjour,
Un grand merci pour ces explications parfaitement claires et justes. Je viens de les mettre en oeuvre sous Fedora 29 : tout s’est parfaitement passé, sans la moindre perte de données. Deux petites observations :
1.- Avant « $ resize2fs /dev/mapper/vgsys-vservers 79G » l’OS demande d’exécuter « e2fsck -f /dev/mapper/vgsys-vservers 79G »
2.- Si l’on reboote après « $ fsck.ext4 -fy /dev/mapper/vgsys-vservers » ne pas oublier de démonter par « $ umount /dev/mapper/vgsys-vservers » avant de continuer.
Très cordialement
25 octobre 2015 at 13:16
Hi,
I found very useful your your article, but I’m still facing a problem.
I have a VM with 1 dsk (/dev/sda)
the first part is « /boot », the second is the lvm.
My problem is:
I would to be able to increase the « /boot » (/dev/sda1) by pushing a little bit far my lvm « /dev/sda2 ».
I can increase the « /dev/sda », but the free part is going at the end and I’m not able to say to lvm, leave 500Mo before and I’ll give you 500mo after. So by the way I will be able to increase the/boot size.
do you have any idea, except re-installing all the VM?
It soudns like every « resizexxx » doesn »t care of te start of the partition which they dealing with
Thanks in advance for your help
Regards
Erix