Attention:
Cet article nécessite de comprendre les bases de LVM.
Il faut être root
pour toutes les commandes.
Il peut arriver que sur une machine virtuelle, un volume logique soit quasiment plein (par exemple, celui monté sur /var/lib/docker
).
Si le disque virtuel de la machine virtuelle est aussi plein, l’opération nécessite plusieurs étapes.
Important:
Il peut arriver qu’il reste de l’espace disque libre même si les partitions sont pleines. On peut le vérifier dans la colonne VFree
de la commande vgs
. S’il en reste, on pourra simplement augmenter la taille de la partition logique.
Toutes les opérations se font à chaud, pas besoin de redémarrage.
On pensera à activer le hotplug des VM s’il n’est pas activé pour éviter un redémarrage de la VM.
Pour augmenter la taille d’un disque, on se rend dans l’onglet Hardware
de la machine virtuelle, puis on choisit l’option Resize disk
ainsi que le nombre de G à ajouter. Par exemple, pour augmenter le premier disque de pica02
:
Une fois le redimensionnement effectué, on devrait constater que le disque associé sur la machine a bien augmenté de taille (fdisk -l
).
Attention:
Cette étape n’est nécessaire que si une partition LVM est utilisée comme Physical Volume.
En général, lorsque les machines virtuelles sont installées, le partitionnement automatique avec LVM va créer ce schéma : une partition standard pour le /boot
, le reste avec LVM.
$ fdisk -l /dev/sd* Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 499711 497664 XM 83 Linux /dev/sda2 501758 125829119 125327362 YG 5 Étendue /dev/sda5 501760 125829119 125327360 YG 8e LVM Linux
La partition à étendre sera donc la partition étendue, puis la partition LVM. Pour ce faire :
$ parted /dev/sda # Les numéros peuvent changer sur votre installation (parted) resizepart 2 100% (parted) quit
On vérifie que la partition étendue s’étend sur tout l’espace disponible. On réalise alors la même opération avec la partition LVM.
$ parted /dev/sda (parted) resizepart 5 100% (parted) quit
À ce stade, les partitions occupent tout l’espace disponible alloué sur l’interface web Proxmox.
Une simple commande suffit pour que le PV associé à /dev/sda5
mette à jour sa taille disponible :
$ pvresize /dev/sda5
Dans mon exemple, avant :
$ pvs PV VG Fmt Attr PSize PFree /dev/sda5 vg00 lvm2 a-- 59,76g 0 /dev/sdb vg01 lvm2 a-- 30,00g 0
Après :
$ pvs PV VG Fmt Attr PSize PFree /dev/sda5 vg00 lvm2 a-- 99,76g 40,00g /dev/sdb vg01 lvm2 a-- 30,00g 0
Le VG est “étendu” automatiquement.
On en vient enfin à notre but : mettre à jour à chaud la taille de notre volume logique, qui est monté (sur /
, ou /DATA
, ou /var/lib/docker
…)
Par exemple, on veut augmenter dans notre cas le LV monté sur /
:
lvdisplay /dev/vg00/root --- Logical volume --- LV Path /dev/vg00/root LV Name root VG Name vg00 [...] LV Size 57,90 GiB
Pour ce faire :
$ lvresize --extents +100%FREE --resizefs /dev/mapper/vg00/root
Nous utilisons le système de fichiers ext4
, donc l’option --resizefs
fonctionne même si la partition est montée.
À ce stade, l’espace est disponible et il n’y a pas de redémarrage à faire.