Comment installer et configurer KVM sur Ubuntu

Installation et configuration de KVM sur Ubuntu 18.04 / 20.04 / 22.04

KVM (Kernel-based Virtual Machine) est une technologie de virtualisation open source qui permet de créer et d’exécuter des machines virtuelles sur Linux. KVM nécessite le support de la virtualisation matérielle, qui est disponible sur la plupart des CPU récents.

Dans ce guide complet, nous allons voir comment installer et configurer KVM sur Ubuntu 20.04/22.04. Nous allons passer par les étapes suivantes :

  • Installer les paquets requis
  • Vérifier le support matériel de la virtualisation
  • Charger les modules kernel KVM
  • Configurer un groupe d’utilisateurs KVM
  • Créer une machine virtuelle KVM en ligne de commande
  • Créer une machine virtuelle KVM avec Virt Manager (interface graphique)
  • Gérer les machines virtuelles KVM
  • Optimisations et bonnes pratiques

A la fin de ce guide, vous aurez KVM installé et configuré, et vous aurez créé des machines virtuelles en ligne de commande et avec l’interface graphique. Commençons !

Prérequis

Avant d’installer KVM, voyons les prérequis :

  • Système d’exploitation Ubuntu 20.04/22.04
  • Accès administrateur (root) au système
  • Support de la virtualisation matérielle Intel VT-x ou AMD-V activé dans le BIOS
  • Au moins 2 Go de RAM (4 Go recommandés)

Pour vérifier que votre CPU supporte la virtualisation matérielle, exécutez cette commande :

$ egrep -c '(vmx|svm)' /proc/cpuinfo

Si le résultat est 1 ou plus, votre CPU supporte la virtualisation matérielle.

Vous devez également vous assurer que la virtualisation est activée dans le BIOS. Redémarrez votre système, entrez dans le BIOS et activez Intel VT-x/AMD-V.

Passons maintenant à l’installation de KVM.

Installer KVM et les autres paquets requis

Nous devons installer quelques paquets pour utiliser KVM. Exécutez ces commandes pour installer KVM et d’autres utilitaires nécessaires :

$ sudo apt update
$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

Cela installe les principaux paquets :

  • qemu-kvm – Hyperviseur KVM et émulateur de processeur
  • libvirt-daemon-system – Daemon principal qui gère les machines virtuelles et l’hyperviseur
  • libvirt-clients – Outils clients pour interagir avec libvirt
  • bridge-utils – Requis pour créer un pont réseau
  • virt-manager – Interface graphique pour gérer les machines virtuelles (optionnel)

Vérifiez l’installation en vérifiant la version de KVM :

$ kvm --version

Le résultat doit afficher la version KVM installée :

QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.28)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

KVM et les utilitaires associés sont maintenant installés. Passons ensuite au chargement des modules kernel requis.

Charger les modules kernel KVM

KVM nécessite que les modules kernel kvm et kvm_intel/kvm_amd soient chargés.

Vérifiez s’ils sont chargés :

$ lsmod | grep kvm

S’ils ne sont pas chargés, exécutez :

$ sudo modprobe kvm
$ sudo modprobe kvm_intel

Cela charge les modules kvm et kvm_intel. Vérifiez qu’ils sont maintenant chargés :

$ lsmod | grep kvm

Le résultat devrait afficher les modules :

kvm_intel             204800  0
kvm                   593920  1 kvm_intel

Les modules KVM sont maintenant chargés et prêts à être utilisés.

Configurer le groupe d’utilisateurs KVM

Pour une meilleure sécurité et un meilleur contrôle d’accès, nous allons créer un groupe KVM dédié et y ajouter des utilisateurs.

Créez un groupe kvm :

$ sudo groupadd kvm

Ajoutez votre utilisateur au groupe kvm :

$ sudo usermod -aG kvm $USER 

Ajoutez également tout autre utilisateur qui a besoin d’accéder à KVM dans le groupe kvm.

Nous pouvons maintenant continuer avec la création des machines virtuelles.

Créer une machine virtuelle KVM (ligne de commande)

Créons une machine virtuelle KVM en utilisant les outils en ligne de commande.

Nous allons effectuer les étapes suivantes :

  • Créer le stockage pour la machine virtuelle
  • Créer un pont réseau virtuel
  • Définir les ressources de la machine virtuelle – coeurs CPU, mémoire, etc
  • Lancer l’installation de la machine virtuelle

Tout d’abord, créez une image disque qui sera utilisée pour le stockage de la machine virtuelle :

$ sudo qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-20.qcow2 10G 

Cela crée une image disque au format qcow2 à l’emplacement /var/lib/libvirt/images/ubuntu-20.qcow2 avec une capacité de 10 Go.

Ensuite, nous devons créer un pont réseau pour que la machine virtuelle puisse se connecter au réseau.

Modifiez /etc/netplan/00-installer-config.yaml et ajoutez un pont réseau :

network:
  version: 2
  renderer: networkd  
  ethernets:
    enp0s3:
      dhcp4: no
    enp0s8:
      dhcp4: yes
        
  bridges:
    br0:
      interfaces: [enp0s3]
      dhcp4: no
      addresses: [192.168.122.1/24]
      gateway4: 192.168.122.1
      nameservers:
         addresses: [8.8.8.8,1.1.1.1]

Cela pont l’interface enp0s3 et lui assigne une adresse IP 192.168.122.1.

Appliquez la configuration :

$ sudo netplan apply

Maintenant, le stockage et la mise en réseau sont prêts. Définissons les ressources de la machine virtuelle à l’aide d’un fichier de définition CLI appelé ubuntu-vm.xml :

$ sudo nano ubuntu-vm.xml

Ajoutez ce contenu :

<domain type='kvm'>
  <name>ubuntu-vm</name>
  <memory unit='GiB'>2</memory>
  <vcpu>2</vcpu>
  <os>
    <type arch='x86_64'>hvm</type>
  </os>
  <devices>
    <disk type='file' device='disk'>
      <source file='/var/lib/libvirt/images/ubuntu-20.qcow2'/>
      <target dev='vda'/>
    </disk>
    <interface type='bridge'>
      <source bridge='br0'/> 
    </interface>
    <graphics type='vnc' listen='0.0.0.0' port='-1'/>
  </devices> 
</domain>

Cela définit un domaine KVM avec :

  • 2 Go de RAM
  • 2 vCPU
  • Disque pointant vers l’image ubuntu-20.qcow2
  • Interface réseau connectée au pont br0
  • Graphiques VNC pour l’accès à distance

Maintenant, lançons l’installation de la machine virtuelle :

$ sudo virt-install --import --name ubuntu-vm --ram 2048 --disk /var/lib/libvirt/images/ubuntu-20.qcow2,size=10 --vcpus 2 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics vnc --noautoconsole --print-xml > ubuntu-vm.xml
$ sudo virsh define ubuntu-vm.xml
$ sudo virsh start ubuntu-vm

Cela va démarrer l’installation d’Ubuntu 20.04 à partir de l’image ISO. Vous pouvez vous connecter à la console VNC pour terminer l’installation.

Une fois l’installation terminée et que la machine virtuelle a démarré, vérifiez qu’elle est en cours d’exécution :

$ sudo virsh list

Le résultat affichera la machine virtuelle en cours d’exécution :

 Id    Name                           State
----------------------------------------------------
 2     ubuntu-vm                      running  

Nous avons créé avec succès une machine virtuelle KVM en utilisant les outils en ligne de commande !

Créer une machine virtuelle KVM (interface graphique)

Nous pouvons également utiliser une interface graphique comme Virt Manager pour gérer les machines virtuelles KVM.

Installez Virt Manager si ce n’est pas déjà fait :

$ sudo apt install virt-manager

Lancez Virt Manager depuis la ligne de commande ou l’environnement de bureau.

Cliquez sur Créer une nouvelle machine virtuelle pour démarrer l’assistant Nouvelle machine virtuelle.

Parcourez l’assistant pour définir les ressources de la machine virtuelle, le stockage, la mise en réseau, etc.

