#1 Le 25/01/2013, à 11:34
- mcmyst
Redimensionnement volume LVM dans une VM
Bonjour à tous,
J'ai un serveur qui fait tourner plusieurs VM sous KVM.
Pour chaque VM un volume LVM lui est dédié:
lvscan (tronqué)
ACTIVE '/dev/vg1/vm1' [8.00 GiB] inherit
ACTIVE '/dev/vg1/vm2' [8.00 GiB] inherit
ACTIVE '/dev/vg1/vm3' [8.00 GiB] inherit
A l'intérieur de chaque VM voici ce que donne un lvscan
ACTIVE '/dev/kvmvg1/boot' [92.00 MiB] inherit
ACTIVE '/dev/kvmvg1/root' [476.00 MiB] inherit
ACTIVE '/dev/kvmvg1/usr' [952.00 MiB] inherit
ACTIVE '/dev/kvmvg1/var' [952.00 MiB] inherit
ACTIVE '/dev/kvmvg1/tmp' [476.00 MiB] inherit
ACTIVE '/dev/kvmvg1/home' [476.00 MiB] inherit
ACTIVE '/dev/kvmvg1/srv' [476.00 MiB] inherit
ACTIVE '/dev/kvmvg1/swap' [1.86 GiB] inherit
Je souhaite élargir les partitions /home et /var.
Pour ce faire, j'éteinds la VM, j'agrandis d'abord la partition LVM sur l'hôte:
lvextend -L 100G /dev/vg1/vm3
Puis je démarre la VM, et je redimension mon physical volume:
pvresize /dev/vda1
Physical volume "/dev/vda1" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Mais qui ne souhaite visiblement pas augmenter:
pvscan
PV /dev/vda1 VG kvmvg1 lvm2 [8.00 GiB / 2.33 GiB free]
Total: 1 [8.00 GiB] / in use: 1 [8.00 GiB] / in no VG: 0 [0 ]
J'ai aussi essayer de faire booter ma VM avec un cd Gparted mais je ne peux pas toucher au partitionnement (un petit verroux m'en empêche). Je pense que c'est du au fait que le volume LVM est monté sur l'hôte, mais je ne peux pas le démonter sinon la VM ne démarre pas...
Des idées ?
Merci d'avance
Hors ligne
#2 Le 25/01/2013, à 13:06
- Elder
Re : Redimensionnement volume LVM dans une VM
Salut,
Je n'ai pas reproduit ton problème (pas de VM avec LVM inside) par contre j'ai peut être une idée.
Quand je redimenssionne un LV attribué comme disque virtuel à une VM :
root@xxxxxx:~# lvextend -L20G /dev/vm_vg/shinenv
Extending logical volume shinenv to 20,00 GiB
Logical volume shinenv successfully resized
root@xxxxxx:~# vgchange -ay # Pas sur que ce soit utile mais c'est un reflexe
11 logical volume(s) in volume group "vgprodvm" now active
12 logical volume(s) in volume group "vm_vg" now active
Tout semble bien se passer, sauf que quand je demande à la libvirt de m'afficher la taille du disque virtuel...
root@xxxxxx:~# virsh -c qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # vol-info /dev/vm_vg/shinenv
Name: shinenv
Type: block
Capacity: 10,00 GiB
Allocation: 10,00 GiB
Pour régler le problème :
virsh # pool-refresh Physique
Pool Physique refreshed
virsh # vol-info /dev/vm_vg/shinenv
Name: shinenv
Type: block
Capacity: 20,00 GiB
Allocation: 20,00 GiB
I hope it helps
Hors ligne
#3 Le 25/01/2013, à 13:49
- mcmyst
Re : Redimensionnement volume LVM dans une VM
J'ai effectivement le même résultat que toi, après avoir fait le "pool-refresh" je suis bien passé à 100G.
Par contre une fois la VM bootée, le pvscan ne m'indique que 8G...
Que je soit sur de bien comprendre, pvscan doit me retourner la taille du volume physique ? Et non pas la taille du système de fichier ?
Car pour moi la taille du volume physique (en l'occurence ma partition LVM redimensionnée à 100G) est bien de 100G dans l'hôte. Mais ma VM n'en voit que 8...
Hors ligne
#4 Le 25/01/2013, à 14:42
- Elder
Re : Redimensionnement volume LVM dans une VM
Je me suis bricolé une VM ubuntu avec un lvm...
Mon hyperviseur est une Debian wheezy mais ça ne change pas grand' chose.
(le sudo systématique me gonfle alors je suis du genre a faire sudo -s une bonne fois pour toute, il pourrait donc manquer des sudo)
Sur ma VM état de base :
root@ubdc01:~# fdisk -l /dev/vda
Disk /dev/vda: 10.7 GB, 10737418240 bytes
16 têtes, 63 secteurs/piste, 20805 cylindres, total 20971520 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000c5e10
Périphérique Amorce Début Fin Blocs Id Système
/dev/vda1 * 2048 499711 248832 83 Linux
/dev/vda2 501758 20969471 10233857 5 Étendue
/dev/vda5 501760 20969471 10233856 8e LVM Linux
La VM est arrêtée, sur l'hyperviseur j’agrandis le LV qui lui est alloué
root@hyperviseur:~# lvresize -L15G /dev/vm_vg/ubdc
Extending logical volume ubdc to 15,00 GiB
Logical volume ubdc successfully resized
root@hyperviseur:~# vgchange -ay
La VM est redémarrée :
root@ubdc01:~# fdisk -l /dev/vda
Disk /dev/vda: 16.1 GB, 16106127360 bytes
16 têtes, 63 secteurs/piste, 31207 cylindres, total 31457280 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000c5e10
Périphérique Amorce Début Fin Blocs Id Système
/dev/vda1 * 2048 499711 248832 83 Linux
/dev/vda2 501758 20969471 10233857 5 Étendue
/dev/vda5 501760 20969471 10233856 8e LVM Linux
Le disque physique de la VM a bien été agrandi.
Reste a étendre le PV
root@ubdc01:~# pvscan
PV /dev/vda5 VG ubdc01 lvm2 [9,76 GiB / 0 free]
Total: 1 [9,76 GiB] / in use: 1 [9,76 GiB] / in no VG: 0 [0 ]
root@ubdc01:~# pvresize --setphysicalvolumesize 16G /dev/vda5
WARNING: /dev/vda5: Overriding real size. You could lose data.
Physical volume "/dev/vda5" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
root@ubdc01:~# pvscan
PV /dev/vda5 VG ubdc01 lvm2 [16,00 GiB / 6,24 GiB free]
Total: 1 [16,00 GiB] / in use: 1 [16,00 GiB] / in no VG: 0 [0 ]
Edit : Comme le dit le dernier message lors du pvresize, j'ai un peu dépassé les bornes, vu que j'ai oublié une opération....
Redimensionner la partition LVM au sein de la VM (je me fouette très fort... Enfin moralement) AVANT de redimensionner le PV.
Bon ça n'empeche pas ma VM de redémarrer vu que je n'ai pas encore étendu mes LV.
Pour redimensionner une partition sans passer par un support live il est toujours possible d'utiliser fdisk alors que la machine est démarrée.
C'est un peu brutal, d'autant qu'en cas d'erreur de manip bye bye système...
Fdisk ne redimensionne pas les partitions il faut les détruire et les refaire sans se tromper
Il est très important de noter les secteurs de début (au moins) des partitions que l'on souhaite redimensionner
En cas d'erreur sortir de fdisk avec [ctrl]+[c]
Ma partition LVM est un volume logique dans une partition étendue (pourquoi l'installeur l'a fait comme ça ?).
Donc avant de redimenssionner la partoche LVM il faut s'occuper de l'extended.
Comme de bien entendu la suppression de la partition étendue supprimera la partition LVM qu'il faudra donc refaire, à la bonne taille.
root@ubdc01:~# fdisk /dev/vda
Commande (m pour l'aide): p
Disk /dev/vda: 16.1 GB, 16106127360 bytes
16 têtes, 63 secteurs/piste, 31207 cylindres, total 31457280 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000c5e10
Périphérique Amorce Début Fin Blocs Id Système
/dev/vda1 * 2048 499711 248832 83 Linux
/dev/vda2 501758 20969471 10233857 5 Étendue
/dev/vda5 501760 20969471 10233856 8e LVM Linux
Commande (m pour l'aide): d # Suppression pure et simple de la partition étendu
Numéro de partition (1-5): 2
Commande (m pour l'aide): n # Création de la nouvelle partition étendu
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Numéro de partition (1-4, par défaut 2): 2 # Même n° de partition que la précédente
Premier secteur (499712-31457279, par défaut 499712):
Utilisation de la valeur par défaut 499712
Dernier secteur, +secteurs or +taille{K,M,G} (499712-31457279, par défaut 31457279):
Utilisation de la valeur par défaut 31457279
Commande (m pour l'aide): p
Disk /dev/vda: 16.1 GB, 16106127360 bytes
16 têtes, 63 secteurs/piste, 31207 cylindres, total 31457280 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000c5e10
Périphérique Amorce Début Fin Blocs Id Système
/dev/vda1 * 2048 499711 248832 83 Linux
/dev/vda2 499712 31457279 15478784 5 Étendue
Commande (m pour l'aide): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
Premier secteur (501760-31457279, par défaut 501760):
Utilisation de la valeur par défaut 501760
Dernier secteur, +secteurs or +taille{K,M,G} (501760-31457279, par défaut 31457279):
Utilisation de la valeur par défaut 31457279
Commande (m pour l'aide): p
Disk /dev/vda: 16.1 GB, 16106127360 bytes
16 têtes, 63 secteurs/piste, 31207 cylindres, total 31457280 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000c5e10
Périphérique Amorce Début Fin Blocs Id Système
/dev/vda1 * 2048 499711 248832 83 Linux
/dev/vda2 499712 31457279 15478784 5 Étendue
/dev/vda5 501760 31457279 15477760 83 Linux
Commande (m pour l'aide): t
Du coup la partition LVM qui contient le PV fait toujours moins des 16G paramétrés précedement
pvresize --setphysicalvolumesize 14G /dev/vda5
Physical volume "/dev/vda5" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Mais en baissant mes prétention, il ne rale plus.
I hope it helps
Dernière modification par Elder (Le 25/01/2013, à 15:23)
Hors ligne
#5 Le 25/01/2013, à 16:25
- mcmyst
Re : Redimensionnement volume LVM dans une VM
Magnifique, rien à dire, juste parfait !
Hors ligne