libvirt

La bibliothèque libvirt est utilisée pour s'interfacer avec différentes technologies de virtualisation. Avant de commencer avec libvirt, il est judicieux de s'assurer que votre matériel prend en charge les extensions de virtualisation pour KVM. Saisissez la commande suivante dans un terminal :

kvm-ok

Un message vous informera si votre processeur prend en charge ou non la virtualisation matérielle.

Sur beaucoup d'ordinateurs équipés de microprocesseurs prenant en charge la virtualisation matérielle assistée, il est nécessaire d'activer une option dans le BIOS afin de pouvoir l'utiliser.

Virtualisation du réseau

There are a few different ways to allow a virtual machine access to the external network. The default virtual network configuration includes bridging and iptables rules implementing usermode networking, which uses the SLIRP protocol. Traffic is NATed through the host interface to the outside network.

To enable external hosts to directly access services on virtual machines a different type of bridge than the default needs to be configured. This allows the virtual interfaces to connect to the outside network through the physical interface, making them appear as normal hosts to the rest of the network.

Installation

Pour installer les paquets nécessaires, saisissez dans un terminal :

sudo apt install qemu-kvm libvirt-bin

Après l'installation de libvirt-bin, l'utilisateur qui doit gérer les machines virtuelles devra être ajouté au groupe libvirtd. Ceci lui donnera les droits d'accès aux options avancés de configuration réseau.

Dans un terminal saisissez :

sudo adduser $USER libvirtd

Si vous avez choisi l'utilisateur courant, vous devrez vous déconnecter, puis vous reconnecter pour que l'appartenance au nouveau groupe soit prise en compte.

In more recent releases (>= Yakkety) the group was renamed to libvirt. Upgraded systems get a new libvirt group with the same gid as the libvirtd group to match that.

Vous êtes maintenant prêt à installer un système d'exploitation Invité. L'installation d'une machine virtuelle suit le même processus que l'installation d'un système d'exploitation directement sur le matériel. Vous avez besoin d'un moyen pour automatiser l'installation ou bien un clavier ainsi qu'un moniteur devront être rattachés à la machine physique.

Dans le cas des machines virtuelles une interface graphique (GUI) est analogue à l'utilisation d'un clavier physique et de la souris. Au lieu d'installer une interface graphique, virt-viewer peut être utilisé pour se connecter à la console d'une machine virtuelle grâce à VNC. Consultez Afficheur de machine virtuelle pour plus d'informations.

There are several ways to automate the Ubuntu installation process, for example using preseeds, kickstart, etc. Refer to the Ubuntu Installation Guide for details.

Yet another way to install an Ubuntu virtual machine is to use uvtool. This application, available as of 14.04, allows you to set up specific VM options, execute custom post-install scripts, etc. For details see Cloud images and uvtool.

Libvirt peut également être configuré avec Xen. Pour plus de détails, voir la page de la communauté Xen Ubuntu référencée ci-dessous.

virt-install

virt-install fait partie du paquet virtinst. Pour l'installer, saisissez dans un terminal :

sudo apt install virtinst

Il y a plusieurs options disponibles pour utiliser virt-install. Par exemple :

sudo virt-install -n web_devel -r 256 \
--disk path=/var/lib/libvirt/images/web_devel.img,bus=virtio,size=4 -c \
ubuntu-16.04-server-i386.iso --network network=default,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole -v
  • -n Web_devel : le nom de la machine virtuelle sera Web_devel dans cet exemple.

  • -r 256: spécifie la quantité de mémoire qu'utilisera la machine virtuelle en mégaoctets.

  • --chemin du disque=/var/lib/libvirt/images/web_devel.img,size=4 : montre le chemin d'accès au disque virtuel qui peut être un fichier, une partition ou un volume logique. Dans cet exemple, un fichier nommé web_devel.img dans le répertoire /var/lib/libvirt/images/, avec une taille de 4 gigaoctets, et utilisant virtio pour le bus disque.

  • -c ubuntu-16.04-server-i386.iso: file to be used as a virtual CDROM. The file can be either an ISO file or the path to the host's CDROM device.

  • --network fournit des détails liés à l'interface réseau de la machine virtuelle. Ici le réseau par défaut est utilisé, et le modèle d'interface est configuré pour virtio.

  • --graphics vnc,listen=0.0.0.0 : exporte la console virtuelle du client en utilisant VNC et sur toutes les interfaces hôte. Habituellement, les serveurs n'ont pas d'interface graphique, alors, un autre ordinateur muni d'une IG sur le réseau local (LAN) peut se connecter avec VNC pour terminer l'installation.

  • --noautoconsole : ne se connectera pas automatiquement à la console de la machine virtuelle.

  • -v : crée un invité totalement virtualisé.

After launching virt-install you can connect to the virtual machine's console either locally using a GUI (if your server has a GUI), or via a remote VNC client from a GUI-based computer.

virt-clone

L'application virt-clonepeut être utilisée pour copier une machine virtuelle vers une autre. Par exemple :

