Dawan Proxmox VE — TSSR

Chapitre 2 — Machines Virtuelles KVM

1. VM KVM versus conteneur LXC — choisir le bon outil

1.1 Deux philosophies de virtualisation : conteneur et machine virtuelle

Proxmox VE propose deux façons radicalement différentes d'exécuter un système : le conteneur LXC, abordé au chapitre précédent, et la machine virtuelle KVM, qui fait l'objet de ce chapitre. Un conteneur partage le noyau Linux de l'hôte Proxmox — il est rapide à démarrer, léger en mémoire, mais limité aux systèmes Linux et exposé à certains risques d'isolation.

Une machine virtuelle KVM, elle, possède son propre noyau, son propre BIOS ou UEFI, son propre espace mémoire entièrement isolé. Le noyau hôte n'est pas partagé : la VM ne sait même pas qu'elle tourne sur Proxmox.

Comparaison LXC et KVM

Cette isolation totale a un coût — quelques centaines de mégaoctets de RAM minimum, un démarrage qui prend quelques secondes, et une couche d'émulation matérielle. Mais elle ouvre des possibilités qu'un conteneur ne peut pas offrir : faire tourner Windows, un BSD, un kernel personnalisé. Ou des services qui s'attendent à trouver un vrai matériel sous leurs pieds : Home Assistant OS, pfSense, TrueNAS.

Le schéma ci-dessus résume cette opposition. À gauche, plusieurs conteneurs LXC empilés sur un seul noyau partagé. À droite, plusieurs VMs KVM totalement indépendantes, chacune avec son propre noyau, émulé par QEMU et accéléré par KVM.

En résumé, le conteneur mise sur la légèreté et le partage ; la VM, sur l'isolation et l'indépendance totale vis-à-vis de l'hôte. C'est ce compromis qui guide le choix entre les deux pour chaque nouveau service à déployer.

Qui fait quoi dans la chaîne Proxmox VE → QEMU → KVM : Proxmox orchestre, QEMU émule le matériel, KVM accélère via les extensions de virtualisation du CPU

Le tableau ci-dessous met les deux technologies face à face, sur les critères qui décident réellement du choix. C'est lui qu'on garde en tête au moment de créer une nouvelle ressource :

Critère LXC (conteneur) KVM (machine virtuelle)
Noyau Partagé avec l'hôte Noyau propre à la VM
Démarrage < 1 seconde Plusieurs dizaines de secondes
Surcoût mémoire Très faible (pas de noyau invité) ~200 à 500 Mo pour l'OS invité
Systèmes supportés Linux uniquement Linux, Windows, BSD, appliances…
Isolement Namespaces + cgroups (noyau) Virtualisation matérielle (KVM/QEMU)
Modules noyau propres Non (noyau partagé) Oui (noyau dédié)
Migration à chaud Non (redémarrage requis) Oui
Cas d'usage typique Services Linux légers (web, DNS, proxy, supervision) Windows, appliances réseau, isolation forte, noyau spécifique

1.2 Quand utiliser une VM KVM

Utilisez une VM KVM lorsque vous avez besoin de :

  • Faire tourner Windows (Server ou Desktop) — impossible dans un LXC
  • Exécuter Docker de façon propre, avec son propre noyau
  • Déployer une appliance réseau : pfSense, OPNsense, VyOS — ces systèmes sont compilés pour un matériel spécifique
  • Tester des noyaux expérimentaux ou des distributions alternatives sans risque pour l'hôte
  • Obtenir une isolation maximale pour un service sensible. Un attaquant qui compromet une VM ne peut pas remonter vers l'hôte sans exploiter une vulnérabilité de l'hyperviseur. C'est autrement plus difficile que d'exploiter un espace de noms Linux

En résumé : si ce que vous installez a besoin d'un vrai système d'exploitation indépendant, choisissez une VM KVM. Pour tout ce qui est Linux léger (nginx, MariaDB, Pi-hole, DNS), un LXC reste le bon choix.

La règle pratique à retenir : pour un service Linux standard, sans modules noyau particuliers ni Windows, le conteneur LXC est le bon choix. Pour tout le reste, la VM KVM s'impose. Le choix n'est d'ailleurs jamais exclusif : sur un même nœud, VM et conteneurs cohabitent et partagent les mêmes stockages et les mêmes bridges.

Ils se sauvegardent avec les mêmes outils : vzdump, ou Proxmox Backup Server. Une infrastructure typique mêle donc les deux — des conteneurs pour les petits services Linux, des VM pour Windows, les appliances et tout ce qui exige une isolation forte.

Deux différences pèsent en exploitation et méritent d'être connues dès maintenant. La migration à chaud n'existe que pour les VM : un conteneur se déplace d'un nœud à l'autre en redémarrant. Et une VM utilise la mémoire qu'on lui attribue, plus celle de son propre noyau et de QEMU.

Un conteneur ne consomme que ce que ses processus utilisent réellement. D'où la densité très supérieure des conteneurs sur un même serveur.

À retenir : un conteneur LXC partage le noyau du nœud : léger, rapide, mais Linux seulement. Une VM KVM a son propre noyau et son matériel virtuel : on la choisit pour Windows, un autre noyau, une isolation forte ou une appliance. Pour un service Linux léger, le LXC reste le bon choix.