Intrigué par l’effervescence autour de KVM (libre, intégré au noyau, choisi par RedHat et compliant avec la libvirt), j’ai décidé de le tester. J’ai donc déployé une Squeeze 64 bits sur un R410 de test pour essayer d’installer une VM avec un montage ISCSI. Pas de problèmes particuliers sauf pour l’utilisation du LVM à l’installation de la VM. J’ai choisi de créer un LV sur l’hôte par partition demandé sur la VM qui seront partitionnés à l’installation de la VM. L’inconvénient de cette méthode est que l’on multiplie les vd*1 sur le guest, ce n’est pas cosmétique. La seconde de méthode est de faire du LVM sur LVM : on crée le PV de la VM sur un LV du système hôte et on enquille. Je suis un peu effrayé (peut être à mauvais titre) par la superposition de niveaux de LVM.
Je veux retailler le / hébergé sur le LV /dev/virtvol/vm et lui ajouter 4 Go. Tout va se passer sur le système hôte. Let’s go :
# lvextend -L+4G /dev/virtvol/vm
Extending logical volume vm to 26,00 GiB Logical volume vm successfully resized
On ouvre ensuite la table des partitions avec kpartx. Cet outil recrée une arborescence sous /dev/mapper correspondant à la structure des partition du volume cible.
# kpartx -av /dev/virtvol/vm
add map virtvol-vm1 (254:1): 0 46122552 linear /dev/virtvol/vm 63
On recrée la table des partitions sur le volume mappé dans /dev/mapper. Cette opération consiste à supprimer la partition dans un premier temps et à la recréer à la taille maximum. Comme on a une seule partition par table, on se fait pas de noeuds au cerveau avec les offset de départ etc. Et dans un situation de crise genre mes logs sont pleins (ils ont de la chance) on est content d’agrandir sans se poser de questions.
# fdisk /dev/mapper/virtvol-vm
The number of cylinders for this disk is set to 3394.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): <strong>p</strong>
Disk /dev/mapper/virtvol-vm: 27.9 GB, 27917287424 bytes
255 heads, 63 sectors/track, 3394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000aab8
Device Boot Start End Blocks Id System
/dev/mapper/virtvol-vm1 1 2871 23061276 83 Linux
Command (m for help): d 1
Selected partition 1
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3394, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-3394, default 3394):
Using default value 3394
Command (m for help): p
Disk /dev/mapper/virtvol-vm: 27.9 GB, 27917287424 bytes
255 heads, 63 sectors/track, 3394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000aab8
Device Boot Start End Blocks Id System
/dev/mapper/virtvol-vm1 1 3394 27262273+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Argument invalide.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.On va pas faire les malins et actualiser au niveau du noyau la table de partitions :
# kpartx -d /dev/virtvol/vm
# kpartx -av /dev/virtvol/vm
add map virtvol-vm1 (254:1): 0 54524547 linear /dev/virtvol/vm 63
Un petit contrôle du système de fichier de la partition redimensionnée :
# e2fsck -f /dev/mapper/virtvol-vm1
e2fsck 1.41.10 (10-Feb-2009) Passe 1 : vérification des i-noeuds, des blocs et des tailles Passe 2 : vérification de la structure des répertoires Passe 3 : vérification de la connectivité des répertoires Passe 4 : vérification des compteurs de référence Passe 5 : vérification de l'information du sommaire de groupe /dev/mapper/virtvol-vm1 : 27849/1441792 fichiers (0.9% non contigus), 312705/5765319 blocs
Retaillage (dommage j’ai oublié ma pipe) :
# resize2fs /dev/mapper/virtvol-vm1
resize2fs 1.41.10 (10-Feb-2009) En train de retailler le système de fichiers sur /dev/mapper/virtvol-vm1 à 6815568 (4k) blocs. Le système de fichiers /dev/mapper/virtvol-vm1 a maintenant une taille de 6815568 blocs.
On démonte le /dev/mapper :
# kpartx -d /dev/virtvol/vm
Lancement de la VM :
# virsh start vm
Domain vm started
Sinon pour la partie KVM / libvirt ça m’a semblé pas mal du tout.

Aujourd’hui j’ai participé à une install party organisé par LUG orléannais