KVM (Kernel-based Virtual Machine) est une technologie de virtualisation Open Source intégrée à Linux. Avec KVM, vous pouvez transformer un serveur ou une station de travail en hyperviseur, c’est-à-dire en une machine hôte qui permet d’exécuter plusieurs environnements virtuels isolés appelés « machines virtuelles » ou « systèmes invités ». Cet article décrit pas à pas l’installation d’un hyperviseur KVM sous Rocky Linux 8.
- La procédure décrite ici s’effectue sur une station de travail graphique. Tous les composants de l’hyperviseur se situent sur une seule et même machine.
- Cette configuration fonctionnera pareillement sur un système serveur dépourvu d’interface graphique, à quelques menus détails près. La principale différence, c’est que le gestionnaire de machines virtuelles (Virtual Machine Manager) sera installé sur un poste de travail ou un portable, et qu’il se connectera à distance à l’hyperviseur.
- En règle générale, la virtualisation sur les postes de travail Linux est basée sur l’application VirtualBox maintenue par la société Oracle. Le passage à KVM apporte un gain de performances significatif et vous affranchit de toute une série de problèmes techniques inhérents à VirtualBox.
- En contrepartie, une solution basée sur KVM sera moins intuitive à manipuler, mais c’est probablement juste une question d’habitude.
Prérequis
Vérifiez si le processeur supporte la virtualisation matérielle :
# grep -E 'svm|vmx' /proc/cpuinfo flags : ... vmx ...
Alternativement :
# lscpu | grep Virtual
Virtualization: VT-x
Installation
KVM et les outils correspondants sont fournis par les dépôts officiels de la distribution :
# dnf install -y qemu-kvm libvirt virt-install bridge-utils
Mise en service
Vérifiez si les modules KVM sont chargés :
# lsmod | grep kvm
kvm_intel 339968 0
kvm 905216 1 kvm_intel
...
Lancez les services libvirtd
et libvirt-guests
:
# systemctl enable libvirtd --now # systemctl enable libvirt-guests --now
Le service libvirt-guests
gère le redémarrage automatique des machines virtuelles en cas de redémarrage de l’hyperviseur.
Configuration d’un bridge
Dans la configuration par défaut, les machines virtuelles sont associées au réseau virtuel 192.168.122.0/24
. Elles peuvent communiquer entre elles et accéder au monde extérieur. En revanche, la configuration NAT (Network Address Translation) ne permet pas d’accéder à ces machines depuis l’extérieur. La solution consiste ici à mettre en place un pont réseau (bridge) qui permet d’intégrer la ou les machines virtuelles au réseau de l’hyperviseur.
Affichez la configuration réseau et notez les paramètres :
# ip --brief addr show
Lancez NetworkManager TUI :
# LANG=en_US.UTF-8 && nmtui
Configurez le bridge br0
. Voici à quoi cela ressemble sur ma station de travail :
- Sélectionnez
Edit a connection
. Add
>Bridge
>Create
Profile name
:BRIDGE
Device
:br0
Bridge Slaves
>Add
Slave connection
>Ethernet
>Create
Profile name
:LAN
Device
:enp1s0
- Confirmez par
OK
.
- Décochez
Enable STP (Spanning Tree Protocol)
. - Passez
IPv6 CONFIGURATION
deAutomatic
àIgnore
. - Confirmez par
OK
. - Revenez à la fenêtre principale.
- Sélectionnez
Activate a connection
. - Les connexions doivent être actives (
*
). - Revenez à la fenêtre principale.
- Quittez NetworkManager TUI.
Vérifiez la configuration du bridge :
# ip --brief addr show
Si l’interface br0
dispose bien de sa propre adresse IP, on peut retourner dans NetworkManagerTUI et supprimer toutes les autres connexions comme Wired connection 1
, System eth0
ou virbr0
.
Virtual Machine Manager
Pour installer des machines virtuelles et interagir avec elles, vous avez le choix. Je vous conseille d’emblée de vous simplifier la vie en utilisant Virtual Machine Manager (virt-manager
), une interface graphique relativement simple à manipuler. Le paquet correspondant est également fourni par les dépôts officiels de la distribution.
Si vous faites tourner KVM sur une station de travail graphique, ajoutez votre utilisateur au groupe libvirt
pour éviter les demandes d’authentification à répétition :
# usermod -aG libvirt kikinovak
En contrepartie, si votre hyperviseur est installé sur un serveur distant et que vous souhaitez uniquement le piloter à distance, installez Virtual Machine Manager sans toute la partie hyperviseur comme ceci :
# dnf install --setopt=install_weak_deps=false virt-manager
Installer une première machine virtuelle
Pour nous familiariser avec Virtual Machine Manager, nous allons installer une première machine virtuelle Rocky Linux 8. Connectez-vous au gestionnaire de machines virtuelles si ce n’est déjà fait :
Dans la configuration par défaut, les images ISO des supports d’installation et des machines virtuelles sont rangées dans /var/lib/libvirt/images
:
# cd /var/lib/libvirt/images/ # wget -c \ http://dl.rockylinux.org/pub/rocky/8.7/isos/x86_64/Rocky-8.7-x86_64-boot.iso
Ce n’est pas une mauvaise idée de vérifier le contexte SELinux de votre image ISO. Cela vous évite de vous arracher les cheveux face à des dysfonctionnements inexplicables :
# ls -Z Rocky-8.7-x86_64-boot.iso
system_u:object_r:virt_content_t:s0 Rocky-8.7-x86_64-boot.iso
- Mettez l’hyperviseur en surbrillance : QEMU/KVM.
- Fichier > Nouvelle machine virtuelle.
- Sélectionnez Média d’installation local.
- Cliquez sur Parcourir et actualisez la liste des volumes.
- Sélectionnez votre fichier ISO.
- Pour commencer, gardez la quantité de RAM et le nombre de cœurs CPU alloués par l’hyperviseur.
- De même, confirmez la taille par défaut pour le disque.
- Nommez votre VM :
Rocky-Linux-8.7
. - Cochez Personnaliser la configuration avant l’installation.
- Sélection du réseau : Bridge device >
br0
. - Cliquez sur Terminer.
Le gestionnaire de machines virtuelles affiche un récapitulatif de la configuration :
Cliquez sur Commencer l’installation et patientez quelques secondes :
À partir de là, suivez la procédure habituelle pour installer Rocky Linux.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
1 commentaire
Pierre · 7 février 2024 à 10 h 09 min
Merci beaucoup pour cette explication!