Table des matières
VIRSH
Avec la commande virsh, vous accédez a un shell d'administration. pour avoir de l'aide dans ce shell la commande help est fort utile
sinon on peut l'utiliser comme une commande
Démarrer une VM
virsh start nom-de-la-VM
arrêter une VM
virsh shutdown nom-de-la-VM
si la machine ne veut pas s'éteindre
virsh destroy nom-de-la-VM
Afficher la liste des machines virtuelles et l'état courant
virsh list
pour supprimer la VM
virsh destroy /etc/libvirt/qemu/nom-de-la-VM.xml
attention cela de ne supprime pas le fichier image disque !!!!
pour prendre en compte les modifications du fichier de définition xml ou pour créer une nouvelle machine virtuelle à partir du fichier xml
virsh define /etc/libvirt/qemu/nom-de-la-VM.xml
le fichier XML
Chaque machine virtuelle posséde un fichier XML de configuration détaillant les caractéristiques de votre machine virtuelle: type d'architecture processeur, nombre de processeur, quantité mémoire maximale, nom du fichier contenant l'image de votre machine virtuelle…
Voici le fichier Le-Nom-De-La-Machine.xml de notre VM que nous avons créé précédement.
Par défaut, le fichier xml est accessible dans /etc/libvirt/qmenu.
<domain type='kvm'> <name>Le-Nom-De-La-Machine</name> <uuid>a135e7a9-be5e-8a46-3995-a0d429c5cda9</uuid> <memory>524288</memory> <currentMemory>524288</currentMemory> <vcpu>2</vcpu> <os> <type arch='x86_64' machine='pc-0.12'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='disk'> <driver name='qemu'/> <source file='/data/VMdisk.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='block' device='cdrom'> <driver name='qemu'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' unit='0'/> </disk> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='bridge'> <mac address='52:54:00:87:07:96'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target port='0'/> </console> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' keymap='fr'/> <video> <model type='cirrus' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> </devices> </domain>
La création d'une machine virtuelle se fait par virsh create Le-Nom-De-La-Machine.xml
Vous pouvez contrôler que votre machine est exécutée en faisant un virsh list.
Comment monter une partition kvm sur le système hôte
Il faut installer le paquet kpartx :
aptitude install kpartx
Ensuite, vous devez saisir les commandes suivantes :
losetup /dev/loop0 le fichier de la VM
par exemple pour la partition truc se trouvant dans /etc/libvirt/qemu/
losetup /dev/loop0 /etc/libvirt/qemu/truc.xml
puis :
kpartx -av /dev/loop0
et enfin pour monter la partition sur le point de montage /media/disk par ex :
mount /dev/mapper/loop0x /media/disk
(où x est un numéro suivant le nb de partition qu'il y a sur la VM).
Faites ce que vous avez à faire puis n'oubliez pas de démonter la partition avant de relancer votre VM (ou non).
Pour défaire ce montage :
losetup -a
donne la liste des statuts des partitions
exemple de résultat :
/dev/loop0: [000e]:6346 (/dev/vg0/mail)
la commande :
kpartx -d /dev/loop0
permet de détacher la partition (/dev/vg0/mail dans l'exemple).
Puis un :
losetup -d /dev/loop0
permet de défaire le montage effectué auparavant.
Autre méthode bien plus simple
On peut commencer par rechercher la partition à monter :
# lvscan | grep apache
Le résultat :
ACTIVE '/dev/vg0/apache' [20.00 GiB] inherit
Nous allons utiliser la commande kpartx. Elle permet de lire la table des partitions à partir d'un fichier périphérique spécifié (ici /dev/vg0/apache).
# kpartx -av /dev/vg0/apache
Si tout se passe bien, la commande nous retourne :
add map vg0-apache1 (254:23): 0 9949184 linear /dev/vg0/apache 2048
add map vg0-apache2 (254:24): 0 530434 linear /dev/vg0/apache 9953278
add map vg0-apache5 (254:25): 0 530432 254:24 2
Montage de la partition :
# mkdir /mnt/apache/ # mount /dev/mapper/vg0-apache1 /mnt/apache
add map vg0-apache1
Vérifions:
# ls /mnt/apache/
bin cdrom etc home lib lost+found mnt proc sbin srv tmp var
boot dev foo initrd.img lib64 media opt root selinux sys usr vmlinuz
Une fois les manipulations terminées, il faut démonter la partition proprement :
# umount /mnt/apache/ # kpartx -d /dev/vg0/apache
Agrandir ou diminuer une partition lvm
Étendre un volume logique
Pour étendre un volume logique, il suffit de dire à lvextend de combien vous voulez augmenter la taille
Nous souhaitons augmenter de 10Go notre volume logique.
umount /mnt/data lvextend -L+10G /dev/vg0/data e2fsck -f /dev/vg0/data resize2fs /dev/vg0/data mount /dev/vg0/data /mnt/data
Réduire un volume logique
Nous souhaitons diminuer de 5Go notre volume logique.
x umount /mnt/data e2fsck -f /dev/vg0/data resize2fs /dev/vg0/data 5G lvreduce -L-5G /dev/vg0/data mount /dev/vg0/data /mnt/data
Ajout des nouvelles partitions au groupe de volume
Nous avons une partition par exemple /dev/sda1 et nous souhaitons l'ajouter à notre groupe de volume vg0.
vgextend vg0 /dev/sda1
Si tout ce passe bien nous obtenons : Volume Group “vg0” successfully extended