informatique:systeme:virtualisation:libvirt-kvm

Libvirt/KVM

  • apt-get install libvirt-bin netcat-openbsd kvm
Si le processeur de votre machine ne supporte pas la virtualisation matériel, installer qemu au lieu de kvm. Pour savoir si votre processeur supporte la virtualisation vous pouvez faire :
egrep '^flags.*(vmx|svm)' /proc/cpuinfo

Il est difficile (voir impossible) d'envoyer une séquence de touche SysRq à une VM depuis sa console VNC ouverte sur un host Linux étant donner que cette séquence de touches sera interprétée par le kernel de votre machine locale et non pas celui de la VM… La solution pour cela est de passer via l'hyperviseur en exécutant les commandes suivantes :

VM=mamv
virsh send-key $VM KEY_LEFTALT KEY_SYSRQ KEY_R
virsh send-key $VM KEY_LEFTALT KEY_SYSRQ KEY_E
virsh send-key $VM KEY_LEFTALT KEY_SYSRQ KEY_I
virsh send-key $VM KEY_LEFTALT KEY_SYSRQ KEY_S
virsh send-key $VM KEY_LEFTALT KEY_SYSRQ KEY_U
virsh send-key $VM KEY_LEFTALT KEY_SYSRQ KEY_B

Permettre l'arrêt sans ce logguer :

  • Lancer regedit et aller dans :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system
  • Modifier la clé shutdownwithoutlogon pour la valeur 1 (héxadécimal)

Configurer l'arrêt lors du signal ACPI :

  • Aller dans le Panneau de configuration et aller dans les Options d’alimentation
  • Dans l'onglet Avancé, modifier l'action lorsque le bouton power est précé

Désactiver l'alerte en cas d'arrêt par ACPI :

  • Lancer regedit et aller dans :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
  • Ajouter une clé DWORD Value portant le nom ShutdownWarningDialogTimeout et ayant pour valeur héxadéimal 1

Migration Live

time virsh migrate --live --persistent --copy-storage-all myVM qemu+ssh://172.16.0.2/system

Migration VM éteinte

Si la VM est éteinte, l'idéale est de :

  1. Dumper la configuration de la VM sur l'hyperviseur source dans un fichier :
    virsh dumpxml myVM > myVM.xml
  2. Définir la VM sur le nouvelle hyperviseur à partir du fichier XML :
    virsh define myVM.xml
Si des modifications sont nécessaires dans la configuration pour que la VM fonctionne comme un changement de chemin de bloc device ou encore un modification sur les interfaces réseau, faite les dans le fichier XML avant.
  1. Migrer les blocs devices via netcat. S'il s'agit de LV, vous pouvez le migrer comme suit :
    1. Recréer les blocs devices sur l'hyperviseur de destination
    2. Sur l'hyperviseur de destination :
      1. créer au préalable les LV de la futur VM de taille identique qu'à l'origine
      2. lancer la commande :
        nc -l 19000|dd bs=16M of=/dev/vg_hyp2/myVM0
    3. Sur l'hyperviseur source :
      1. Lancer la commande :
        dd bs=16M if=/dev/vg_hyp1/myVM0|nc 172.16.0.2 19000
Pour suivre l'avancement, vous pouvez récupérer le PID du processus dd sur l'hyperviseur source et exécuter ensuite la commande :
kill -USR1 $PID

Le processus dd affichera alors sur la console la taille des données déjà copiés et la vitesse moyenne.

Ceci est un bug et le plus simple pour le résoudre est de undefine/define la VM :

virsh dumpxml VM > /tmp/VM.xml
virsh undefine VM
virsh define /tmp/VM.xml
virsh start VM

Remplacer le block <clock> dans la configuration de la VM part :

<clock offset='utc'>
  <timer name='rtc' tickpolicy='catchup' track='guest'/>
  <timer name='pit' tickpolicy='delay'/>
  <timer name='hpet' present='no'/>
</clock>
  • informatique/systeme/virtualisation/libvirt-kvm.txt
  • Dernière modification : 2016/07/04 09:48
  • de bn8