Outils pour utilisateurs

Outils du site


Panneau latéral

Action disabled: revisions
documentation:virtualisation:kvm_qemu

KVM/QEMU

KVM (Kernel-based Virtual Machine) est une solution de virtualisation libre. Cette technologie est intégrée au noyau Linux. Elle a plusieurs avantages :

  • stockage (tout ce que le noyau Linux prend en charge)
  • migration à chaud
  • planification et contrôle des ressources

QEMU est une machine virtuelle (ou émulateur). On peut utiliser ce dernier sans dépendre de l'hyperviseur KVM.

Dans cette page nous allons voir comment utiliser ces deux technologies ensemble par l'intermédiaire de la bibliothèque libvirt.

Dans notre cas, le système hôte est une Debian. Il faudra adapter la partie “Installation” à d'autres distributions.

De plus, on va uniquement s'intéresser à l'architecture x86.

Toutes les manipulations doivent se faire avec un utilisateur privilégié (sudo ou root).

Installation

apt install --no-install-recommends qemu-system-x86 qemu-utils qemu-block-extra

Pour gérer les machines virtuelles, on installe également les paquets liés à libvirt.

J'utilise l'option –no-install-recommends sinon avec la gestion des dépendances, je vais également avoir le paquet virt-manager, et je souhaite en utiliser un autre.
apt install --no-install-recommends libvirt-clients libvirt-daemon-system virtinst libosinfo-bin

Lancement du service

En principe le service libvirtd est actif, pour vérifier son état → systemctl status libvirtd. Si ce n'est pas le cas :

systemctl start libvirtd
systemctl enable libvirtd

La dernière ligne précise, que ce service doit être lancé à chaque démarrage de la machine.

Gestion du réseau

Avant de créer notre première machine virtuelle, il faut activer le réseau :

virsh net-list --all
 Nom       État      Démarrage automatique   Persistent
---------------------------------------------------------
 default   inactif   no                      Oui

Pour changer cet état, virsh net-start default. Pour éviter de devoir taper la commande précédente à chaque fois, on active l'option net-autostartvirsh net-autostart default.

virsh net-list --all
 Nom       État    Démarrage automatique   Persistent
-------------------------------------------------------
 default   actif   Oui                     Oui

On constate, que l'état du réseau à changer.

Création d'une machine virtuelle

Un utilisateur classique est suffisant, ici.

Dans un premier temps, nous allons définir une image disque, d'une taille définie (cela représente en quelque sorte un disque dur physique).

Pour notre essais, nous allons partir sur 20G, et installer la Linux Mint 20.2 1).

fallocate -l 20G linuxmint-20.img

Puis cette image disque doit être dans un format (Qcow) compréhensible par QEMU.

qemu-img create -f qcow2 linuxmint-20.img 20G

Maintenant nous allons créer à proprement parler notre machine virtuelle (on parle de « domaine » dans le jargon libvirt).

Il faut lancer les commandes ci-dessous avec un utilisateur privilégié (root ou précédé de sudo).
virt-install --connect qemu:///system \
    --name linuxmint \
    --virt-type kvm \
    --hvm \
    --ram 2048 \
    --noautoconsole \
    --disk path=linuxmint-20.img,size=20 \
    --network bridge=virbr0 \
    --cdrom linuxmint-20.2-mate-64bit.iso \
    --graphics vnc \
    --os-variant ubuntu20.04

On va détailler les différentes options :

  • –name → nom de la machine virtuelle
  • virt-type → on précise que l'on souhaite utiliser KVM (et pas uniquement QEMU)
  • –connect → précise le système de virtualisation (qemu:, xen:, lxc:, vbox:)
  • –ram → la quantité de mémoire allouée (par défaut c'est 1024, mais il vaut mieux doubler cette valeur)
  • –noautoconsole → évite de lancer virt-viewer, c'est utile si l'on souhaite utiliser un client VNC particulier
  • –graphics vnc → accès à la machine virtuelle par l'intermédiaire d'un client VNC
  • –os-variant → charge des optimisations 2)

Si la commande s'est bien exécutée → virsh list –all. Avec une session VNC, il vaut mieux éditer (à chaud → virsh edit linuxmint) le fichier de configuration de la machine virtuelle pour avoir un clavier AZERTY (fr). On rajoute un attribut keymap au nœud graphics.

Ci dessous les attributs par défaut du nœud graphics :

[...]
    <graphics type='vnc' port='-1' autoport='yes'>
      <listen type='address'/>
    </graphics>
[...]

Après avoir rajouter l'attribut keymap.

[...]
    <graphics type='vnc' port='-1' autoport='yes' keymap='fr'>
      <listen type='address'/>
    </graphics>
[...]

Quand on modifie un paramètre de la machine virtuelle, il est préférable de la relancer.

virsh destroy linuxmint

Cette commande peut endommager la machine virtuelle (dans notre cas, il n'y a rien). Sinon il faut privilégier l'option shutdown.

Pour la lancer :

virsh --connect qemu:///system start linuxmint
1)
Il faut avoir l'image .iso quelque part sur le disque dur.
2)
Linux Mint 20 est basée sur Ubuntu 20.04, osinfo-query os | grep ubuntu.
documentation/virtualisation/kvm_qemu.txt · Dernière modification: le 29-12-2021 à 16h50 de olivier