Guide Proxmox Virtual Environment
1. Installation Proxmox VE
1.1 Télécharger l'ISO
Rendez-vous sur le site officiel de Proxmox pour télécharger la dernière version stable de l'ISO Proxmox VE. Le fichier fait environ 1,2 Go.
1.2 Créer une clé USB bootable
Utilisez un outil de création de clé USB bootable :
- Rufus (Windows) : Sélectionnez l'ISO, choisissez le mode DD Image (important, pas ISO image), puis lancez l'écriture.
- Etcher (Windows/Mac/Linux) : Sélectionnez l'ISO, choisissez la clé USB, lancez le flash.
- Linux CLI :
dd if=proxmox-ve_*.iso of=/dev/sdX bs=1M status=progress
1.3 Installation pas à pas
- Bootez sur la clé USB (configurer le BIOS pour booter sur USB en premier)
- Sélectionnez "Install Proxmox VE (Graphical)"
- Acceptez la licence (AGPL v3)
- Sélectionnez le disque cible pour l'installation. Cliquez sur "Options" pour choisir le filesystem :
- ext4 : classique, stable, rapide
- xfs : bonnes performances pour gros fichiers
- ZFS (RAID0, RAID1, RAIDZ...) : recommandé pour la sécurité des données, snapshots natifs
- Configurez le pays, le fuseau horaire et la disposition clavier
- Définissez le mot de passe root et l'adresse e-mail de l'administrateur
- Configurez le réseau : hostname (ex:
srv-prox01.example.com), IP statique, gateway, DNS - Vérifiez le récapitulatif et lancez l'installation
- Retirez la clé USB au reboot
1.4 Première connexion
Après le reboot, accédez à l'interface web :
https://192.168.1.10:8006
Connectez-vous avec l'utilisateur root et le mot de passe défini lors de l'installation. Le realm doit être PAM.
1.5 Supprimer le message de licence (No valid subscription)
Par défaut, Proxmox affiche un popup "No valid subscription" à chaque connexion. Pour le supprimer :
Ajouter le dépôt no-subscription
Créez le fichier /etc/apt/sources.list.d/pve-no-subscription.list :
# Depot Proxmox VE No-Subscription
# Remplacez "bookworm" par le nom de votre release Debian
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
Commenter le dépôt enterprise
Éditez /etc/apt/sources.list.d/pve-enterprise.list et commentez la ligne :
# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
Mettre à jour le système
apt-get update && apt-get dist-upgrade -y
pve-manager. La méthode recommandée est de simplement ignorer le popup.
/etc/apt/sources.list contient bien les dépôts Debian standards :
deb http://deb.debian.org/debian bookworm main contrib
deb http://deb.debian.org/debian bookworm-updates main contrib
deb http://security.debian.org/debian-security bookworm-security main contrib
2. Configuration Réseau
2.1 Concepts fondamentaux
Le réseau sous Proxmox repose sur trois concepts principaux :
- Bridge (vmbr0, vmbr1...) : Switch virtuel qui connecte les VM/containers au réseau physique. C'est l'équivalent d'un switch L2 logiciel. Chaque bridge est associé à un port physique ou un bond.
- Bond (bond0, bond1...) : Agrégation de liens physiques pour la redondance et/ou l'augmentation de bande passante (LACP/802.3ad).
- VLAN : Segmentation logique du réseau. Permet d'isoler le trafic sur un même bridge physique.
2.2 Fichier de configuration
Toute la configuration réseau se trouve dans /etc/network/interfaces. C'est le fichier central à modifier.
2.3 Bridge simple (un seul NIC)
Configuration la plus courante pour un serveur avec une seule carte réseau :
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
Explications :
iface eno1 inet manual: l'interface physique n'a pas d'IP propre, elle est gérée par le bridgebridge-ports eno1: le bridge est rattaché à l'interface physique eno1bridge-stp off: désactive le Spanning Tree Protocol (pas nécessaire en topologie simple)bridge-fd 0: forwarding delay à 0 (pas d'attente STP)
2.4 Bond (LACP/802.3ad) + Bridge
Pour la redondance et l'agrégation de bande passante avec deux NIC :
auto lo
iface lo inet loopback
iface eno1 inet manual
iface eno2 inet manual
auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode 802.3ad
bond-xmit-hash-policy layer3+4
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
Explications :
bond-slaves eno1 eno2: les deux NIC qui forment le bondbond-miimon 100: vérifie le lien toutes les 100msbond-mode 802.3ad: LACP, nécessite que le switch soit configuré en LACP égalementbond-xmit-hash-policy layer3+4: répartition du trafic basée sur IP source/destination + port
bond-mode active-backup pour la redondance simple.
balance-rr (0): round-robin, rarement utiliséactive-backup (1): un seul lien actif, failover automatique. Ne nécessite aucune config switchbalance-xor (2): hash-basedbroadcast (3): envoie sur tous les liens802.3ad (4): LACP, le plus performant mais nécessite support switchbalance-tlb (5): adaptive transmit load balancingbalance-alb (6): adaptive load balancing
2.5 VLANs : Bridge VLAN-aware
Un bridge VLAN-aware permet de gérer plusieurs VLANs sur un seul bridge :
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports eno1
bridge-vlan-aware yes
bridge-vids 2-4094
bridge-stp off
bridge-fd 0
Explications :
bridge-vlan-aware yes: active le mode VLAN-aware sur le bridgebridge-vids 2-4094: autorise tous les VLAN IDs (ajustez selon vos besoins)- Côté VM : dans la configuration réseau de la VM, spécifiez le VLAN tag (ex: VLAN 100)
Exemple avec sous-interfaces VLAN (méthode alternative)
Si vous préférez un bridge par VLAN (méthode legacy) :
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
auto eno1.100
iface eno1.100 inet manual
auto vmbr100
iface vmbr100 inet manual
bridge-ports eno1.100
bridge-stp off
bridge-fd 0
2.6 Appliquer la configuration sans reboot
ifreload -a
Cette commande recharge la configuration réseau de manière non-disruptive (quand c'est possible).
ifreload -a peut couper la connexion si la configuration contient une erreur. Testez toujours avec un accès physique ou IPMI/iLO/iDRAC disponible.
- Un accès IPMI / iLO / iDRAC fonctionnel
- Ou un accès KVM-over-IP
- Ou un cron qui restaure la config en cas de problème :
Planifiez ce cron AVANT de faire vos modifications.# Restauration automatique apres 5 minutes cp /etc/network/interfaces.bak /etc/network/interfaces && ifreload -a
2.7 Diagnostic réseau
# Voir les bridges et leurs ports
brctl show
# Voir toutes les interfaces et IPs
ip a
# Voir la table de routage
ip route show
# Voir les connexions actives du bond
cat /proc/net/bonding/bond0
# Tester la connectivite
ping -c 4 192.168.1.1
# Verifier le VLAN tagging
bridge vlan show
# Capturer le trafic reseau
tcpdump -i vmbr0 -n port 80
3. Gestion des VM (Machines Virtuelles)
3.1 Créer une VM via le wizard web
- General : Node, VM ID (auto-incrémenté), Nom (ex:
srv-web01) - OS : Sélectionnez l'ISO, choisissez le type d'OS (Linux, Windows, etc.)
- System : BIOS (SeaBIOS ou OVMF/UEFI), contrôleur SCSI, Machine type (i440fx ou q35)
- Disks : Taille, stockage, format (qcow2, raw, vmdk), cache, discard
- CPU : Sockets, Cores, Type (host recommandé pour les performances)
- Memory : RAM fixe ou ballooning
- Network : Bridge (vmbr0), modèle (VirtIO recommandé), VLAN tag
3.2 BIOS vs UEFI (OVMF)
| Critère | SeaBIOS (Legacy) | OVMF (UEFI) |
|---|---|---|
| Compatibilité | Tous les OS | OS récents uniquement |
| Secure Boot | Non | Oui |
| Disques > 2 To | Non (MBR) | Oui (GPT) |
| Windows 11 | Non supporté | Requis (TPM + Secure Boot) |
| Machine type | i440fx | q35 recommandé |
3.3 Drivers VirtIO (Paravirtualisation)
Les drivers VirtIO offrent des performances nettement supérieures aux drivers émulés (IDE, e1000) :
- Disque : VirtIO SCSI single (
virtio-scsi-pci) — jusqu'à 3x plus rapide qu'IDE - Réseau : VirtIO (
virtio-net-pci) — latence réduite, débit supérieur
Installation des guest agents
Linux :
apt install qemu-guest-agent
systemctl enable qemu-guest-agent
systemctl start qemu-guest-agent
Windows :
- Téléchargez l'ISO VirtIO drivers (disponible sur le site Proxmox ou Fedora)
- Montez l'ISO dans un lecteur CD/DVD virtuel de la VM
- Exécutez l'installateur
virtio-win-guest-tools.exe - Cela installe les drivers VirtIO + le QEMU Guest Agent + le Balloon driver
vioscsi pendant l'installation de Windows.
3.4 Cloud-Init
Cloud-init permet de préconfigurer une VM (hostname, IP, clés SSH, user) au premier démarrage :
- Créez une VM à partir d'une image cloud (ex: Debian cloud image, Ubuntu cloud image)
- Ajoutez un lecteur Cloud-Init dans la configuration hardware
- Configurez les paramètres dans l'onglet Cloud-Init de la VM
- Convertissez la VM en template pour cloner rapidement
# Exemple : importer une image cloud et configurer cloud-init
qm create 9000 --name "template-debian12" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
qm importdisk 9000 debian-12-generic-amd64.qcow2 local-lvm
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0
qm set 9000 --ide2 local-lvm:cloudinit
qm set 9000 --boot c --bootdisk scsi0
qm set 9000 --serial0 socket --vga serial0
qm set 9000 --ipconfig0 ip=dhcp
qm set 9000 --ciuser admin
qm set 9000 --sshkeys ~/.ssh/authorized_keys
qm template 9000
3.5 Commandes CLI pour les VM
# Lister toutes les VM
qm list
# Creer une VM (basique)
qm create 100 --name srv-web01 --memory 4096 --cores 4 --net0 virtio,bridge=vmbr0
# Demarrer / Arreter / Redemarrer
qm start 100
qm stop 100
qm reboot 100
qm shutdown 100 # arret propre via guest agent
# Migrer une VM vers un autre noeud
qm migrate 100 srv-prox02
# Importer un disque
qm importdisk 100 image.qcow2 local-lvm
# Redimensionner un disque
qm resize 100 scsi0 +10G
# Voir la configuration d'une VM
qm config 100
# Modifier la configuration
qm set 100 --memory 8192
qm set 100 --cores 8
# Supprimer une VM
qm destroy 100 --purge
qm shutdown au lieu de qm stop pour un arrêt propre. qm stop équivaut à couper le courant (risque de corruption des données).
4. Containers LXC
4.1 Templates
Proxmox utilise des templates pré-construits pour créer des containers :
# Mettre a jour la liste des templates
pveam update
# Lister les templates disponibles
pveam available
# Filtrer par distribution
pveam available | grep debian
pveam available | grep ubuntu
# Telecharger un template
pveam download local debian-12-standard_12.2-1_amd64.tar.zst
# Lister les templates telecharges
pveam list local
4.2 Créer un container
Via le wizard web : cliquez sur "Create CT" en haut à droite, remplissez les champs (hostname, mot de passe root, template, ressources, réseau).
Via la CLI :
# Creer un container
pct create 200 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \
--hostname ct-web01 \
--memory 2048 \
--cores 2 \
--rootfs local-lvm:8 \
--net0 name=eth0,bridge=vmbr0,ip=192.168.1.20/24,gw=192.168.1.1 \
--password "MotDePasseSecurise" \
--unprivileged 1 \
--features nesting=1
4.3 Privileged vs Unprivileged
| Type | Sécurité | Compatibilité | Usage |
|---|---|---|---|
| Unprivileged (recommandé) | Haute (UID mapping) | Quelques limitations | Services web, apps, bases de données |
| Privileged | Plus faible | Complète | NFS server, Docker in LXC, montages spéciaux |
--features nesting=1) si vous comptez utiliser Docker dans le container.
4.4 Bind mounts
Les bind mounts permettent de monter un répertoire de l'hôte dans le container :
# Dans la configuration du container (/etc/pve/lxc/200.conf)
mp0: /mnt/data/shared,mp=/mnt/shared
# Ou via la CLI
pct set 200 -mp0 /mnt/data/shared,mp=/mnt/shared
chown -R 100000:100000 /mnt/data/shared
4.5 Commandes CLI pour les containers
# Lister les containers
pct list
# Demarrer / Arreter
pct start 200
pct stop 200
pct shutdown 200
# Entrer dans un container (shell)
pct enter 200
# Executer une commande dans un container
pct exec 200 -- apt update
# Voir la configuration
pct config 200
# Modifier la configuration
pct set 200 --memory 4096
pct set 200 --cores 4
# Supprimer un container
pct destroy 200 --purge
5. Stockage
5.1 Types de stockage
| Type | VM Disks | CT Rootfs | ISO | Backups | Snapshots | Remarques |
|---|---|---|---|---|---|---|
| local (dir) | Oui | Oui | Oui | Oui | Oui (qcow2) | Répertoire local simple, par défaut /var/lib/vz |
| LVM | Oui | Oui | Non | Non | Non | Bonnes performances, pas de snapshots natifs |
| LVM-Thin | Oui | Oui | Non | Non | Oui | Thin provisioning + snapshots, installé par défaut |
| ZFS | Oui | Oui | Non | Non | Oui | Snapshots, compression, déduplication, checksums |
| NFS | Oui | Oui | Oui | Oui | Oui (qcow2) | Stockage réseau, partagé entre noeuds |
| CIFS/SMB | Oui | Oui | Oui | Oui | Oui (qcow2) | Partages Windows/Samba |
| iSCSI | Oui | Non | Non | Non | Non | SAN, bloc niveau |
| Ceph (RBD) | Oui | Oui | Non | Non | Oui | Distribué, hyper-convergent, haute dispo |
5.2 ZFS
ZFS est un filesystem avancé offrant snapshots, compression, checksums et réparation automatique :
# Creer un pool ZFS en miroir (RAID1)
zpool create rpool mirror /dev/sda /dev/sdb
# Creer un pool RAIDZ1 (equivalent RAID5)
zpool create datapool raidz1 /dev/sda /dev/sdb /dev/sdc
# Voir l'etat du pool
zpool status
zpool list
# Activer la compression
zfs set compression=lz4 rpool
# Creer un dataset
zfs create rpool/data
# Snapshots
zfs snapshot rpool/data@backup-2024-01-15
zfs list -t snapshot
zfs rollback rpool/data@backup-2024-01-15
zfs destroy rpool/data@backup-2024-01-15
# Scrub (verification d'integrite)
zpool scrub rpool
# Voir la progression du scrub
zpool status rpool
zpool scrub hebdomadaire ou mensuel. Cela vérifie l'intégrité de toutes les données et répare les erreurs silencieuses (bit rot). Un cron typique :
# /etc/cron.d/zfs-scrub
0 2 * * 0 root /sbin/zpool scrub rpool
zfs_arc_max).
5.3 Configuration stockage
Le fichier /etc/pve/storage.cfg contient la configuration de tous les stockages :
# Stockage local par defaut
dir: local
path /var/lib/vz
content iso,vztmpl,backup
# LVM-Thin (installe par defaut)
lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images
# Exemple NFS
nfs: nas-backup
export /volume1/proxmox-backup
path /mnt/pve/nas-backup
server 192.168.1.50
content backup,iso,vztmpl
# Exemple CIFS/SMB
cifs: smb-share
server 192.168.1.51
share proxmox
content backup,images
username backup-user
password XXXXXXXXXX
# Exemple ZFS
zfspool: zfs-data
pool rpool/data
content images,rootdir
sparse 1
6. Sauvegardes (vzdump)
6.1 Modes de sauvegarde
| Mode | Downtime | Cohérence | Remarques |
|---|---|---|---|
| Snapshot | Aucun | Bonne (si guest agent) | Recommandé. Sauvegarde à chaud, la VM continue de tourner |
| Suspend | Court (RAM à copier) | Bonne | Suspend la VM, copie la RAM puis le disque |
| Stop | Long | Parfaite | Arrête la VM complètement avant la sauvegarde |
6.2 Planification via l'interface web
- Allez dans Datacenter > Backup
- Cliquez sur Add
- Configurez :
- Storage : destination des sauvegardes
- Schedule : planification (ex: tous les jours à 2h00)
- Selection mode : All, Include, Exclude
- Mode : Snapshot recommandé
- Compression : zstd (rapide et bon ratio)
- Retention : keep-daily, keep-weekly, keep-monthly
- Mail to : notification par email
6.3 CLI vzdump
# Sauvegarde snapshot d'une VM avec compression zstd
vzdump 100 --mode snapshot --storage nas-backup --compress zstd
# Sauvegarde de plusieurs VM
vzdump 100 101 102 --mode snapshot --storage nas-backup --compress zstd
# Sauvegarde de toutes les VM/CT
vzdump --all --mode snapshot --storage nas-backup --compress zstd
# Sauvegarde avec notification email
vzdump 100 --mode snapshot --storage nas-backup --compress zstd --mailto admin@example.com
# Sauvegarde avec limite de bande passante (en KB/s)
vzdump 100 --mode snapshot --storage nas-backup --compress zstd --bwlimit 50000
6.4 Restauration
# Restaurer une VM
qmrestore /mnt/pve/nas-backup/dump/vzdump-qemu-100-2024_01_15-02_00_00.vma.zst 100
# Restaurer sur un ID different
qmrestore /mnt/pve/nas-backup/dump/vzdump-qemu-100-2024_01_15-02_00_00.vma.zst 150
# Restaurer vers un stockage specifique
qmrestore /mnt/pve/nas-backup/dump/vzdump-qemu-100-2024_01_15-02_00_00.vma.zst 150 --storage local-lvm
# Restaurer un container
pct restore 200 /mnt/pve/nas-backup/dump/vzdump-lxc-200-2024_01_15-02_00_00.tar.zst
# Restaurer un container sur un stockage different
pct restore 250 /mnt/pve/nas-backup/dump/vzdump-lxc-200-2024_01_15-02_00_00.tar.zst --storage local-lvm
6.5 Rétention
Configurez la politique de rétention pour éviter que le stockage ne se remplisse :
# Exemple de configuration de retention
# Garder les 7 dernieres sauvegardes quotidiennes
# Garder 4 sauvegardes hebdomadaires
# Garder 6 sauvegardes mensuelles
vzdump 100 --mode snapshot --storage nas-backup --compress zstd \
--prune-backups keep-daily=7,keep-weekly=4,keep-monthly=6
7. Duplication / Clonage
7.1 Clone complet vs Clone lié
| Type | Espace disque | Indépendance | Performance | Usage |
|---|---|---|---|---|
| Clone complet (Full) | Copie intégrale | Totale | Normale | Production, VM indépendantes |
| Clone lié (Linked) | Delta uniquement | Dépend du parent | Peut être plus lent | Tests, dev, environnements temporaires |
7.2 Clonage via l'interface
- Clic droit sur la VM > Clone
- Choisissez le mode (Full ou Linked)
- Spécifiez le nouveau VM ID, le nom, et le stockage cible
- Cliquez sur Clone
7.3 Clonage CLI
# Clone complet
qm clone 100 150 --name srv-web02 --full
# Clone complet vers un stockage different
qm clone 100 150 --name srv-web02 --full --storage local-lvm
# Clone lie (linked clone, depuis un template ou snapshot)
qm clone 9000 151 --name srv-dev01
# Lister les snapshots disponibles pour le clone lie
qm listsnapshot 100
7.4 Templates
Convertissez une VM en template pour la cloner rapidement :
# Convertir une VM en template (irreversible!)
qm template 9000
# Cloner depuis un template (linked clone par defaut, tres rapide)
qm clone 9000 200 --name srv-prod01
qm clone 9000 201 --name srv-prod02
qm clone 9000 202 --name srv-prod03
- Installez le guest agent
- Configurez cloud-init si vous voulez personnaliser chaque clone (IP, hostname, clés SSH)
- Nettoyez la VM : supprimez les logs, videz
/tmp, effacez l'historique SSH (rm /etc/ssh/ssh_host_*pour régénérer au reboot) - Generalisez :
cloud-init cleanousysprep(Windows)
7.5 Migration entre noeuds
# Migration offline (VM arretee)
qm migrate 100 srv-prox02
# Migration live (a chaud, VM en cours d'execution)
qm migrate 100 srv-prox02 --online
# Migration avec stockage local (replique le disque)
qm migrate 100 srv-prox02 --online --with-local-disks
- Les deux noeuds doivent être dans le même cluster
- Le stockage doit être partagé (NFS, Ceph, iSCSI) OU utiliser
--with-local-disks - Le CPU du noeud cible doit être compatible (même famille ou type CPU "kvm64")
- Suffisamment de RAM disponible sur le noeud cible
8. Cluster et Haute Disponibilité (HA)
8.1 Créer un cluster
# Sur le premier noeud (srv-prox01)
pvecm create mon-cluster
# Verifier la creation
pvecm status
8.2 Joindre un noeud au cluster
# Sur le noeud a ajouter (srv-prox02)
pvecm add 192.168.1.10 # IP du noeud existant (srv-prox01)
# Verifier
pvecm status
pvecm nodes
- Le noeud doit être une installation fraîche (pas de VM/CT existants)
- Les noms d'hôtes doivent être différents et résolvables
- Les horloges doivent être synchronisées (NTP)
- Ne JAMAIS joindre un noeud qui contient déjà des VM/CT avec les mêmes IDs
8.3 Vérification du cluster
# Etat du cluster
pvecm status
# Liste des noeuds
pvecm nodes
# Etat Corosync
systemctl status corosync
# Logs Corosync
journalctl -u corosync -f
# Configuration Corosync
cat /etc/pve/corosync.conf
8.4 Haute Disponibilité (HA)
Le HA permet de redémarrer automatiquement une VM sur un autre noeud en cas de panne :
- Allez dans Datacenter > HA > Resources
- Cliquez sur Add
- Sélectionnez la VM/CT
- Définissez le groupe de préférence (quels noeuds peuvent héberger cette VM)
- Définissez l'état souhaité : started, stopped, ignored
Groupes HA
# Via l'interface : Datacenter > HA > Groups > Create
# Ou via la CLI :
ha-manager groupadd grp-web --nodes srv-prox01,srv-prox02 --nofailback 0
ha-manager add vm:100 --group grp-web --state started
8.5 Fencing
Le fencing est crucial pour le HA. Il permet d'isoler un noeud défaillant pour éviter les split-brain :
- IPMI/iLO/iDRAC : redémarrage matériel à distance
- Watchdog : un timer matériel qui reboot le noeud s'il ne répond plus. Proxmox utilise le watchdog software par défaut (
softdog).
8.6 Corosync
Corosync gère la communication inter-noeuds et le quorum. Le fichier de configuration est /etc/pve/corosync.conf :
# Exemple de corosync.conf (ne pas editer manuellement si possible)
logging {
debug: off
to_syslog: yes
}
nodelist {
node {
name: srv-prox01
nodeid: 1
quorum_votes: 1
ring0_addr: 192.168.1.10
}
node {
name: srv-prox02
nodeid: 2
quorum_votes: 1
ring0_addr: 192.168.1.11
}
node {
name: srv-prox03
nodeid: 3
quorum_votes: 1
ring0_addr: 192.168.1.12
}
}
quorum {
provider: corosync_votequorum
}
totem {
cluster_name: mon-cluster
config_version: 3
interface {
linknumber: 0
}
ip_version: ipv4-6
secauth: on
version: 2
}
# Sur le serveur QDevice (un serveur Debian/Ubuntu leger)
apt install corosync-qnetd
# Sur les noeuds Proxmox
apt install corosync-qdevice
pvecm qdevice setup 192.168.1.100 # IP du QDevice
9. Tips de Dépannage
9.1 Noeud inaccessible dans le cluster
Si un noeud est tombé et le cluster perd le quorum :
# ATTENTION : seulement si le noeud est vraiment hors service
# et que vous avez besoin de continuer a travailler
# Forcer le quorum avec le nombre de noeuds attendus
pvecm expected 1
# Verifier l'etat
pvecm status
# Voir les noeuds
pvecm nodes
pvecm expected 1 sur un cluster actif multi-noeuds où les autres noeuds sont toujours en ligne. Cela peut provoquer un split-brain (les deux moitiés du cluster croient être le cluster principal).
# Sur le noeud problematique
systemctl restart corosync
systemctl restart pve-cluster
# Si ca ne suffit pas, verifiez la connectivite
ping 192.168.1.10 # vers les autres noeuds
corosync-cfgtool -s # statut des liens corosync
9.2 Interface web inaccessible
# Verifier le service pveproxy
systemctl status pveproxy
# Redemarrer pveproxy
systemctl restart pveproxy
# Verifier que le port 8006 est bien en ecoute
ss -tlnp | grep 8006
# Verifier le firewall (si active)
pve-firewall status
iptables -L -n | grep 8006
# Verifier les logs
journalctl -u pveproxy -n 50
# Si le certificat SSL pose probleme
pvecm updatecerts --force
systemctl restart pveproxy
# En dernier recours, redemarrer tous les services Proxmox
systemctl restart pvedaemon pveproxy pvestatd
df -h). Un filesystem /var plein empêche les services de démarrer. Nettoyez les anciens journaux si nécessaire :
journalctl --vacuum-size=500M
apt clean
9.3 VM qui ne démarre pas
# Verifier les logs de la VM
journalctl -u qemu-server@100 -n 100
# Voir les taches recentes
cat /var/log/pve/tasks/active
# Verifier la configuration de la VM
qm config 100
# Verifier que le stockage est accessible
pvesm status
# Verifier que le fichier disque existe
lvs # pour LVM
zfs list # pour ZFS
ls -la /var/lib/vz/images/100/ # pour stockage local dir
# Tester le demarrage en mode verbose
qm start 100 --debug
# Verifier les ressources disponibles
free -h # RAM disponible
nproc # nombre de CPU
- Pas assez de RAM disponible sur l'hôte
- Disque VM introuvable (stockage démonté ou supprimé)
- VM verrouillée (backup en cours, migration interrompue)
- Conflit de ports (VNC, SPICE)
- Configuration UEFI corrompue (disque EFI)
9.4 Disque VM verrouillé
# Verifier si la VM est verrouillee
qm config 100 | grep lock
# Deverrouiller
qm unlock 100
# Si ca ne fonctionne pas, verifier les fichiers de lock
ls -la /var/lock/qemu-server/
rm /var/lock/qemu-server/lock-100.conf # EN DERNIER RECOURS
# Verifier s'il y a un processus QEMU qui tourne encore
ps aux | grep "100"
# Si oui, tuez-le proprement
kill -TERM <PID>
9.5 Stockage plein
# Verifier l'espace disque global
df -h
# Verifier les pools ZFS
zpool list
zfs list
# Verifier LVM
lvs
vgs
pvs
# Trouver les fichiers les plus volumineux
du -sh /var/lib/vz/dump/* # sauvegardes
du -sh /var/lib/vz/images/* # images VM
# Nettoyer les sauvegardes obsoletes
# Via l'interface : Storage > [stockage] > Content > supprimer les anciens backups
# Nettoyer les logs systeme
journalctl --vacuum-size=500M
journalctl --vacuum-time=7d
# Nettoyer le cache APT
apt clean
# Si LVM-Thin est plein, verifier le thin pool
lvs -a | grep thin
# Le thin pool ne doit JAMAIS depasser 95%
# Verification du remplissage thin pool
lvs -o lv_name,data_percent pve/data
Mettez en place une alerte quand le remplissage dépasse 80%.
9.6 Problème réseau VM
# Verifier les bridges
brctl show
# Verifier les interfaces
ip a
# Verifier la configuration reseau de la VM
qm config 100 | grep net
# Verifier que le bridge a bien un port physique
bridge link show
# Tester la connectivite depuis l'hote
ping 192.168.1.1
# Tester depuis la VM (via la console VNC/SPICE)
# Dans la VM :
ip a
ip route show
ping 192.168.1.1
# Verifier les regles firewall Proxmox
pve-firewall status
pve-firewall localinfo
# Capturer le trafic sur le bridge pour debug
tcpdump -i vmbr0 -n host 192.168.1.20
# Verifier le VLAN tag si applicable
cat /etc/pve/qemu-server/100.conf | grep tag
- Mauvais bridge sélectionné (vmbr0 vs vmbr1)
- VLAN tag incorrect ou manquant
- Firewall Proxmox bloqué (désactivez-le temporairement pour tester)
- Driver réseau non VirtIO (e1000 a des limitations)
- Conflit d'adresse IP
- Pas de gateway configuré dans la VM
9.7 Backup qui échoue
# Verifier les logs vzdump
cat /var/log/vzdump/*.log
ls -la /var/log/vzdump/
# Verifier l'espace disque destination
df -h /mnt/pve/nas-backup/
# Verifier la connectivite au stockage distant
showmount -e 192.168.1.50 # NFS
mount | grep nas-backup # point de montage
# Verifier les taches en cours
cat /var/log/pve/tasks/active
# Tester manuellement
vzdump 100 --mode snapshot --storage nas-backup --compress zstd
# Si la VM est verrouillee par un backup precedent echoue
qm unlock 100
# Verifier les permissions
ls -la /mnt/pve/nas-backup/dump/
- Espace insuffisant : la cause n°1. Vérifiez la destination
- Stockage NFS déconnecté : vérifiez le montage et la connectivité
- VM verrouillée : un backup précédent a crashé
- Timeout : le freeze du guest agent prend trop de temps (base de données très active)
- Permissions : l'utilisateur root n'a pas accès en écriture sur le stockage
9.8 Performances dégradées
# Vue globale de la charge
top
htop # si installe
# Surveillance I/O disque
iotop -o # montre uniquement les processus avec I/O active
# Messages systeme
dmesg | tail -50
dmesg -T | grep -i error
# Verifier les disques physiques
smartctl -a /dev/sda
smartctl -H /dev/sda # resultat PASS/FAIL rapide
# Verifier les temperatures
sensors # si lm-sensors est installe
# Verifier la RAM
free -h
cat /proc/meminfo
# Verifier l'utilisation CPU par VM
qm monitor 100 -c "info cpus"
# Verifier l'I/O des VM
cat /proc/diskstats
iostat -x 1 5
# Verifier le reseau
iftop -i vmbr0 # si installe
nload # si installe
ethtool eno1 # vitesse du lien
- CPU : Utilisez le type CPU "host" pour les VM (pas "kvm64") sauf si vous faites de la live migration
- Disque : Utilisez VirtIO SCSI + cache=writeback + IO thread pour les meilleures performances
- Disque SSD : Activez "Discard" (TRIM) et "SSD emulation"
- RAM : Désactivez le ballooning si vous avez assez de RAM
- NUMA : Activez NUMA si le serveur a plusieurs sockets CPU
- Hugepages : Activez pour les grosses VM (bases de données)
9.9 Mise à jour qui casse le système
# AVANT la mise a jour : prendre un snapshot ZFS de la partition root
zfs snapshot rpool/ROOT/pve-1@pre-update
# Mise a jour safe
apt-get update
apt-get dist-upgrade # Lisez ce qui va etre installe AVANT de confirmer
# Si probleme apres la mise a jour, rollback ZFS
zfs rollback rpool/ROOT/pve-1@pre-update
# Si pas de ZFS, reinstallez le paquet problematique
apt-get install --reinstall proxmox-ve
# Verifier les logs de mise a jour
cat /var/log/apt/history.log
cat /var/log/apt/term.log
- Lisez les notes de version officielles complètement
- Testez d'abord sur un noeud non critique
- Sauvegardez TOUTES les VM/CT
- Faites un snapshot ZFS de la partition root
- Ayez un accès IPMI/iLO en cas de problème de boot
- Prévoyez une fenêtre de maintenance
9.10 Certificat web expiré
# Regenerer les certificats du cluster
pvecm updatecerts --force
# Redemarrer pveproxy pour appliquer
systemctl restart pveproxy
# Verifier la date d'expiration du certificat
openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -dates
# Si le certificat est un certificat Let's Encrypt configure via Proxmox
pvenode acme cert order
# Verifier la configuration ACME
pvenode config get
9.11 Récupérer l'accès si oubli du mot de passe root
- Redémarrez le serveur
- Dans le menu GRUB, appuyez sur e pour éditer l'entrée de boot
- Trouvez la ligne commençant par
linuxet ajoutezinit=/bin/bashà la fin - Appuyez sur Ctrl+X ou F10 pour booter
- Remontez le filesystem en lecture-écriture :
mount -o remount,rw / - Changez le mot de passe :
passwd root - Redémarrez :
sync reboot -f
9.12 VM Windows lente
# Checklist optimisation Windows sur Proxmox :
# 1. Installer les drivers VirtIO (INDISPENSABLE)
# - Montez l'ISO VirtIO dans la VM
# - Executez virtio-win-guest-tools.exe
# 2. Configuration VM optimale pour Windows
qm set 100 --cpu host # CPU type host
qm set 100 --scsihw virtio-scsi-single # controleur VirtIO SCSI
qm set 100 --machine q35 # machine type q35
qm set 100 --bios ovmf # UEFI
qm set 100 --balloon 0 # desactiver le ballooning pour les performances
# 3. Activer le IO thread sur chaque disque
# Dans /etc/pve/qemu-server/100.conf :
# scsi0: local-lvm:vm-100-disk-0,iothread=1,cache=writeback
# 4. Verifier dans la VM
# - Guest Agent installe et fonctionnel
# - Balloon driver installe
# - VirtIO network driver installe
# - Plan d'alimentation sur "Haute performance"
# - Desactiver les mises a jour Windows pendant les heures de production
- Utilisez VirtIO SCSI single comme contrôleur (pas IDE ou SATA)
- Activez IO thread sur chaque disque pour paralléliser les I/O
- Utilisez cache=writeback pour de meilleures performances (légèrement moins sûr en cas de coupure courant)
- Activez Discard si le stockage est sur SSD
- Ne pas surcharger en vCPU : donnez le nombre de cores réellement nécessaires
- Donnez assez de RAM pour éviter le swap Windows
9.13 Snapshot qui bloque
# Lister les snapshots
qm listsnapshot 100
# Supprimer un snapshot bloque
qm delsnapshot 100 snap-name
# Forcer la suppression
qm delsnapshot 100 snap-name --force
# Si la VM est bloquee sur un snapshot
qm unlock 100
# Verifier l'etat interne
qm monitor 100 -c "info snapshots"
# En dernier recours : editer manuellement la config
# SAUVEGARDEZ AVANT !
cp /etc/pve/qemu-server/100.conf /root/100.conf.bak
nano /etc/pve/qemu-server/100.conf
# Supprimez les sections [snap-name] manuellement
9.14 Cluster quorum perdu
# Verifier le quorum
pvecm status | grep Quorum
# Si quorum perdu et AUCUN autre noeud n'est en ligne :
pvecm expected 1
# Si un noeud doit etre retire definitivement du cluster
# (sur un noeud fonctionnel avec quorum) :
pvecm delnode srv-prox03
# Verifier les votes
pvecm status
# Si le cluster est completement casse, en dernier recours :
# 1. Stoppez toutes les VM
# 2. Stoppez les services cluster
systemctl stop pve-cluster corosync
# 3. Demarrez le cluster en mode local
pmxcfs -l
# 4. Editez la configuration si necessaire
# 5. Reboot
pvecm expected 1 ne doit être utilisé que si vous êtes CERTAIN que les autres noeuds sont définitivement hors ligne. Si un autre noeud est encore en ligne quelque part, vous aurez un split-brain qui peut entraîner des corruptions de données irréversibles.
9.15 Logs importants à connaître
# Logs systeme general
journalctl -xe
# Logs Proxmox specifiques
/var/log/pve/tasks/ # historique des taches
/var/log/vzdump/ # logs de sauvegarde
journalctl -u pvedaemon # daemon principal
journalctl -u pveproxy # interface web
journalctl -u pvestatd # statistiques
journalctl -u corosync # cluster
journalctl -u pve-ha-lrm # HA local resource manager
journalctl -u pve-ha-crm # HA cluster resource manager
# Logs QEMU par VM
journalctl -u qemu-server@100
# Logs syslog
tail -f /var/log/syslog
tail -f /var/log/daemon.log
10. Commandes Essentielles
10.1 Gestion des VM (qm)
| Commande | Description |
|---|---|
qm list | Lister toutes les VM |
qm create <vmid> | Créer une VM |
qm start <vmid> | Démarrer une VM |
qm stop <vmid> | Arrêter une VM (couper courant) |
qm shutdown <vmid> | Arrêter une VM proprement (ACPI) |
qm reboot <vmid> | Redémarrer une VM |
qm config <vmid> | Voir la configuration |
qm set <vmid> [options] | Modifier la configuration |
qm resize <vmid> <disk> <size> | Redimensionner un disque |
qm clone <vmid> <newid> | Cloner une VM |
qm template <vmid> | Convertir en template |
qm migrate <vmid> <node> | Migrer vers un autre noeud |
qm importdisk <vmid> <file> <storage> | Importer un disque |
qm unlock <vmid> | Déverrouiller une VM |
qm destroy <vmid> --purge | Supprimer une VM et ses disques |
qm listsnapshot <vmid> | Lister les snapshots |
qm snapshot <vmid> <name> | Créer un snapshot |
qm rollback <vmid> <name> | Restaurer un snapshot |
qm delsnapshot <vmid> <name> | Supprimer un snapshot |
10.2 Gestion des Containers (pct)
| Commande | Description |
|---|---|
pct list | Lister tous les containers |
pct create <ctid> <template> | Créer un container |
pct start <ctid> | Démarrer un container |
pct stop <ctid> | Arrêter un container |
pct enter <ctid> | Ouvrir un shell dans le container |
pct exec <ctid> -- <cmd> | Exécuter une commande |
pct config <ctid> | Voir la configuration |
pct set <ctid> [options] | Modifier la configuration |
pct destroy <ctid> --purge | Supprimer un container |
pct snapshot <ctid> <name> | Créer un snapshot |
pct rollback <ctid> <name> | Restaurer un snapshot |
10.3 Stockage et templates (pvesm / pveam)
| Commande | Description |
|---|---|
pvesm status | Voir l'état de tous les stockages |
pvesm list <storage> | Lister le contenu d'un stockage |
pvesm add <type> <name> [options] | Ajouter un stockage |
pvesm remove <name> | Supprimer un stockage |
pveam update | Mettre à jour la liste des templates |
pveam available | Lister les templates disponibles |
pveam download <storage> <template> | Télécharger un template |
10.4 Cluster (pvecm)
| Commande | Description |
|---|---|
pvecm create <name> | Créer un cluster |
pvecm add <ip> | Joindre un noeud au cluster |
pvecm delnode <name> | Retirer un noeud du cluster |
pvecm status | État du cluster |
pvecm nodes | Lister les noeuds |
pvecm expected <n> | Forcer le quorum (urgence) |
pvecm updatecerts --force | Regener les certificats |
10.5 Sauvegarde (vzdump)
| Commande | Description |
|---|---|
vzdump <vmid> | Sauvegarder une VM/CT |
vzdump <vmid> --mode snapshot | Sauvegarde à chaud |
vzdump --all | Sauvegarder tout |
qmrestore <file> <vmid> | Restaurer une VM |
pct restore <ctid> <file> | Restaurer un container |
10.6 Divers
| Commande | Description |
|---|---|
pveversion -v | Version de Proxmox et des composants |
pvenode | Gestion du noeud local |
pve-firewall status | État du firewall Proxmox |
systemctl restart pveproxy | Redémarrer l'interface web |
systemctl restart pvedaemon | Redémarrer le daemon Proxmox |
ha-manager status | État de la haute disponibilité |
ifreload -a | Recharger la config réseau |
/root/.bashrc pour les commandes fréquentes :
alias vml='qm list'
alias ctl='pct list'
alias stor='pvesm status'
alias clust='pvecm status'
alias bk='vzdump --mode snapshot --compress zstd'