Aller au contenu
Virtualisation high

Formation KVM/libvirt : cours complet (11 modules) + labs + IaC

18 min de lecture

Logo KVM

KVM (Kernel-based Virtual Machine) est l'hyperviseur de référence sous Linux. Intégré au noyau depuis 2007, il transforme n'importe quel serveur Linux en plateforme de virtualisation performante. Cette formation vous accompagne de la compréhension des concepts jusqu'à l'automatisation avec Terraform.

Contrairement à une documentation classique, cette formation suit une progression pédagogique : chaque module s'appuie sur les précédents, avec des prérequis explicites, des commandes testées et des validations concrètes.

PublicAdministrateurs Linux, DevOps, SRE, développeurs
PrérequisBases Linux, terminal, notions réseau
Durée totale~15 heures (11 modules)
Versionlibvirt 9.x+ (dernière 12.x ; exemples testés sur 10.x, Ubuntu 24.04)
ApprocheThéorie + pratique CLI + labs + troubleshooting

À la fin de cette formation, vous serez capable de :

  • Comprendre l'architecture KVM/QEMU/libvirt et leur interaction
  • Installer KVM proprement sur Ubuntu, Debian, Rocky ou Fedora
  • Créer des VMs avec virsh, virt-install et virt-manager
  • Configurer le réseau (NAT par défaut, bridge pour accès externe)
  • Gérer le stockage (pools, volumes, formats QCOW2)
  • Automatiser l'initialisation avec Cloud-Init
  • Protéger vos VMs (snapshots vs backups, comprendre la différence)
  • Administrer à distance via SSH ou TCP
  • Déployer en Infrastructure as Code avec Terraform
ÉlémentDétail
Prérequis matérielCPU avec virtualisation (Intel VT-x / AMD-V activé dans le BIOS)
Prérequis logicielUbuntu 24.04, Debian 12+ ou Rocky 9+ (bare-metal ou nested virt)
Prérequis connaissancesTerminal Linux de base, notions réseau (IP, DHCP, DNS)
PédagogieCommandes testées avec sorties réelles + validations
LabsExercices pratiques à chaque module
Durée totale~15 heures (1h30 à 2h par module)

Cette formation a été testée sur plusieurs configurations. Voici nos recommandations :

Configuration recommandée pour des performances optimales :

ComposantMinimumRecommandé
CPU4 cœurs avec VT-x/AMD-V8+ cœurs
RAM8 Go16-32 Go
Stockage100 Go HDD256 Go SSD NVMe
OSUbuntu 24.04 / Debian 12 / Rocky 9Ubuntu 24.04 Server

Avantage : Performances natives, pas de limite de virtualisation.

Démonstration rapide : votre première VM en 5 commandes

Section intitulée « Démonstration rapide : votre première VM en 5 commandes »

Voici ce que vous saurez faire après les modules K2 et K5 :

Fenêtre de terminal
# 1. Vérifier que KVM est fonctionnel
$ virsh -c qemu:///system version
Using library: libvirt 10.0.0
Running hypervisor: QEMU 8.2.2
# 2. Lister les réseaux disponibles
$ virsh net-list
Name State Autostart Persistent
--------------------------------------------
default active yes yes
# 3. Créer une VM Ubuntu avec virt-install
$ virt-install --name test-vm --memory 2048 --vcpus 2 \
--disk size=20 --cdrom ubuntu-24.04-live-server.iso \
--network network=default --graphics vnc
Starting install...
# 4. Vérifier que la VM tourne
$ virsh list
Id Name State
-------------------------
1 test-vm running
# 5. Obtenir l'IP de la VM
$ virsh domifaddr test-vm
Name MAC address Protocol Address
-------------------------------------------------------
vnet0 52:54:00:ab:cd:ef ipv4 192.168.122.45/24

Cette séquence fonctionne sur toute installation libvirt correctement configurée. Les modules K2 à K5 vous expliquent chaque étape en détail.

PartieTitreModulesPublic
Partie AComprendreK1Débutant
Partie BInstaller et configurerK2, K3, K4Débutant → Intermédiaire
Partie CCréer et exploiterK5, K6, K7, K8Intermédiaire
Partie DOpérer et automatiserK9, K10, K11Intermédiaire → Avancé

Partie A · Comprendre

Le modèle mental KVM/libvirt

Avant de créer des VMs, comprenez comment KVM, QEMU et libvirt collaborent. Cette base vous évitera bien des confusions.

Commencer par les concepts →

Partie B · Installer

Installation et configuration

Installation propre sur votre distribution, configuration réseau (NAT et bridge), pools de stockage.

Installation →

Partie C · Exploiter

Créer et gérer des VMs

