Installer un Hyperviseur KVM/libvirt sous Debian

Pour m’amuser et monter en compĂ©tence, j’ai dĂ©cidĂ© de monter mon homelab avec les composants open source suivants : KVM, QEMU et Libvirt le tout sur le systĂšme d’exploitation Debian

Dans un premier temps, qu’est-ce que ces trois composants ?

QEMU ou (Quick Emulator) est un Ă©mulateur de machine, il est capable d’Ă©muler des machines complĂštes (CPU, pĂ©riphĂ©riques, RAM, contrĂŽleurs de disques, cartes rĂ©seaux …)

https://www.qemu.org (GPL v2 Ă  majoriter car multi-licences)

KVM ou (Kernel based virtual machine) est un module du noyau linux qui transforme Linux en hyperviseur, il sert d’interface entre le CPU et la virtualisation.

https://linux-kvm.org/ (GPL v2)

Libvirt est une couche de gestion pour la virtualisation, il permet de gĂ©rer, automatiser et piloter les moteurs de virtualisation QEMU/KVM, il fournit une certaine quantitĂ© d’outils pour faciliter la crĂ©ation et la gestion des ressources liĂ©es Ă  la virtualisation

https://libvirt.org (LGPL v2.1)

Maintenant que nous savons à quoi servent ces composants, il ne nous reste plus qu’à installer tout cela

  • Installer les paquets

    sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst

    • qemu-kvm (moteur QEMU + support KVM)
    • libvirt-daemon-system (Service libvirt)
    • libvirt-clients (Utilitaire virsh)
    • virtinst (Utilitaire de crĂ©ation de VM)

    Une fois les paquets nĂ©cessaires installĂ©s, il faut activer au dĂ©marrage libvirt et le dĂ©marrer, puis donner les droits Ă  votre utilisateur d’exĂ©cuter les utilitaires de libvirt et de communiquer avec l’API.

    • Activer le service libvirtd au dĂ©marrage et le dĂ©marrer immĂ©diatement

      sudo systemctl enable --now libvirtd

      • Donner les permissions Ă  votre utilisateur

      sudo usermod -aG libvirt,kvm $USER

      • Tester la connexion Ă  libvirt via l’utilitaire virsh

      sudo virsh -c qemu:///system list --all

      (Si vous souhaitez utiliser votre compte utilisateur sans sudo, il vous faut vous déconnecter et vous reconnecter afin de charger les groupes libvirt et kvm).

      Afin de ne pas avoir Ă  prĂ©ciser les URI Ă  chaque fois lors de l’utilisation de virsh

      Tu peux dĂ©finir dans une variable d’environnement dans ton .bashrc si tu utilises bash

      export LIBVIRT_DEFAULT_URI="qemu:///system"

      • qemu:///system (SystĂšme)
      • qemu:///session (Session utilisateur)


      qemu:///system lance les VM via le service libvirt systÚme (root) : adapté aux serveurs, avec accÚs complet au réseau (bridge), au stockage partagé et aux ressources machine.
      qemu:///session lance les VM sous ton utilisateur Linux : plus simple pour des tests locaux, mais avec des limitations (réseau, permissions, visibilité).

      Pour vérifier les réseaux et les pools de stockage

      virsh net-list --all

      virsh pool-list -all

      Maintenant que nous avons ce qu’il faut pour crĂ©er des machines virtuelles voici un exemple de crĂ©ation d’une machine virtuelle avec une cloud image de debian prĂ©alablement tĂ©lĂ©chargĂ©e.

      wget https://cdimage.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2

      sudo mv debian-13-generic-amd64.qcow2 /var/lib/libvirt/images/debian13.qcow2

      sudo virt-install \
      --name debian13-demo\
      --memory 2048 \
      --vcpus 2 \
      --cpu host \
      --disk path=/var/lib/libvirt/images/debian13.qcow2,format=qcow2,size=20 \
      --import \
      --os-variant debian13 \
      --network network=default \
      --graphics none \
      --console pty,target_type=serial \

      Il est ensuite possible de se connecter Ă  la machine virtuelle via la console

      virsh console debian13-demo

      Nous voilĂ  avec un environnement de virtualisation prĂȘt, il n’y a plus qu’Ă  provisionner des machines de maniĂšre automatique.

      Laisser un commentaire