💻 Virtualisation — hyperviseurs et cycle de vie des VMs

Bloc B2 Module M2.2 Séance 1 / C2.2.5 3h30 BTS SIO SISR
FormationBTS SIO option SISR — IRIS Mediaschool
BlocB2 — Administration Systèmes & Réseaux
ModuleM2.2 — Services réseau et systèmes
CompétenceB2.2
Durée3h30

Introduction (10 min)

En février 2023, l'attaque ESXiArgs a compromis plus de 3 000 hyperviseurs VMware ESXi en 48 heures via la vulnérabilité CVE-2021-21974 (OpenSLP). Les attaquants ont chiffré des machines virtuelles et, dans de nombreux cas, les sauvegardes elles-mêmes, montrant qu'une mauvaise architecture ou une mauvaise isolation des sauvegardes expose l'ensemble d'une PME.

Pour InnovatTech, un hyperviseur vulnérable ou mal configuré peut signifier une interruption majeure de service et une perte de données irréversible. Cette séance vous donnera les connaissances pour choisir, administrer et protéger des hyperviseurs et des machines virtuelles.

🎯 Objectifs de la séance

  • Expliquer la différence entre hyperviseur Type 1 (bare-metal) et Type 2 (hosted) et choisir une solution adaptée à une PME.
  • Créer, démarrer, arrêter, snapshotter et cloner des VM avec Proxmox (commande qm) en comprenant les effets sur le stockage.
  • Reconnaître les risques liés aux snapshots et au provisionnement de ressources (thin/thick, balloon, CPU pinning).

1. Hyperviseurs : Type 1 vs Type 2 (50 min)

Un hyperviseur Type 1 (bare-metal) s'installe directement sur le matériel : il fournit l'environnement d'exécution des machines virtuelles sans couche OS hôte intermédiaire. Exemples : VMware ESXi, Proxmox VE (KVM/QEMU + gestion), Microsoft Hyper-V (rôle bare-metal). Les hyperviseurs Type 1 sont conçus pour la production et offrent une surface d'administration réduite (moins de composants à patcher), de meilleures performances et une meilleure isolation matérielle.

Un hyperviseur Type 2 (hosted) s'installe comme une application sur un système d'exploitation hôte : VirtualBox, VMware Workstation. Ils sont pratiques pour le poste de travail et le développement, mais ne conviennent pas à la production en entreprise en raison de la dépendance à l'OS hôte et des performances moindres.

Exemples d'usage

ContexteSolution recommandéeType
PME / DatacenterProxmox VE, VMware ESXi, Hyper-V ServerType 1
Ordinateur personnel / testsVirtualBox, VMware WorkstationType 2

Architecture comparée

     +--------------------------------+         +-----------------------------+
     | Serveur physique               |         | Poste de travail            |
     | +--------------------------+   |         | +-------------------------+ |
     | | Hyperviseur Type 1       |   |         | | Host OS (Linux/Windows) | |
     | | (ESXi / Proxmox / HV)    |   |         | |  + VirtualBox / Workst. | |
     | |  - VM A (Linux)          |   |         | |  - VM X                 | |
     | |  - VM B (Windows)        |   |         | +-------------------------+ |
     | +--------------------------+   |         +-----------------------------+
     +--------------------------------+
         TYPE 1 : bare-metal                       TYPE 2 : hosted
💡 Proxmox VE — cas hybride

Proxmox VE est une distribution Debian enrichie (pve) qui fonctionne comme un hyperviseur Type 1 (installation minimale, gestionnaire pve). Il combine QEMU/KVM pour la virtualisation matérielle et LXC pour les conteneurs, ce qui en fait une solution polyvalente pour les PME.

⚠️ Sécurité et mises à jour

Privilégiez un hyperviseur Type 1 pour la production et appliquez une politique de mise à jour régulière et une séparation des sauvegardes (stockage hors-site / air-gapped) pour limiter l'impact d'un ransomware (cf. ESXiArgs).