Création de VMs, Cloud-Init, commandes virsh essentielles, snapshots et backups (et pourquoi c'est différent).

Créer une VM →

Partie D · Automatiser

Administration et IaC

Accès distant SSH/TCP, déploiement avec Terraform, troubleshooting.

Terraform + libvirt →

LienConcepts KVM/libvirt
NiveauDébutant
Durée1h

Compétences acquises :

  • Comprendre la relation KVM ↔ QEMU ↔ libvirt
  • Distinguer hyperviseur Type 1 vs Type 2
  • Savoir pourquoi libvirt est une couche d'abstraction

Lab : Aucun (module théorique), schémas et analogies

Pièges couverts : Confusion KVM/QEMU, croire que libvirt est un hyperviseur


LienInstallation
NiveauDébutant
Durée1h30

Compétences acquises :

  • Installer libvirt sur Ubuntu, Debian ou Rocky
  • Vérifier que KVM fonctionne (kvm-ok, /dev/kvm)
  • Configurer les permissions utilisateur

Lab : Installation complète + validation avec virsh version

Pièges couverts :

  • failed to connect to the hypervisor (libvirtd arrêté)
  • Utilisateur non membre du groupe libvirt
  • VT-x/AMD-V désactivé dans le BIOS

LienRéseau NAT vs Bridge
NiveauDébutant → Intermédiaire
Durée2h

Compétences acquises :

  • Comprendre le réseau default (NAT isolé)
  • Créer un bridge pour accès LAN direct
  • Configurer des réseaux isolés ou routés

Lab : Créer br0, attacher une VM, tester connectivité LAN

Pièges couverts :

  • VM non joignable depuis le LAN (NAT par défaut)
  • Interface physique non "libérée" avant bridge
  • Conflit NetworkManager vs systemd-networkd

LienStockage
NiveauDébutant → Intermédiaire
Durée1h30

Compétences acquises :

  • Créer et gérer des pools de stockage
  • Comprendre QCOW2 vs raw (avantages/inconvénients)
  • Redimensionner un volume à chaud

Lab : Créer un pool vms, ajouter un volume, l'attacher à une VM

Pièges couverts :

  • Pool "inactive" après reboot
  • Permission denied (AppArmor/SELinux)
  • Confusion format disque vs format fichier

LienCréer une VM
NiveauIntermédiaire
Durée2h

Compétences acquises :

  • Créer une VM avec virt-install (CLI)
  • Utiliser virt-manager (GUI)
  • Choisir les bonnes options (CPU, mémoire, réseau, disque)

Lab : Créer une VM Ubuntu, installer l'OS, configurer SSH

Pièges couverts :

  • VM qui ne boote pas (ordre de boot)
  • Pas de console graphique (VNC/Spice mal configuré)
  • Performance dégradée (virtio non utilisé)

LienCloud-Init
NiveauIntermédiaire
Durée2h

Compétences acquises :

  • Utiliser des images cloud (Ubuntu, Debian, Rocky)
  • Écrire un user-data YAML (utilisateur, SSH, packages)
  • Configurer le réseau avec network-config

Lab : Déployer une VM cloud-init, SSH sans mot de passe en 2 minutes

Pièges couverts :

  • Cloud-init ne s'exécute pas (machine-id non nettoyé)
  • Clé SSH non injectée (erreur YAML)
  • Mauvais datasource configuré

LienCommandes virsh
NiveauIntermédiaire
Durée1h30

Compétences acquises :

  • Maîtriser les 15 commandes virsh essentielles
  • Gérer le cycle de vie des VMs (start, stop, destroy, undefine)
  • Inspecter et modifier la configuration XML

Lab : Cheatsheet interactif avec exercices

Pièges couverts :

  • destroy ne supprime pas la VM (juste force l'arrêt)
  • undefine sans --remove-all-storage laisse les disques
  • Modification XML non persistée (edit vs define)

LienSnapshots et backups
NiveauIntermédiaire
Durée2h

Compétences acquises :

  • Créer des snapshots internes et externes
  • Comprendre la chaîne QCOW2 (backing files)
  • Différencier snapshot, clone et backup

Lab : Snapshot → modification → revert → consolidation

Pièges couverts :

  • Disque qui grossit (chaîne non consolidée)
  • Snapshot "corrompu" (confusion interne/externe)
  • Croire qu'un snapshot = backup (non !)

LienAccès distant
NiveauIntermédiaire
Durée1h30

Compétences acquises :

  • Administrer libvirt via SSH (qemu+ssh://)
  • Configurer l'accès TCP (avec ou sans TLS)
  • Utiliser virt-manager sur un hôte distant

Lab : Connexion SSH vers un serveur libvirt distant

Pièges couverts :

  • Clé SSH non configurée pour l'utilisateur
  • Pare-feu bloquant le port libvirt
  • TCP sans TLS = non chiffré (risque sécurité)

LienTerraform + libvirt
NiveauAvancé
Durée2h

Compétences acquises :

  • Utiliser le provider dmacvicar/libvirt (v0.9.x)
  • Déployer VMs avec Cloud-Init en IaC
  • Gérer multi-VMs avec count et for_each

Lab : tofu apply → VM opérationnelle avec IP en 30 secondes

Pièges couverts :

  • IP vide dans les outputs (qemu-guest-agent)
  • Permission denied sur le pool (AppArmor)
  • Driver QCOW2 non explicite (VM ne boote pas)
  • Provider 0.8 vs 0.9 (breaking changes)

LienDépannage réseau
NiveauAvancé
Durée1h30

Compétences acquises :

  • Diagnostiquer les pannes réseau courantes (NAT, bridge, DNS, MASQUERADE)
  • Lire et comprendre les logs libvirt
  • Utiliser les outils de debug (virsh dumpxml, journalctl)

Lab : Scénarios d'erreurs à résoudre

Pièges couverts : Tous les pièges des modules précédents, consolidés


  • Installation : Ubuntu, Debian, Rocky, Fedora
  • Réseau : NAT (default), bridge, réseaux isolés
  • Stockage : Pools dir/LVM, volumes QCOW2/raw
  • Création VMs : virt-install, virt-manager, Cloud-Init
  • Opérations : virsh, snapshots, clones, backups
  • Accès distant : SSH, TCP, virt-manager distant
  • IaC : Terraform/OpenTofu avec provider libvirt 0.9.x
  • Troubleshooting : 10 erreurs fréquentes documentées

Tout au long de la formation, vous apprendrez à diagnostiquer et résoudre les problèmes courants :

#SymptômeCause probableModule
1failed to connect to the hypervisorlibvirtd arrêté ou permissionsK2
2VM sans accès réseau externeRéseau NAT par défaut (isolation)K3
3Disque plein après snapshotsChaîne QCOW2 non consolidéeK8
4Cloud-Init ne s'exécute pasmachine-id non nettoyéK6
5IP vide dans Terraform outputqemu-guest-agent manquantK10
6Permission denied sur le poolAppArmor/SELinux mal configuréK10
7Snapshot corrompuConfusion snapshot ≠ backupK8
8VM très lenteTrop de snapshots empilésK8
9Connexion SSH impossibleClé non injectée par Cloud-InitK6
10Bridge ne fonctionne pasInterface physique non libéréeK3

Suivez les modules dans l'ordre, en commençant par les concepts (K1). Prenez le temps de bien comprendre l'architecture avant d'installer.

Premier module : Concepts KVM/libvirt


Mon retour d'expérience, pour ceux qui veulent comprendre

Section intitulée « Mon retour d'expérience, pour ceux qui veulent comprendre »

Jusqu'ici cette page est restée factuelle. La suite est plus personnelle : pourquoi je continue de miser sur KVM plutôt que sur les solutions propriétaires, et les pièges que je vois revenir en production.

Je déploie des machines virtuelles sur KVM/libvirt depuis des années, du homelab jusqu'à des serveurs de production. Dès qu'il y a un Linux sous la main, c'est devenu mon réflexe par défaut.

Sans KVMAvec KVM
Licences VMware coûteuses, incertitude post-BroadcomGratuit, GPL, intégré au noyau
Dépendance à un éditeurStack 100% open source et standard
Outillage propriétairevirsh, Terraform, Ansible, API libvirt

Le rachat de VMware par Broadcom et l'envolée des licences ont accéléré une bascule que j'observe partout : les équipes cherchent une alternative libre et pérenne. KVM, intégré au noyau Linux depuis 2007 et moteur de Proxmox comme d'OpenStack, est la réponse la plus mûre.

  • L'IaC avant les clics : je pilote KVM en ligne de commande et en Terraform, pas seulement dans virt-manager. Une infra qui compte se script et se versionne.
  • Cloud-Init systématique : une VM se construit en quelques secondes, jamais à la main. Les VM montées au clic sont une dette.
  • Snapshot n'est pas backup : je martèle la distinction, parce que c'est l'erreur qui coûte le plus cher.
  • QCOW2 par défaut : thin provisioning et snapshots natifs, sauf besoin de performance brute (raw).
  • Le bridge quand il faut de la vraie connectivité : le NAT par défaut suffit pour tester, pas pour exposer un service.
  • Empiler les snapshots : j'ai vu des disques exploser et des VM ramper parce que personne ne consolidait la chaîne QCOW2. Un snapshot est temporaire, point.
  • Confondre snapshot et sauvegarde : le jour où le stockage lâche, les snapshots partent avec.
  • Tout faire dans virt-manager : ça ne se reproduit pas, ça ne se versionne pas, ça ne s'automatise pas.
  • Oublier le qemu-guest-agent : sans lui, pas d'IP propre, pas d'arrêt gracieux, et un output Terraform vide.
  • Négliger le BIOS/UEFI : la moitié des « KVM ne marche pas » sont une virtualisation désactivée dans le firmware.

Soyons clairs sur le positionnement. KVM/libvirt est la brique brute : maximale en contrôle et en scriptabilité, mais sans interface clé en main. Proxmox VE est KVM emballé dans une interface web et du clustering, parfait quand on veut une console sans tout scripter (voir la formation Proxmox). VMware reste puissant mais payant et incertain depuis Broadcom. VirtualBox est un outil de poste de travail, pas un hyperviseur de serveur.

Mon conseil : apprenez KVM/libvirt d'abord, c'est le socle qu'on retrouve sous Proxmox comme sous OpenStack, puis montez sur Proxmox si vous voulez l'interface.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn