Différences entre les versions de « Kvm »

De BlaxWiki
Aller à la navigationAller à la recherche
Ligne 7 : Ligne 7 :
se présente sous la forme de modules kernel. Chaque VM est vu comme un process lambda sur l'hyperviseur et un "ps" permet de voir les VM qui tournent.
se présente sous la forme de modules kernel. Chaque VM est vu comme un process lambda sur l'hyperviseur et un "ps" permet de voir les VM qui tournent.
Par défaut, il n'existe pas de commande equivalente au "xm" de Xen. Afin d'agir sur les VM KVM, il faut passer par libvirtd qui est un daemon d'abstraction multi-hyperviseur.
Par défaut, il n'existe pas de commande equivalente au "xm" de Xen. Afin d'agir sur les VM KVM, il faut passer par libvirtd qui est un daemon d'abstraction multi-hyperviseur.
La configuration des VM se fait par l'intermédiaire d'un fichier de configuration XML. Les fichiers de configuration se trouvent dans /etc/libvirt/qemu/. Virsh est un utilitaire
La configuration des VM se fait par l'intermédiaire d'un fichier de configuration XML. Les fichiers de configuration se trouvent dans /etc/libvirt/qemu/. Virsh est un utilitaire permettant d'interroger le daemon libvirtd est interagir avec les VMs. Comme libvirtd est multi-hyperviseur, certaines commandes ne fonctionnent car non supportées  
en ligne  de commande permettant d'interroger le daemon libvirtd est interagir avec les VMs. Comme libvirtd est multi-hyperviseur, certaines commandes ne fonctionnent car non supportées  
par KVM.  
par KVM.  
</pre>
</pre>

Version du 14 janvier 2013 à 09:42


/!\/!\ Sur les vm il faut que le process acpid tourne, sinon on ne pourra pas les arreter proprement avec la commande virsh shutdown /!\/!\

Présentation

KVM est l'hyperviseur libre supporté par RedHat. Il est extrêmement simple et facile d'utilisation. Par rapport à Xen, il n'oblige pas de faire tourner un kernel linux spécifique et
se présente sous la forme de modules kernel. Chaque VM est vu comme un process lambda sur l'hyperviseur et un "ps" permet de voir les VM qui tournent.
Par défaut, il n'existe pas de commande equivalente au "xm" de Xen. Afin d'agir sur les VM KVM, il faut passer par libvirtd qui est un daemon d'abstraction multi-hyperviseur.
La configuration des VM se fait par l'intermédiaire d'un fichier de configuration XML. Les fichiers de configuration se trouvent dans /etc/libvirt/qemu/. Virsh est un utilitaire permettant d'interroger le daemon libvirtd est interagir avec les VMs. Comme libvirtd est multi-hyperviseur, certaines commandes ne fonctionnent car non supportées 
par KVM. 

Démarrage auto des vm

Pour que les vm soient lancées automatiquement au démarrage, on peut utiliser virsh autostart nomvmvm. Si on a un message d'erreur, c'est que lorsqu'on fait un virsh dominfo nomvm,
la vm est en mode Persistent: No. On peut passer en mode Persistent à yes, en faisant un virsh define nomvm, mais attention cela va modifier quelques parametres dans le
fichier xml, BACKUPER avant l'original, puis recopier le fichier xml original sur le nouveau. La vm est maintenant en mode persistent, et on peut faire un virsh autostart nomvm.

Sinon il suffit de creer des liens symboliques dans /etc/libvirt/qemu/autostart/ : lg2.infra.agarik.com.xml -> /etc/libvirt/qemu/lg2.infra.agarik.com.xml

La vm ne sera démmarré au reboot que si elle tournait lorsque le serveur a redémarré

Problème perf réseau

Avec une centos 6.0 il y avait de gros problème de perf réseau (perte de paquets, coupure réseau)
Au lieu d'avoir : <emulator>/usr/libexec/qemu-kvm</emulator>, il faut mettre     <emulator>/usr/libexec/qemu-kvm.txtimer</emulator>
Ce fichier contient en fait : 
#!/bin/sh
exec /usr/libexec/qemu-kvm `echo "$@" | sed 's|virtio-net-pci|virtio-net-pci,tx=timer|g'`

Virbr0

Par défaut kvm monte une interface virbr0 avec une ip en 192.168.122 qui sert à natter les vm, la plus part du temps on ne s'en sert pas. Pour la désactiver :

virsh net-list
Sample outputs:

Name                 State      Autostart
-----------------------------------------
default              active     yes

To disable virbr0, enter:

# virsh net-destroy default
# virsh net-undefine default
# service libvirtd restart
# ifconfig 

Commande virsh

* virsh nodeinfo : info cpu & mémoire
* virsh capabilities : info plus précise sur le cpu (id cpu, nombre, capacité...)
* virsh vcpuinfo syslog1.infra.agarik.com : info cpu au niveau du domaine
syslog1.infra.agarik.com
VCPU:           0
CPU:            0
State:          running
CPU time:       10.6s
CPU Affinity:   y---
Ici cela signifie que la vm utilise le cpu id 0 uniquement (car au niveau cpu affinity le "y" est au début, si on a le "y" sur les 4 cases cela signifie que la vm peut utiliser 
indifféremment n'importe lequel des cpu). Le nombre de cpu affiché par cat /proc/cpuinfo est toujours le même (celui qu'a reellement le serveur), meme lorsque les vm sont lancées

* virsh domiflist syslog1.infra.agarik.com (en complément de brctl show)
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet4      bridge     front619   virtio      52:54:00:9f:9f:e5
vnet5      bridge     back276    virtio      52:54:00:b1:27:16

* uuidgen (pas une commande virsh) : génère des uuid