**Ceci est une ancienne révision du document !**
Table des matières
Présentation de Proxmox
Proxmox Virtual Environment (VE) est une plateforme de virtualisation open source basée sur une distribution Debian avec un noyau modifié. Elle permet de faire fonctionner plusieurs systèmes (Linux, Windows, etc.) sur un seul serveur physique, en utilisant deux méthodes :
- les machines virtuelles (VM) avec KVM : cela permet la virtualisation complète d'un ordinateur ;
- les conteneurs LXC (CT) : plus légers, ils partagent le noyau Linux du système hôte.
Proxmox VE est conçu pour fonctionner sur des architectures x86_64 (AMD64/Intel 64 bits). Proxmox VE n'est pas compatible avec les processeurs ARM.
Les machines virtuelles (VM) avec KVM
Qu’est-ce que c’est ?
KVM (Kernel-based Virtual Machine) est une technologie de virtualisation intégrée directement dans le noyau Linux. Elle transforme Linux en un hyperviseur de type 1, capable d’exécuter plusieurs systèmes d’exploitation isolés.
Un hyperviseur de type 1, aussi appelé hyperviseur natif ou bare-metal, est un logiciel qui s'exécute directement sur le matériel physique d’un serveur ou d’un ordinateur, sans passer par un système d’exploitation hôte. Il permet de créer et de gérer plusieurs machines virtuelles (VM), chacune avec son propre système d’exploitation.
- Exemples d’hyperviseurs de type 1 : VMware ESXi, Microsoft Hyper-V (en mode natif), Xen, KVM (considéré comme de type 1 car intégré au noyau Linux), Proxmox VE
Un hyperviseur de type 2, aussi appelé hyperviseur hébergé, est un logiciel de virtualisation qui s’exécute au-dessus d’un système d’exploitation hôte (comme Windows, macOS ou Linux). Il ne s’installe pas directement sur le matériel, mais fonctionne comme une application classique.
- Exemples d’hyperviseurs de type 2 : VMware Workstation, Oracle VirtualBox, Parallels Desktop (macOS)
Fonctionnement
Chaque VM fonctionne comme un processus Linux classique, mais avec un accès dédié à des ressources virtualisées (CPU, RAM, disque, carte réseau, etc.)
Avantages
- Performances des machines virtuelles proches de celles directement installées sur un matériel physique.
- Support de nombreux système d'exploitation, Linux et non Linux (Windows, FreeBSD, etc.).
- Support de la virtualisation imbriquée (nested virtualization).
Intégration dans Proxmox
Proxmox utilise KVM en arrière-plan, mais fournit :
- une interface web pour créer, configurer et gérer les VM ;
- des outils en ligne de commande (qm) ;
- des fonctionnalités avancées : sauvegardes (complète et snapshot), migration à chaud, haute disponibilité.
Les conteneurs (LXC)
Qu’est-ce que LXC ?
LXC (Linux Containers) est une technologie de virtualisation légère qui permet d’exécuter plusieurs systèmes Linux isolés sur un même noyau Linux. Contrairement aux machines virtuelles, les conteneurs ne virtualisent pas le matériel, mais utilisent les fonctionnalités du noyau pour isoler les processus.
Principes de fonctionnement
LXC repose sur plusieurs fonctionnalités du noyau Linux :
- namespaces : cela permet d'isoler les processus, le réseau, etc. ;
- cgroups (Control Groups) : cela permet de limiter et de surveiller l’utilisation des ressources (CPU, RAM, etc.) ;
- chroot : renforce la sécurité et l’isolation des conteneurs.
Proxmox nécessite l'utilisation des cgroups v2.
Caractéristiques principales
- Partage du noyau : tous les conteneurs utilisent le même noyau Linux Debian de l’hôte.
- Solution légère car l'utilisation du noyau de l'ordinateur hôte entraine peu de surcharge.
- Démarrage en quelque secondes des conteneurs.
- Ne peut exécuter que des distributions Linux : Debian, Ubuntu, etc.
- Facile à cloner : idéal pour déployer rapidement plusieurs instances de conteneurs.
Gestion dans Proxmox
Proxmox offre :
- une interface web pour créer, configurer et gérer les conteneurs ;
- des outils en ligne de commande (pct) ;
- des fonctionnalités avancées : sauvegardes (complète et snapshot), migration à chaud, haute disponibilité.
Cas d’usage typiques
- Hébergement de services Linux (web, base de données, DNS…).
- Environnements de développement ou de test.
- Déploiement rapide d’applications.
- Infrastructure DevOps (CI/CD, microservices).
Comparatif entre KVM et les conteneurs LXC
Critère | KVM (Machines virtuelles) | LXC (Conteneurs Linux) |
---|---|---|
Type de virtualisation | Virtualisation complète (hyperviseur type 1) | Virtualisation légère (niveau système) |
Isolation | Très forte (chaque VM a son propre noyau) | Moins forte (partage le noyau de l’hôte) |
Systèmes d'exploitation supportés | Linux, Windows, FreeBSD, etc. | Uniquement Linux |
Performances | Légèrement inférieures à un ordinateur dédié | Très proches d'un ordinateur dédié |
Consommation de ressources | Plus élevée (RAM, CPU, disque) | Très faible |
Démarrage | Plus lent (comme un vrai ordinateur) | Très rapide (quelques secondes) |
Cas d’usage typiques | Serveurs Windows, Windows 11, OPNSense | Services Linux légers, microservices (Web, DNS, DHCP), DevOps |
La gestion du réseau avec Proxmox VE
Proxmox VE permet de gérer l'accès au réseau :
- en connectant les VM et les conteneurs à un bridge, avec ou sans VLAN ;
- en agrégeant les interfaces réseaux physiques de l'hyperviseur Proxmox en définissant un bond.
Qu’est-ce qu’un bond dans Proxmox ?
Un bond (ou agrégation de liens) est une technique qui permet de regrouper plusieurs interfaces réseau physiques en une seule interface logique. Cela permet :
- la tolérance de panne (si un câble tombe, le trafic passe par l’autre) ;
- d'augmenter la bande passante (selon le mode utilisé) ;
- de répartir la charge des flux réseau (load balancing).
Le bond est utilisé en dessous du bridge (vmbr0) pour offrir redondance et performance. Le switch physique doit être configuré en conséquence.
Qu’est-ce qu’un bridge dans Proxmox
Un bridge réseau (ou pont réseau) est une interface virtuelle qui agit comme un commutateur (switch) logiciel qui permet de :
- relier les VM/CT au réseau local comme s’ils étaient des machines physiques ;
- partager une ou plusieurs interfaces réseaux physiques, ou bien un bond, entre plusieurs VM/CT ;
- gérer un bridge par VLAN (méthode classique) : les VMs et les conteneurs sont connectées à des bridges distincts selon leur VLAN ;
- gérer les VLANs directement dans un même bridge puis en associant un tag (étiquelle) de VLAN dans la configuration réseau des VM et des conteneurs LXC.
Exemple d'utilisation d'un bond et d'un bridge distinct par VLAN
Voici un schéma montrant :
- un bond appelé bond0 pour agréger deux interfaces réseau physiques de l’hyperviseur appelées en01 en02 (tolérance de panne ou répartition de charge) ;
- un bridge virtuel appelé vmbr10 connecté à bond0 pour gérer un sous-réseau IP distinct (équivalent au réseau interne de VirtualBox) utilisé pour relier les VM/CT A et B au réseau ;
- un deuxième bridge virtuel appelé vmbr20 connecté également à bond0 pour gérer un sous-réseau distinct utilisé pour relier la VM/CT C au réseau.
Exemple d'utilisation d'un bond et d'un seul bridge (VLAN-aware) pour gérer 2 VLAN
Voici un schéma montrant :
- les interfaces réseaux physiques de l'hyperviseur configurées en mode trunk pour les deux VLAN 10 et 20 nécessaires. Sur le switch où sont connectées les deux interfaces physiques de l'hyperviseur, deux VLAN 10 et 20 doivent être créés au préalable et être autorisés dans le trunk ;
- un seul bridge virtuel vmbr0 pour lequel VLAN-aware est activé.
- lors de configuration d'une VM ou d'un conteneur LXC, il faut indiquer que le bridge utilisé vmbr0 avec le tag du VLAN.