sudo virt-clone -o web_devel -n database_devel -f /path/to/database_devel.img 
  • -o : original virtual machine.

  • -n : nom de la nouvelle machine virtuelle.

  • -f : chemin du fichier, volume logique ou partition utilisé par la nouvelle machine virtuelle.

Vous pouvez également utiliser l'option -d ou --debug pour vous aider à résoudre les problèmes avec virt-clone.

Remplacez Web_devel et database_devel par les noms appropriés des machines virtuelles.

Gestion des machines virtuelles

virsh

Il existe plusieurs utilitaires disponibles pour gérer les machines virtuelles et libvirt. L'application virsh s'utilise en ligne de commande. Quelques exemples :

  • Pour lister les machines virtuelles en cours d'exécution :

    virsh list
    
  • Pour démarrer une machine virtuelle :

    virsh start web_devel
    
  • De la même façon, pour lancer une machine virtuelle au démarrage :

    virsh autostart web_devel
    
  • Redémarrez une machine virtuelle avec :

    virsh reboot web_devel
    
  • L'état des machine virtuelles peut être enregistré dans un fichier pour pouvoir être restauré plus tard. Ce qui suit enregistrera l'état d'une machine virtuelle dans un fichier nommé d'après la date :

    virsh save web_devel web_devel-022708.state
    

    Une fois son état enregistré, une machine virtuelle ne sera plus en cours d'exécution.

  • Une machine virtuelle dont l'état est enregistré peut être restaurée en utilisant :

    virsh restore web_devel-022708.state
    
  • Pour arrêter une machine virtuelle :

    virsh shutdown web_devel
    
  • Un CDROM peut être monté dans une machine virtuelle en saisissant :

    virsh attach-disk web_devel /dev/cdrom /media/cdrom
    

Dans les exemples ci-dessus, remplacez Web_devel par le nom approprié pour la machine virtuelle, et Web_devel-022708.state par un nom de fichier explicite.

If virsh (or other vir* tools) shall connect to something else than the default qemu-kvm/system hipervisor one can find alternatives for the connect option in man virsh or libvirt doc

migration

There are different types of migration available depending on the versions of libvirt and the hipervisor being used. In general those types are:

There are various options to those methods, but the entry point for all of them is virsh migrate. Read the integrated help for more detail.

 virsh migrate --help 

Some useful documentation on constraints and considerations about live migration can be found at the Ubuntu Wiki

Gestionnaire de machine virtuelle

Le paquet virt-manager contient un outil en mode graphique pour gérer les machines virtuelles locales et distantes. Pour installer virt-manager saisissez :

sudo apt install virt-manager

Étant donné que virt-manager exige un environnement contenant une interface graphique (GUI), il est recommandé de l’installer sur un poste de travail ou une machine de test mais pas sur un serveur de production. Pour vous connecter au service locallibvirt tapez :

virt-manager -c qemu:///system

Vous pouvez vous connecter au service libvirt s'exécutant sur un autre hôte en saisissant ce qui suit dans un terminal :

virt-manager -c qemu+ssh://virtnode1.mydomain.com/system

L'exemple ci-dessus suppose que la connectivité SSH entre le système de gestion et virtnode1.mydomain.com a déjà été configurée, et utilise les clés SSH pour l'authentification. Les clés SSH sont nécessaires car libvirt envoie le mot de passe à un autre processus. Pour plus de renseignements sur la configuration de SSH, consultez Serveur OpenSSH.

Afficheur de machine virtuelle

L'application virt-viewer vous permet de vous connecter à une console de la machine virtuelle. virt-viewer nécessite une interface graphique utilisateur (GUI) pour interagir avec la machine virtuelle.

Pour installer virt-viewer, depuis un terminal saisissez :

sudo apt install virt-viewer

Une fois qu'une machine virtuelle est installée et est en exécution vous pouvez vous connectez à la console de la machine virtuelle en utilisant :

virt-viewer web_devel

De même que virt-manager, virt-viewer peut se connecter à un hôte distant en utilisant SSH avec authentification par clé, comme ceci :

virt-viewer -c qemu+ssh://virtnode1.mydomain.com/system web_devel

Assurez-vous de remplacer web_devel par le nom de la machine virtuelle approprié.

If configured to use a bridged network interface you can also setup SSH access to the virtual machine.

Ressources

  • Voir la page d'accueil de KVM pour plus de détails.

  • Pour plus d'informations sur libvirt, consultez la page d'accueil de libvirt

  • The Virtual Machine Manager site has more information on virt-manager development.

  • Vous pouvez aussi passer par le canal IRC #ubuntu-virt sur freenode pour discuter (en anglais) de la technologie de virtualisation sous Ubuntu.

  • Une autre source d'information est la page du Wiki Ubuntu consacrée à KVM.

  • Pour plus d'informations sur Xen, y compris l'utilisation Xen avec libvirt, veuillez voir la page du Wiki Ubuntu sur Xen.