Installer un hôte de virtualisation QEMU/KVM (Fedora Server 31)

fedora27server-945x400.jpg

Fonctionnement de QEMU/KVM

KVM (Kernel-based Virtual Machine) est une technologie de virtualisation Open Source intégrée à Linux. Avec KVM, vous pouvez transformer Linux en un hyperviseur qui permet à une machine hôte d'exécuter plusieurs environnements virtuels isolés, appelés invités ou machines virtuelles.

KVM convertit le noyau Linux en un hyperviseur de type 1. Pour exécuter des machines virtuelles, tous les hyperviseurs ont besoin de certains composants au niveau du système d'exploitation : gestionnaire de mémoire, planificateur de processus, pile d'entrées/sorties (E/S), pilotes de périphériques, gestionnaire de la sécurité, pile réseau, etc. La technologie KVM comprend tous ces composants, car elle est intégrée au noyau Linux. Chaque machine virtuelle est mise en œuvre en tant que processus Linux standard. Elle est gérée par le planificateur Linux standard et dispose de matériel de virtualisation dédié (carte réseau, carte graphique, un ou plusieurs processeurs, mémoire, disques).

400px-Kernel-based_Virtual_Machine.png

Installation d'un hôte de virtualisation QEMU/KVM (avec Libvirt)
  • Commençons par le commencement, les détails de mon installation Fedora Server :
    Partition Taille Système de fichiers
    /boot/efi 512 MiB EFI Partition
    / 10 GiB XFS
    /datastore [le reste] XFS
  • Installons ensuite les paquets nécessaires à l'installation d'un hôte de virtualisation QEMU-KVM :
    • qemu-kvm : package de base pour installer QEMU/KVM et les dépendances requises.
    • libvirt : l'API de management (utilisée par Virt-Manager)
    • libvirt-python : des bindings Python utiles pour automatiser
    • libguestfs-tools-c : un ensemble d'outils pour manipuler des images de VM (version sans dépendances Perl)
    • virt-install : permet d'installer les VM en ligne de commandes
    • virt-v2v : permet de pouvoir convertir les VM dans des formats différents
    • tuned : un outil qui tweak des paramètres systèmes en fonction de profils
    • cockpit (+ cockpit-machines) : une interface Web de gestion, capable de gérer les VM, le stockage, le réseau...etc. (optionnel)
# Installer les packages nécessaires
dnf install -y qemu-kvm libvirt python-libvirt libguestfs-tools-c virt-install virt-v2v virt-top tuned cockpit cockpit-machines

# Supprimer le dashboard (inutile pour un hôte de virtualisation)
dnf remove -y cockpit-dashboard
  • Activons le service "libvirtd" :
systemctl enable --now libvirtd
  • Par défaut, Libvirt crée un réseau NAT. Ce dernier n'est peut-être pas utile selon les configurations. Il est possible de le supprimer :
virsh net-destroy default

virsh net-undefine default

systemctl restart libvirtd
  • Si vous utilisez Cockpit, quelques étapes sont requises avant de pouvoir l'utiliser :
# Ajouter un règle dans le firewall pour autoriser le service Cockpit (port 9090)
firewall-cmd --add-service=cockpit --permanent
firewall-cmd --reload

# Démarrer le service pour Cockpit
systemctl enable --now cockpit.socket
  • Il convient finalement d'activer tuned afin que le programme tweak votre système afin d'obtenir les meilleurs performances possibles :
# Démarrer le service tuned
systemctl enable --now tuned

# Choisir le profil adapté à la virtualisation
tuned-adm profile virtual-host
  • Une fois l'ensemble de ces opérations réalisées, il est possible d'utiliser Cockpit ou Virt-Manager pour piloter votre hôte de virtualisation :