Ceci est une ancienne révision du document !


Libvirt

Changer l'emplacement des images disques et images ISO

Par défaut (en tout cas sous ubuntu ;p) les images disque sont sensées être stockées dans le répertoire “/var/lib/libvirt/images/” ce qui est à mon sens tout sauf pratique si vous faites partie des gens qui soit n'allouent pas une partition / de quelques centaines de Go ou encore qui souhaitent utiliser juste un sous répertoire d'une partition deja montée ailleurs.

Pour changer le répertoire par défaut des nouvelles images disque, lancer un shell virsh et utiliser les commandes suivantes, par exemple pour utiliser le répertoire /mnt/monGrosTas/VMs_KVM :

virsh # pool-destroy default
virsh # pool-undefine default
virsh # pool-define-as --name default --type dir --target /mnt/monGrosTas/VMs_KVM
virsh # pool-autostart default
virsh # pool-start default

Pendant qu'on est la dedans il peut être judicieux de définir un “pool” contenant les images ISO d'installateurs pour faciliter la creation de VMs depuis “virt-manager” :

virsh # pool-define-as --name local-iso --type dir --target /mnt/monGrosTas/ISOs
virsh # pool-autostart local-iso
virsh # pool-start local-iso

Avoir un clavier francais en accédant à une VM en VNC

Il faut pour cela modifier la configuration de la VM ( “domain” ) , et rajouter à l'intérieur de la balise “graphics” :

keymap='fr'
Ne pas éditer le fichier XML de la VM dans /etc/libvirt/qemu/ de la VM directement, ca ne marche pas (en tous cas si la VM est en fonctionnement).
Il peut etre nécessaire de configurer le keymap dans la VM, comme par exemple sous ubuntu
dpkg-reconfigure console-setup
  • Editer la configuration de la VM , par exemple pour la machine nommée “maVM” :
    virsh edit maVM
  • Ajouter l'option pour obtenir par exemple :
    ...
    <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='fr'/>
    ...

Il faut bien sur redémarrer la VM proprement :

  • se connecter à la VM comme d'habitude, arreter la VM depuis le systeme :
    ssh root@maVM
    root@maVM:~# halt
  • virsh stop maVM
  • virsh start maVM

Cette option doit se traduire par la présence dans la commande KVM lancée par libvirt de “-k fr”, vous pouvez vérifier avec un petit “ps aux”.

Configurer libvirt pour autoriser le boot PXE

Le reseau par defaut déclaré dans libvirt ne permet pas le boot réseau, pour le permettre il faut définir un réseau comme suit :

  • exporter l'ancien reseau en XML :
# virsh net-dumpxml > /tmp/network.xml
  • editer le fichier XML obtenu, et rajouter les balises <tftp> dans <ip> et <bootp> dans <dhcp>. Le fichier obtenu doit ressembler à :
    <network>
      <name>default</name>
      <uuid>3f52b3a6-fd33-a46a-7d15-67c917fa9cc2</uuid>
      <forward mode='nat'/>
      <bridge name='virbr0' stp='on' delay='0' />
      <ip address='192.168.122.1' netmask='255.255.255.0'>
        <tftp root='/mnt/data/tftpboot' />
        <dhcp>
          <range start='192.168.122.2' end='192.168.122.254' />
          <bootp file='pxelinux.0' />
        </dhcp>
      </ip>
    </network>
Il faut bien sur adapter le parametre root du tftp pour utiliser le repertoire de votre choix comme racine du serveur TFTP.
  • réimporter ce nouveau réseau :
    # virsh net-destroy default
    # virsh net-define /tmp/network.xml
    # virsh net-autostart default
    # virsh net-start default
  • verifier la presence des options passées a dnsmasq, par exemple :
    $ ps aux | grep dnsmasq
    nobody    1739  0.0  0.0  21688  1116 ?        S    10:03   0:02 dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-lease-max=253 --dhcp-no-override --enable-tftp --tftp-root /mnt/data/tftpboot --dhcp-boot pxelinux.0

    noter le “ –enable-tftp –tftp-root /mnt/data/tftpboot –dhcp-boot pxelinux.0”.

Pour que le boot PXE fonctionne avec kvm, il faut disposer d'un firmware des cartes reseau utilisées dans les VMs gérant le boot PXE. Pour les obtenir, sur ubuntu 11.04 il faut par exemple installer le paquet kvm-pxe :
# apt-get install kvm-pxe

Assigner toujours la même adresse IP a une VM donnée

Il est possible de demander au dnsmasq utilisé par libvirtd d'assigner toujours la même adresse IP a une VM donnée.

Pour ce faire, il faut éditer le réseau utilisé (dans mon cas “default”) :

  • # virsh net-edit default
  • dans <network><ip><dhcp> , ajouter une ligne pour chaque hote ressemblant à :
    <host mac='52:54:00:83:a2:cf' name='debianlive' ip='192.168.122.10' />

    ou vous l'aurez compris, il faut remplacer l'adresse MAC par celle de votre VM, mettre le nom que vous souhaitez, et une adresse IP appartenant au range défini

Magie, en activant ceci, vous venez aussi d'activer le fonctionnement du DNS : n'importe quelle VM pourra maintenant résoudre le nom “debianlive”

Vous croyez avoir fini ? que nenni : il faut ensuite redémarrer le réseau (et donc couper le réseau de toutes les VMs :'( ) de libvirt en utilisant les commandes suivantes :

# virsh net-destroy default
# virsh net-start default

Exemple de fichier de configuration reseau complet

<network>
  <name>default</name>
  <uuid>3f52b3a6-fd33-a46a-7d15-67c917fa9cc2</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0' />
  <domain name='kvm.vm'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <tftp root='/mnt/data/tftpboot' />
    <dhcp>
      <range start='192.168.122.100' end='192.168.122.254' />
      <host mac='52:54:00:83:a2:cf' name='debianlive' ip='192.168.122.10' />
      <host mac='52:54:00:e9:94:16' name='debianunstable64' ip='192.168.122.11' />
      <host mac='52:54:00:ef:10:8e' name='xivo' ip='192.168.122.22' />
      <bootp file='pxelinux.0' />
    </dhcp>
  </ip>
</network>
sysadmin/tips/libvirt.1423826449.txt.gz · Dernière modification: 2015/02/13 12:20 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0