Aide-mémoire — Proxmox VE
Aide-mémoire des commandes CLI essentielles. Toutes les commandes s'exécutent en root sur le nœud Proxmox sauf mention contraire.
VMs KVM — qm
# Créer une VM
qm create <vmid> --name <nom> --memory <Mo> --cores <n> \
--net0 virtio,bridge=vmbr0 \
--scsi0 local-lvm:<Go> --scsihw virtio-scsi-single \
--ostype l26 --agent enabled=1
# Cycle de vie
qm start <vmid>
qm shutdown <vmid> # arrêt propre (signal ACPI)
qm stop <vmid> # arrêt forcé (coupure alimentation)
qm reboot <vmid>
qm suspend <vmid>
# Informations
qm list
qm status <vmid>
qm config <vmid>
# Modifier à chaud
qm set <vmid> --memory 4096
qm set <vmid> --cores 4
qm set <vmid> --net1 virtio,bridge=vmbr0
# Cloud-Init
qm set <vmid> --ide2 local-lvm:cloudinit
qm set <vmid> --ciuser devops --cipassword dawan --ipconfig0 ip=10.44.1.50/24,gw=10.44.1.1
qm set <vmid> --boot order=scsi0
qm cloudinit dump <vmid> user
# Templates et clones
qm template <vmid>
qm clone <vmid> <newid> --name <nom> --full --storage local-lvm
# Snapshots
qm snapshot <vmid> <nom> [--description "texte"] [--vmstate]
qm listsnapshot <vmid>
qm rollback <vmid> <nom>
qm delsnapshot <vmid> <nom>
# Migration
qm migrate <vmid> <nœud-cible> --targetstorage local-lvm # à froid
qm migrate <vmid> <nœud-cible> --online --targetstorage ceph-vm # à chaud
# Import d'image cloud (le disque arrive en unused0, à attacher ensuite avec qm set)
qm disk import <vmid> <image.qcow2> <stockage>
# Sauvegarde
vzdump <vmid> --storage <stockage> --mode snapshot --compress zstd
# Restauration
qmrestore <fichier.vma.zst> <newid> --storage local-lvm
# Dépannage
qm monitor <vmid> # moniteur QEMU (diagnostic avancé)
pvenode task list --vmid <vmid> --errors 1 # tâches en échec de cette VM
qm guest cmd <vmid> ping # l'agent invité répond-il ?
Conteneurs LXC — pct
# Télécharger un template
pveam update
pveam available --section system
pveam download local <template.tar.zst>
pveam list local
# Créer un conteneur
pct create <ctid> local:vztmpl/<template.tar.zst> \
--hostname <nom> --memory 512 --swap 512 \
--rootfs local-lvm:8 \
--net0 name=eth0,bridge=vmbr0,ip=10.44.1.50/24,gw=10.44.1.1 \
--unprivileged 1
# Cycle de vie
pct start <ctid>
pct stop <ctid>
pct shutdown <ctid>
pct reboot <ctid>
# Informations
pct list
pct status <ctid>
pct config <ctid>
# Accès
pct enter <ctid> # shell root interactif dans le conteneur
pct exec <ctid> -- <commande> # exécuter une commande
# Modifier à chaud
pct set <ctid> --memory 1024
pct set <ctid> --cores 2
# Snapshots
pct snapshot <ctid> <nom> [--description "texte"]
pct listsnapshot <ctid>
pct rollback <ctid> <nom>
pct delsnapshot <ctid> <nom>
# Sauvegarde
vzdump <ctid> --storage local --mode snapshot --compress zstd
Stockages — pvesm
# Lister et état
pvesm status
pvesm list <stockage>
# Ajouter des stockages
pvesm add zfspool <id> --pool <pool>/<dataset> --content images,rootdir
pvesm add nfs <id> --server <IP> --export <path> --content iso,backup
pvesm add iscsi <id> --portal <IP> --target <iqn.xxx:target>
pvesm add pbs <id> --server <IP> --datastore <nom> \
--username '<user>@pbs!<jeton>' --password '<secret-du-jeton>' --fingerprint <fp>
pvesm add rbd <id> --pool <pool> --content images,rootdir # Ceph
# Supprimer
pvesm remove <id>
ZFS — zpool & zfs
# Pools
# Désigner les disques par /dev/disk/by-id/ en production ; -f efface les données présentes
zpool create -f -o ashift=12 <nom> mirror /dev/sdb /dev/sdc
zpool create -f -o ashift=12 <nom> raidz /dev/sdb /dev/sdc /dev/sdd
zpool status
zpool list
zpool scrub <nom> # vérification d'intégrité
zpool destroy <nom>
# Datasets
zfs create <pool>/<dataset>
zfs list
zfs list -t snapshot
# Propriétés
zfs set compression=lz4 <pool>/<dataset>
zfs set quota=100G <pool>/<dataset>
zfs get compression,used,available <pool>/<dataset>
# Snapshots
zfs snapshot <pool>/<dataset>@<nom>
zfs rollback <pool>/<dataset>@<nom>
zfs destroy <pool>/<dataset>@<nom>
zfs diff <pool>/<dataset>@<nom> <pool>/<dataset>
# Intégration Proxmox
pvesm add zfspool <id> --pool <pool>/<dataset> --content images,rootdir
Réseau — bridges et VLANs
# Voir les interfaces et bridges
ip link show
ip addr show
bridge link show
# Appliquer les changements réseau sans redémarrer
ifreload -a
# Voir la configuration Proxmox
cat /etc/network/interfaces
SDN — pvesh /cluster/sdn
# Lister
pvesh get /cluster/sdn/zones
pvesh get /cluster/sdn/vnets
# Appliquer la configuration (obligatoire après toute modification)
pvesh set /cluster/sdn
# Vérifier le bridge VNet créé
ip link show <vnet-id>
Cluster — pvecm
# Créer un cluster (sur le 1er nœud)
pvecm create <nom-cluster>
# Rejoindre un cluster (sur les nœuds suivants)
pvecm add <IP-nœud1>
# État et diagnostics
pvecm status
pvecm nodes
# Dans l'interface : Datacenter → Cluster → Join Information (à copier sur le nœud qui rejoint)
Ceph — pveceph
# Installation (sur chaque nœud ; tentacle est la version par défaut de Proxmox VE 9)
pveceph install --repository no-subscription
pveceph init --network <CIDR-réseau-ceph>
# Composants (répéter sur chaque nœud)
pveceph mon create
pveceph mgr create
pveceph osd create /dev/sdX
# Pools (--add_storages déclare aussitôt le stockage RBD dans Proxmox)
pveceph pool create <nom> --size 3 --min_size 2 --add_storages
# État
ceph status
ceph osd tree
ceph df
ceph health detail
# Intégration Proxmox, si le pool a été créé sans --add_storages
pvesm add rbd <id> --pool <nom-pool> --content images,rootdir
Utilisateurs et droits — pveum
# Utilisateurs
pveum user list
pveum user add <user>@pve --password <mdp> [--comment "texte"]
pveum user modify <user>@pve --groups <groupe>
# Groupes
pveum group list
pveum group add <groupe>
# Rôles
pveum role list
pveum role add <role> --privs "VM.Console,VM.PowerMgmt"
# Permissions (ACL)
pveum acl list
pveum acl modify <chemin> --users <user>@pve --roles <role>
pveum acl modify <chemin> --groups <groupe> --roles <role>
# API Tokens
pveum user token add <user>@pve <token-name> --privsep 0
Firewall — pvesh
# Lister les règles datacenter
pvesh get /cluster/firewall/rules
# Ajouter une règle ACCEPT (ex: SSH)
pvesh create /cluster/firewall/rules \
--action ACCEPT --type in --dport 22 --proto tcp --enable 1 --comment "SSH"
# Activer le firewall
pvesh set /cluster/firewall/options --enable 1
# Security Groups
pvesh create /cluster/firewall/groups --group <nom>
pvesh get /cluster/firewall/groups/<nom>
Sauvegardes — vzdump
# Sauvegarde unique
vzdump <vmid> --storage <stockage> --compress zstd \
--mode snapshot # sauvegarde à chaud par QEMU ; l'agent fige les écritures pour la cohérence
# --mode suspend # VM suspendue le temps du backup
# --mode stop # VM éteinte
# Sauvegarder tout le nœud
vzdump --all --storage <stockage> --compress zstd --mode snapshot
# Lister les sauvegardes
pvesh get /nodes/<nœud>/storage/<stockage>/content?content=backup
# Restaurer une VM
qmrestore <fichier.vma.zst> <newid> --storage local-lvm --unique
# Restaurer un conteneur
pct restore <newid> <fichier.tar.zst> --storage local-lvm
Diagnostic et état général
# Version de Proxmox
pveversion -v
# État du nœud
pvesh get /nodes/<nœud>/status
# Services critiques
systemctl status pveproxy pve-cluster pvedaemon
# Tâches récentes
pvesh get /nodes/<nœud>/tasks --limit 20
# Journaux
journalctl -u pve-cluster --since "1 hour ago"
journalctl -u pvedaemon -n 50
# Fichiers de configuration importants
/etc/pve/ # configuration cluster (pmxcfs)
/etc/pve/qemu-server/<vmid>.conf # configuration VM
/etc/pve/lxc/<ctid>.conf # configuration conteneur
/etc/pve/storage.cfg # configuration stockages
/etc/pve/corosync.conf # configuration cluster Corosync
/etc/pve/firewall/cluster.fw # règles firewall datacenter
/etc/network/interfaces # configuration réseau
Concepts clés — aide-mémoire
Tableaux de synthèse des notions à retenir de chaque chapitre, à consulter en révision ou pendant les ateliers.
Virtualisation, installation et stockage de base
| Concept |
Point clé |
| Type d'hyperviseur |
Proxmox VE est un hyperviseur de type 1, supportant à la fois KVM (VMs) et LXC (conteneurs) |
| KVM / QEMU / Proxmox |
KVM = accélération CPU (module noyau) · QEMU = émulation matérielle · Proxmox VE = orchestration (API, stockage, réseau) |
/etc/pve/ |
Répertoire central de la configuration cluster (pmxcfs) — tout ce qui est configuré dans Proxmox y est stocké |
local vs local-lvm |
local = stockage fichier (ISOs, templates) · local-lvm = stockage bloc (disques de VMs et conteneurs) |
| NFS / iSCSI / Ceph |
NFS = simple, ISOs et backups · iSCSI = bloc réseau, performances dépendantes du réseau · Ceph = distribué haute disponibilité, intégré nativement |
| Dépôts APT |
Enterprise = mises à jour validées, réservé aux abonnements · no-subscription = lab ou sans abonnement |
| RBAC |
Les permissions Proxmox s'appliquent par chemin (/vms/100), pas globalement |
| namespaces vs cgroups (LXC) |
namespaces = isolation (ce que le conteneur voit) · cgroups = limitation (ce qu'il peut consommer) |
| LXC vs Docker |
LXC = alternative légère à une VM, administrée comme un serveur (systemctl, apt) · Docker = emballage applicatif, jetable |
| ISO vs template LXC |
Une ISO installe un OS · un template LXC est déjà installé et prêt à démarrer |
| Suppression d'un CT |
pct destroy exige que le conteneur soit arrêté au préalable |
| Panne réseau d'un CT |
Vérifier d'abord vmbr0 sur l'hôte (ip link show vmbr0), puis l'IP et le sous-réseau du conteneur |
| Snapshot vs sauvegarde |
Snapshot = rapide, local, avant une modification · vzdump = plus lent, produit un fichier portable pour archivage/migration |
VMs KVM
| Concept |
Point clé |
Fichier .conf d'une VM |
qm create génère /etc/pve/qemu-server/<vmid>.conf — modifiable directement, mais qm set reste préférable pour éviter les erreurs de syntaxe |
| QEMU Guest Agent |
Indispensable en production : snapshots cohérents (gel des écritures) et visibilité des IPs de la VM sans SSH |
| Image cloud vs ISO |
Une image cloud est plus légère (~300-500 Mo vs 700 Mo+) et arrive avec cloud-init préinstallé — déploiement en ~30 secondes |
| Déploiement en série |
1 template cloud-init → clones liés → cloud-init différencie chaque clone par IP et hostname |
Réseau et SDN
| Concept |
Point clé |
Rôle de vmbr0 |
Fournit la connectivité IP à l'hôte Proxmox lui-même ET sert de switch virtuel pour les VMs/CT qui lui sont rattachés |
| Activer le SDN |
Intégré à Proxmox VE (paquet libpve-network-perl) : Datacenter → SDN est présent d'office ; chaque modification ne prend effet qu'après Apply (pvesh set /cluster/sdn) |
| VNet sans Subnet |
Fonctionne en L2 pur, sans IP assignée automatiquement — un Subnet avec DHCP est nécessaire pour l'attribution automatique |
| Isolation entre VNets |
Isolation totale par défaut sans routage explicite entre eux |
| Scrub ZFS |
0 errors confirme l'intégrité des données · un DEGRADED ou des erreurs de checksum imposent de remplacer le disque immédiatement |
Cluster, Ceph et sécurité
| Concept |
Point clé |
| Quorum |
Avec 3 nœuds/3 votes, 2 nœuds actifs suffisent (majorité simple) · si deux nœuds tombent, le nœud restant perd le quorum : /etc/pve passe en lecture seule, les VM en cours continuent mais aucune ne peut être démarrée ni modifiée |
ring0_addr / ring1_addr |
Adresses IP Corosync des nœuds · ring1_addr ajoute un second lien réseau redondant |
| État Ceph |
HEALTH_OK = normal · HEALTH_WARN = souvent temporaire (rééquilibrage) · HEALTH_ERR = intervention requise |
| Réseau Ceph lab vs production |
Un seul réseau suffit en lab · une interface dédiée 10 Gbps est recommandée en production |
| Security Groups |
Modifier les règles d'un groupe les applique automatiquement à toutes les VMs qui l'utilisent |
| Héritage des ACL |
Combinaison typique : un rôle large sur / (ex. PVEAuditor) + un rôle restreint sur un sous-chemin (ex. PVEVMAdmin sur /pool/production) |
PBS
| Concept |
Point clé |
| Namespaces PBS |
Un dossier logique dans un datastore, un par cluster ou par client · côté Proxmox VE, le champ Namespace du stockage PBS |
Raccourcis interface web
| Action |
Raccourci |
| Ouvrir la console d'une VM/CT |
Clic sur Console |
| Créer une VM |
Bouton Create VM (haut droite) |
| Créer un CT |
Bouton Create CT (haut droite) |
| Voir les tâches en cours |
Onglet Tasks du panneau en bas de page |
| Rechercher une VM/CT |
Champ Search en haut de l'interface |
| Actualiser l'affichage |
F5 |