Par exemple, sélectionnez importer un disque existant, entrez le chemin vers l’image qcow2 créée précédemment, par exemple /var/lib/libvirt/images/ubuntu-20.qcow2.

Terminez les étapes restantes, revoyez le résumé et cliquez sur Terminer pour créer la machine virtuelle.

La machine virtuelle devrait maintenant être créée et éteinte. Faites un clic droit dessus et sélectionnez Exécuter pour la démarrer.

Connectez-vous à la console VNC pour terminer l’installation du système d’exploitation.

Nous avons maintenant créé une machine virtuelle KVM en utilisant l’outil graphique virt-manager. Utiliser l’interface graphique peut aider à simplifier la gestion de plusieurs machines virtuelles.

Gérer les machines virtuelles KVM

Maintenant que KVM est installé et les machines virtuelles créées, voyons comment gérer les machines virtuelles.

Lister toutes les machines virtuelles :

$ sudo virsh list --all

Cela liste toutes les machines virtuelles actives et inactives.

Démarrer une machine virtuelle :

$ sudo virsh start ubuntu-vm

Arrêter une machine virtuelle :

$ sudo virsh shutdown ubuntu-vm 

Forcer l’arrêt d’une machine virtuelle :

$ sudo virsh destroy ubuntu-vm

Supprimer une machine virtuelle :

$ sudo virsh undefine ubuntu-vm

Cela supprimera la configuration de la machine virtuelle, mais ne supprimera pas l’image disque.

Suspendre/reprendre une machine virtuelle :

$ sudo virsh suspend ubuntu-vm
$ sudo virsh resume ubuntu-vm

Redémarrer une machine virtuelle :

$ sudo virsh reboot ubuntu-vm

Se connecter à la console VNC :

$ sudo virt-viewer ubuntu-vm

Cela ouvrira une fenêtre VNC pour interagir avec la console graphique de la machine virtuelle.

Statut de la machine virtuelle :

$ sudo virsh domstate ubuntu-vm

Statistiques de la machine virtuelle :

$ sudo virsh domstats ubuntu-vm 

Cela couvre les tâches de gestion de base des machines virtuelles KVM. Vous pouvez consulter les pages de manuel virsh pour plus d’opérations de gestion avancées.

Optimisations et bonnes pratiques

Voici quelques conseils pour optimiser les performances et l’efficacité de KVM :

  • Utilisez des pilotes paravirtualisés (virtio) pour le disque et le réseau. Cela améliore le débit E/S.
  • Utilisez le stockage basé sur LVM. Créez un groupe de volumes pour les images de machines virtuelles pour permettre une allocation flexible.
  • Utilisez des ponts réseau au lieu de NAT pour de meilleures performances réseau.
  • Activez la virtualisation imbriquée si vous souhaitez exécuter des machines virtuelles à l’intérieur de machines virtuelles invitées.
  • Allouez les cœurs CPU / mémoire de manière appropriée en fonction de la charge de travail. Ne pas sur-approvisionner.
  • Prenez régulièrement des instantanés de machines virtuelles avant les changements de configuration importants.
  • Surveillez l’utilisation des ressources des machines virtuelles pour identifier les goulets d’étranglement.
  • Hébergez les machines virtuelles critiques sur des machines avec du stockage/réseau redondant (haute disponibilité).
  • Isolez les types de machines virtuelles en utilisant différents ponts réseau et VLAN.

Suivre les bonnes pratiques permet de s’assurer que votre infrastructure KVM reste sécurisée, stable et évolutive.

Conclusion

Nous avons installé KVM sur Ubuntu 20.04/22.04, créé des machines virtuelles en ligne de commande et avec Virt Manager, et couvert la gestion et l’optimisation de KVM.

KVM fournit une solution de virtualisation open source et économique sur Linux. Avec ses excellentes performances et sa large adoption, c’est un excellent hyperviseur pour exécuter des machines virtuelles Linux invitées.

Nous vous encourageons à explorer davantage les capacités de KVM et à construire des environnements virtualisés robustes. Cela vous permettra de consolider les serveurs, isoler les services et tirer parti des puissantes fonctionnalités de gestion des machines virtuelles.

Laisser un commentaire