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

Les formes de virtualisation

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