Définition
La virtualisation consiste à créer une version logicielle (« virtuelle ») d'une ressource normalement physique : un ordinateur, un système d'exploitation, un disque, un réseau. Une couche d'abstraction s'intercale entre la ressource physique et ceux qui l'utilisent, et permet de la découper, de la partager et de l'isoler.
| Sans virtualisation |
Avec virtualisation |
| Un serveur physique = un système = souvent un seul service |
Un serveur physique héberge de nombreux systèmes isolés |
| Serveurs utilisés à 10-15 % de leurs capacités |
Ressources mutualisées, taux d'utilisation bien plus élevé |
| Ajouter un serveur = acheter, câbler, installer |
Créer une VM ou un conteneur en quelques minutes |
| Panne matérielle = service arrêté jusqu'à réparation |
Le système peut être redémarré ou migré sur un autre hôte |
| Sauvegarde fichier par fichier |
Sauvegarde et restauration d'une machine entière |
Historique rapide
| Période |
Étape |
| Années 1960-1970 |
IBM virtualise ses mainframes (CP-40, CP-67, VM/370) pour partager une machine coûteuse entre plusieurs utilisateurs |
| 1979 |
chroot sous Unix : premier cloisonnement d'un processus dans une arborescence |
| 1999 |
VMware Workstation : virtualisation de l'architecture x86 sur un poste de travail |
| 2000-2004 |
FreeBSD Jails, Solaris Zones : isolation au niveau du système d'exploitation |
| 2003 |
Xen : hyperviseur libre basé sur la paravirtualisation |
| 2005-2006 |
Intel VT-x et AMD-V : le processeur prend en charge la virtualisation |
| 2007 |
KVM intégré au noyau Linux |
| 2008 |
Hyper-V (Windows Server 2008), LXC (conteneurs Linux) |
| 2013 |
Docker popularise les conteneurs applicatifs |
| 2014 |
Kubernetes : orchestration de conteneurs à grande échelle |
| Forme |
Ce qui est virtualisé |
Exemples |
| Serveurs / machines |
Un ordinateur complet (CPU, RAM, disques, réseau) |
Proxmox VE, VMware ESXi, Hyper-V |
| Système d'exploitation (conteneurs) |
L'environnement d'exécution, sur un noyau partagé |
LXC, Docker, Podman |
| Poste de travail (VDI) |
Le bureau de l'utilisateur, exécuté sur un serveur |
Citrix, VMware Horizon, Remote Desktop Services |
| Applications |
Une application isolée du système qui l'exécute |
App-V, Flatpak, publication RemoteApp |
| Réseau |
Commutateurs, réseaux, routage |
VLAN, bridges, SDN, VXLAN |
| Stockage |
Des disques ou des volumes regroupés et redistribués |
RAID, LVM, SAN, Ceph, vSAN |
Les deux formes principales en infrastructure sont la machine virtuelle et le conteneur.
La machine virtuelle
Une machine virtuelle (VM) est un ordinateur complet simulé par un hyperviseur : elle possède son propre processeur virtuel, sa mémoire, ses disques, ses cartes réseau et son propre système d'exploitation (le système « invité »).
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Application │ │ Application │ │ Application │
├──────────────┤ ├──────────────┤ ├──────────────┤
│ OS invité │ │ OS invité │ │ OS invité │
│ (Windows) │ │ (Debian) │ │ (Ubuntu) │
└──────────────┘ └──────────────┘ └──────────────┘
┌────────────────────────────────────────────────┐
│ Hyperviseur │
└────────────────────────────────────────────────┘
┌────────────────────────────────────────────────┐
│ Matériel (CPU, RAM, disques) │
└────────────────────────────────────────────────┘
Techniques de virtualisation des machines
| Technique |
Principe |
Exemple |
| Virtualisation complète (émulation) |
L'hyperviseur intercepte et traduit les instructions sensibles de l'invité, qui n'est pas modifié |
VMware avant 2006 (traduction binaire), QEMU seul |
| Paravirtualisation |
L'invité est modifié pour dialoguer directement avec l'hyperviseur, plus rapide |
Xen historique |
| Assistée par le matériel |
Le processeur (VT-x / AMD-V) isole lui-même les invités : invité non modifié et performances proches du natif |
KVM, ESXi, Hyper-V aujourd'hui |
Aujourd'hui, toutes les solutions combinent la virtualisation assistée par le matériel et des pilotes paravirtualisés dans l'invité (VirtIO, VMware Tools, services d'intégration Hyper-V) pour les disques et le réseau.
Points forts et limites
| ✅ Points forts |
❌ Limites |
| Isolation forte : une VM compromise n'atteint pas les autres |
Chaque VM embarque un OS complet : plusieurs Go de disque et de RAM |
| Tout système d'exploitation (Windows, Linux, BSD…) |
Démarrage en dizaines de secondes |
| Snapshots, sauvegarde et migration de la machine entière |
Un OS de plus à mettre à jour et à sécuriser par service |
| Matériel virtuel standard : la VM se déplace d'un hôte à l'autre |
Légère perte de performances par rapport au matériel nu |
Le conteneur
Un conteneur n'émule pas de matériel : c'est un ensemble de processus isolés qui s'exécutent directement sur le noyau du système hôte. Il embarque uniquement l'application et ses dépendances (bibliothèques, configuration).
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Application │ │ Application │ │ Application │
│ + dépendances│ │ + dépendances│ │ + dépendances│
└──────────────┘ └──────────────┘ └──────────────┘
┌────────────────────────────────────────────────┐
│ Moteur de conteneurs (Docker, LXC…) │
├────────────────────────────────────────────────┤
│ Système d'exploitation hôte (Linux) │
│ noyau partagé │
└────────────────────────────────────────────────┘
┌────────────────────────────────────────────────┐
│ Matériel │
└────────────────────────────────────────────────┘
Mécanismes du noyau Linux utilisés
| Mécanisme |
Rôle |
| Namespaces |
Chaque conteneur a sa propre vue des processus (pid), du réseau (net), des points de montage (mnt), du nom d'hôte (uts), des utilisateurs (user) |
| Cgroups |
Limitation et comptabilité des ressources : CPU, mémoire, E/S disque |
| Capabilities, seccomp, AppArmor / SELinux |
Restriction de ce qu'un processus du conteneur a le droit de faire |
| Système de fichiers en couches (OverlayFS) |
Une image en lecture seule partagée, plus une couche modifiable par conteneur |
Conteneur système et conteneur applicatif
|
Conteneur système |
Conteneur applicatif |
| Contenu |
Une distribution complète (init, services, SSH…) |
Un seul processus principal |
| Comportement |
Ressemble à une VM légère, administrée comme un serveur |
Jetable : on le recrée au lieu de le modifier |
| Données |
Dans le conteneur |
Dans des volumes séparés |
| Outils |
LXC / LXD / Incus, conteneurs Proxmox |
Docker, Podman, Kubernetes |
Points forts et limites
| ✅ Points forts |
❌ Limites |
| Très léger : quelques Mo, démarrage en secondes |
Isolation plus faible : une faille du noyau touche tous les conteneurs |
| Densité : des dizaines de conteneurs là où tiendraient quelques VM |
Même famille d'OS que l'hôte (conteneurs Linux sur noyau Linux) |
| Image identique du poste du développeur à la production |
Données à externaliser dans des volumes |
| Déploiement décrit dans un fichier (Dockerfile, Compose) |
Supervision et réseau plus abstraits |
Machine virtuelle ou conteneur ?
| Critère |
Machine virtuelle |
Conteneur |
| Isolation |
Matérielle (forte) |
Logicielle (noyau partagé) |
| Système invité |
Tous |
Même noyau que l'hôte |
| Taille |
Go |
Mo |
| Démarrage |
Dizaines de secondes |
Secondes |
| Densité par hôte |
Dizaines |
Centaines |
| Cas d'usage typique |
Contrôleur de domaine, serveur Windows, pare-feu, services sensibles |
Applications web, micro-services, outils auto-hébergés |
Les deux ne s'opposent pas : on fait couramment tourner des conteneurs dans des VM. La VM apporte l'isolation et la sauvegarde globale, les conteneurs apportent la légèreté et la simplicité de déploiement des applications.
Hyperviseur (Proxmox VE)
├── VM Home Assistant
├── VM Windows Server (AD, DNS, DHCP)
└── VM Docker
├── Conteneur Traefik
├── Conteneur Authentik
└── Conteneur Wiki.js
Pour aller plus loin