2. Cycle de vie d'une VM et commandes Proxmox (qm) (60 min)

La gestion journalière d'une VM passe par : création, configuration, démarrage, arrêt (gracieux ou forcé), snapshot, clone, import/export et suppression. Proxmox expose l'outil en ligne de commande qm pour les VM QEMU/KVM.

Création

# Exemple de création (disque 32 GiB, thin provisioning LVM) :
qm create 100 --name debian-dev --cores 2 --memory 2048 --scsi0 local-lvm:32

Cette commande crée le fichier de configuration /etc/pve/qemu-server/100.conf et alloue (sur LVM-Thin) un volume logique thin de 32 GiB. Sur un stockage thin, l'espace utilisé initialement est faible et augmente au besoin.

Démarrer / Arrêter / État

qm start 100
qm status 100    # affiche l'état : running / stopped
qm shutdown 100  # arrêt gracieux (ACPI / QEMU guest agent)
qm stop 100      # arrêt forcé (kill du processus QEMU)
⚠️ shutdown vs stop

qm shutdown tente d'informer le système invité (requiert ACPI ou guest-agent pour être parfaitement propre). qm stop est un arrêt brutal équivalent à couper l'alimentation — à éviter en production si possible.

Snapshots

qm snapshot 100 snap-avant-maj --description "avant upgrade"
qm listsnapshot 100           # liste les snapshots existants
qm rollback 100 snap-avant-maj
qm delsnapshot 100 snap-ancien

Un snapshot capture l'état disque (et mémoire selon le mode) de la VM. Sur LVM-Thin, il s'agit d'un snapshot de volume. Attention : les snapshots s'empilent et croissent avec les écritures — ils peuvent remplir rapidement le datastore si on les laisse accumuler (disque plein → VM freeze).

💡 Bonne pratique snapshot

Un snapshot est un outil puissant mais temporaire — planifiez leur suppression après utilisation pour éviter la saturation du stockage. N'utilisez jamais les snapshots comme stratégie de sauvegarde.

Clonage

qm clone 100 200 --name debian-prod --full 1
ModeDescriptionAvantage / Inconvénient
Clone plein (--full 1)Copie complète des disquesIndépendant, mais plus long et plus coûteux en espace
Clone lié (linked clone)Référence des fichiers partagésÉconomise de l'espace mais dépend de l'image parent

Import / Export OVA

# Importer un disque depuis une archive OVA
qm importdisk 100 debian.ova local-lvm

# Puis attacher le disque importé à la VM 100
qm set 100 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-100-disk-0

qm importdisk extrait l'image et la place sur le stockage choisi ; il reste ensuite à l'attacher dans la configuration VM via qm set.

Ressources et provisionnement

Thin provisioning vs Thick provisioning

ModePrincipeCas d'usage
Thin (LVM-thin, qcow2 sparse)Allocation dynamique — l'espace réel est alloué au fur et à mesureConsolidation, labs, déploiements nombreux — attention au sur-allocation (overcommit)
Thick (raw préalloué)Allocation complète dès la créationBases de données, applications I/O intensives — prévisible en performance

CPU Pinning

Le pinning permet d'affecter des cœurs physiques dédiés à une VM pour réduire la latence et la contention. Dans Proxmox, le pinning se réalise au niveau hôte (cgroups/cpuset) ou via configuration avancée de QEMU. L'opération doit être documentée et mesurée en production.

Balloon driver (gestion dynamique de la RAM)

Le guest-agent/virtio_balloon permet au noyau hôte de récupérer de la mémoire inutilisée côté invité, permettant l'overcommit mémoire. Vérification côté invité :

lsmod | grep virtio_balloon || dmesg | grep -i balloon

🔬 Travaux Pratiques (70–80 min)

Contexte

Vous êtes technicien chez InnovatTech SARL. Le responsable infrastructure vous demande de préparer une VM Debian 12 pour développement, de prendre un snapshot propre, puis de simuler une modification et de restaurer l'état antérieur. Vous travaillez sur l'hyperviseur proxmox01 (192.168.10.20) avec accès root SSH ou via l'interface web Proxmox.

Objectif

Créer la VM debian-dev (2 vCPU, 2 GiB RAM, 20 GiB LVM-Thin), installer Debian 12, réaliser un snapshot nommé clean-install, appliquer une modification (paquet ou fichier), puis rollback et vérifier la restauration.

Prérequis techniques

  • Accès SSH root sur proxmox01 (ou accès Web UI)
  • ISO Debian 12 uploadée sur le stockage local:iso/debian-12.iso
  • Stockage local-lvm configuré en LVM-Thin

Étape 1 — Création de la VM (ID 100)

# Création avec disque 20 GiB thin
qm create 100 --name debian-dev --cores 2 --memory 2048 \
  --net0 virtio,bridge=vmbr0 --scsi0 local-lvm:20

# Attacher l'ISO d'installation
qm set 100 --ide2 local:iso/debian-12.iso,media=cdrom

# Démarrer la VM pour installation
qm start 100

Vérification attendue :

cat /etc/pve/qemu-server/100.conf
# name: debian-dev
# memory: 2048
# cores: 2
# scsi0: local-lvm:vm-100-disk-0,size=20G

Étape 2 — Installation Debian 12

Via la console Proxmox (Web UI) : suivre les étapes classiques d'installation (partitionnement, réseau DHCP sur VLAN Users si présent, création utilisateur admin).

Étape 3 — Snapshot propre après installation

qm shutdown 100            # arrêt propre du système invité
qm snapshot 100 clean-install --description "clean install"
qm listsnapshot 100
# Vérifiez la présence de 'clean-install'

Étape 4 — Simuler une modification

qm start 100
# Depuis la VM ou via SSH :
ssh root@<IP_debian-dev> 'apt update && apt install -y nginx'
# ou créer un fichier de test :
ssh root@<IP_debian-dev> 'touch /root/rollback-test'

Étape 5 — Rollback sur le snapshot

qm shutdown 100
qm rollback 100 clean-install
qm start 100

Vérification : le paquet nginx ne doit plus être installé, ou le fichier /root/rollback-test doit avoir disparu.

Livrable attendu

Copie du fichier /etc/pve/qemu-server/100.conf (ou capture écran) et rapport d'une page décrivant les commandes lancées, le résultat attendu et le résultat observé après le rollback.

Critères de réussite

  • ✅ La VM 100 existe et est configurée avec 2 vCPU / 2048 MiB RAM / disque 20 GiB thin.
  • ✅ Le snapshot clean-install est présent (qm listsnapshot 100).
  • ✅ Après le rollback, la modification simulée a disparu et la VM retrouve l'état initial.

📌 Synthèse de séance (10 min)

Cette séance a montré que le choix d'un hyperviseur influe sur la sécurité, la maintenance et les performances : les Type 1 sont recommandés en production tandis que les Type 2 restent des outils de poste. Vous savez maintenant utiliser qm pour créer, démarrer, arrêter, snapshotter et cloner des VM, et vous comprenez les risques opérationnels (snapshots croissants, thin provisioning).

💡 À retenir

Un snapshot est un outil puissant mais temporaire — il doit être géré et nettoyé pour éviter la saturation du stockage. qm shutdown est toujours préférable à qm stop pour la santé des données du système invité.

Question de vérification : Expliquez en une phrase la différence essentielle entre qm shutdown et qm stop.

Séance suivante : Réseaux virtuels, stockage et sauvegardes dans Proxmox — configuration VLAN, datastores NFS/iSCSI, sauvegarde avec vzdump et restauration (qmrestore).

🎮 Quiz — Testez vos connaissances

  1. Q1 (QCM) — Quelle est la principale différence entre un hyperviseur Type 1 et un hyperviseur Type 2 ?
    • A) Le Type 1 est installé sur un OS hôte ; le Type 2 directement sur le matériel
    • B) Le Type 1 s'installe directement sur le matériel (bare-metal) ; le Type 2 sur un OS hôte
    • C) Le Type 1 utilise des conteneurs LXC ; le Type 2 utilise des VM QEMU
    • D) Il n'existe aucune différence de performance entre les deux types
  2. Q2 (QCM) — Quelle commande Proxmox crée la VM debian-dev avec 2 cœurs, 2 GiB de RAM et un disque 32 GiB ?
    • A) qm create 100 --name debian-dev --cpu 2 --ram 2048 --disk 32
    • B) qm create 100 --name debian-dev --cores 2 --memory 2048 --scsi0 local-lvm:32
    • C) qm new 100 --name debian-dev --cores 2 --memory 2048
    • D) qm start 100 --cores 2 --memory 2048 --scsi0 local-lvm:32
  3. Q3 (QCM) — Quelle est la différence entre qm shutdown et qm stop ?
    • A) shutdown copie les données de la VM ; stop les supprime
    • B) shutdown restaure un snapshot ; stop exécute une sauvegarde
    • C) shutdown envoie un signal d'arrêt gracieux (ACPI) ; stop tue le processus QEMU immédiatement
    • D) Les deux commandes sont strictement identiques
  4. Q4 (QCM) — Quel risque opérationnel présentent les snapshots empilés non gérés dans Proxmox ?
    • A) Ils améliorent les performances I/O des VM
    • B) Ils peuvent saturer le datastore et provoquer le gel des VM (VM freeze)
    • C) Ils effacent automatiquement les données des VM après 30 jours
    • D) Ils augmentent la consommation CPU mais n'impactent pas le stockage
  5. Q5 (QCM) — Qu'est-ce que le thin provisioning (allocation dynamique) appliqué au stockage VM ?
    • A) Allouer immédiatement l'intégralité de l'espace disque déclaré à la création de la VM
    • B) Affecter des cœurs CPU physiques dédiés à une VM spécifique
    • C) Allouer l'espace disque dynamiquement au fur et à mesure que la VM l'utilise, permettant le sur-engagement du stockage
    • D) Compresser automatiquement les données stockées sur le volume de la VM
📝 Afficher les corrections
  1. B — Le Type 1 s'installe directement sur le matériel (bare-metal) — L'hyperviseur Type 1 (ESXi, Proxmox, Hyper-V Server) est le seul niveau logiciel entre le matériel et les VM, offrant de meilleures performances et isolation. Le Type 2 (VirtualBox, Workstation) tourne sur un OS hôte.
  2. B — qm create 100 --name debian-dev --cores 2 --memory 2048 --scsi0 local-lvm:32 — Les options correctes sont --cores (pas --cpu), --memory en MiB (pas --ram), et --scsi0 stockage:taille pour le disque.
  3. C — shutdown envoie un signal d'arrêt gracieux (ACPI) ; stop tue le processus QEMU immédiatementqm shutdown laisse le système invité effectuer ses procédures d'arrêt propres (sync disques, services) ; qm stop est l'équivalent d'une coupure d'alimentation brutale.
  4. B — Ils peuvent saturer le datastore et provoquer le gel des VM — Les snapshots captent les écritures différentielles et grossissent au fil du temps. Un datastore plein entraîne un VM freeze car les VM QEMU ne peuvent plus écrire sur leur disque virtuel.
  5. C — Allocation dynamique au fur et à mesure — En thin provisioning (LVM-thin ou qcow2 sparse), l'espace n'est consommé sur le stockage physique que lorsque la VM écrit réellement des données. Cela permet d'allouer nominalement plus d'espace que le disque physique n'en contient (overcommit).
← C2.2.4 Séance 2 — Postfix et DKIM C2.2.5 Séance 2 — Réseaux virtuels et stockage →