Outils pour utilisateurs

Outils du site


braveo:docexploit:kvm

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

Attention : la VM doit être arrêtée pour faire cela.

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 
Ne pas oublier de mettre 1 après vg0-apache. kpartx nous a retourné :
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.

il est nécessaire de démonter le système de fichiers avant le redimensionnement
  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

Quelques ressources

braveo/docexploit/kvm.txt · Dernière modification : 2024/04/16 22:26 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki