Proxmox VE - Fonctionnement et usage courant
Ce guide a pour objectif de faire découvrir Proxmox VE en tant qu’outil, comprendre ce qu’il permet de faire une fois qu’il fonctionne, comment se retrouver dans son interface…
Interfaces
Proxmox VE dispose de 2 principales interfaces :
- une interface web, accessible sur le réseau d’administration ;
- une interface en ligne de commande accessible localement (ou via SSH).
Nous présenterons surtout l’interface web, car elle constitue le moyen principal d’interagir humainement avec PVE, mais nous mentionnerons aussi les outils Command Line Interface (CLI) pour réaliser les mêmes tâches sans accès web. Certaines actions ne sont d’ailleurs possibles qu’en CLI.
Interface web
Proxmox VE fournit donc une interface web, généralement sur le port 8006. Elle peut être accessible par le WAN ou par un réseau d’administration dédié.
Si on connaît l’interface vSphere de VMware, on retrouve les mêmes concepts et principes d’organisation.
L’interface web de Proxmox se découpe en plusieurs parties, en essayant d’appliquer une logique d’organisation hiérarchique.
Elle est partiellement naviguable au clavier, mais ça n’est pas exhaustif.
Infos détaillées dans la documentation officielle
Se connecter
Proxmox utilise plusieurs “royaumes” d’authentification
(realms) : pam (connecté au PAM du système),
pve (base interne d’utilisateurs).
Nous utilisons un compte root@pam comme accès de
secours, avec un mot de passe très fort et un second facteur, et des
comptes <username>@pve pour les accès courants.
Dans la fenêtre d’authentification, on saisit :
User name : jdoePassword : <password>Realm : <PVE|PAM>Language : <Fr|En|…>
Une fois connecté, Proxmox montre un identifiant combiné avec la
partie personnelle et le royaume, exemple root@pam ou
jdoe@pve.
En-tête principal
Il montre le logo de Proxmox, le nom et la version du produit.
Ensuite une zone de saisie Search permet une recherche
rapide dans les VM, conteneurs, réseaux, stockages…
Un bouton Documentation permet d’ouvrir la documentation
dans une fenêtre dédiée. Il s’agit de la documentation “locale”,
spécifique à la version installée de Proxmox.
Des boutons bleus Create VM et Create CT
permettent un accès rapide à ces fonctionnalités.
Note : Nous ne gérons aucun conteneur (
CT) via Proxmox, donc ils seront simplement ignorés dans le reste de ce guide.
Enfin, un menu déroulant permet d’accéder au profil de la personne connectée, les préférences d’affichage…
Menu des ressources
Situé tout à gauche, il permet de choisir les ressources à consulter/configurer, de manière arboresente
Il présente plusieurs modes d’affichage :
Server view: pour organiser les ressources par membre du cluster : chacun ses VM, son stockage, …Folder view: pour voir les ressources par type : toutes les VM, tous les membres, tous les réseaux…Pool View: aucune idée de son utilitéTag View: pour voir les ressources par étiquette. Nous créons généralement des étiquettes par type OS des VM, mais on peut s’en servir pour plein d’autres usages.
Un bouton avec l’icône de roue crantée permet de régler d’autres préférences d’affichage (tri…).
Panneau de contenu
La ressource sélectionnée dans le menu des ressources devient le contexte du panneau de contenu.
Un menu supérieur (en haut du panneau) donne des infos et
des actions possibles sur la ressource affichée dans le panneau, y
compris un bouton Help qui ouvre la documentation sur la
page correspondant au contenu courant du panneau.
Un menu latéral (sur la gauche du panneau) permet de naviguer dans les sous-parties de la ressource affichée dans le panneau.
Panneau de logs
Tout en bas de l’interface, se trouve une section compactable.
La partie Tasks liste toutes les actions effectuées
manuellement ou automatiquement : ouverture d’une console pour une VM,
démarrage/arrêt de VM, migration de VM, sauvegarde, mise à jour de
paquets.
Chaque entrée montre certaines informations, mais on peut consulter
le détail par un double-clic sur la ligne en question, ou un clic sur le
chevron tout à droite de la ligne. L’onglet Output montre
le log complet. L’onglet Status montre une série de
métadonnées sur la tâche.
Les tâches en cours montrent une icône de spinner. Elles peuvent être stoppées.
Les tâches en erreur sont affichées avec un fond rouge.
La partie Cluster log liste ce qui touche au cluster en
lui-même : identification d’un utilisateur…
CLI
L’interface en ligne de commande est composée de plusieurs programmes et démons, donc voici les plus utiles :
- ha-manager(1) : High Availability
- pveceph(1) : Deploy Hyper-Converged Ceph Cluster
- pvecm(1): Cluster Manager
- pvenode(1) : Proxmox Node Management
- pvesm(1) : Proxmox VE Storage
- pvesr(1) : Storage Replication
- pveum(1) : User Management
- qm(1) : QEMU/KVM Virtual Machines
- qmrestore(1) : Restore Virtual Machines
- vzdump(1) : Backup and Restore
- pve-firewall(8) : Proxmox VE Firewall
Concepts
Datacenter, Node, VM/CT
Proxmox permet de gérer un datacenter virtuel et toutes ses composantes, en s’appuyant sur un ensemble de nœuds apportant des capacités de virtualisation, stockage… interconnectés via différents réseaux.
Certaines configurations et actions s’appliquent à l’ensemble du
datacenter. Dans l’interface web on les trouve en sélectionnant le
Datacenter dans le menu des ressources. C’est ici qu’on
trouve la gestion des utilisateurs, les règles du firewall général,
l’aperçu des ressources du cluster, les réplications, les sauvegardes,
les règles de haute-disponibilité…
À l’échelle d’un nœud, on va retrouver la gestion de sa configuration réseau, ses disques, ses configurations système (mises à jour de paquets, DNS, horloge), les licences Proxmox…
Pour être gérés de manière cohérente à l’échelle du datacenter, plusieurs types de ressources doivent porter le même nom sur tous les nœuds : pools ZFS, bridge réseau…
Au final, ce sont des serveurs virtuels (VM) ou des conteneurs (CT) qui sont manipulés. Ils disposent tous d’un identifiant unique (VMID ou CTID) qui ne change pas, même si on renomme le conteneur ou la VM. En CLI (et dans une moindre mesure dans l’interface web) toutes les actions se rapportent au VMID/CTID, contrairement à nos KVM “classiques” où on utilise le nom de la VM.
Réseau
La configuration réseau de chaque nœud permet de définir localement la manière d’exposer les bridges qui seront utilisables par les VM et CT.
Par exemple si une VM dispose d’une interface réseau associée au
bridge vmbr0, il faut qu’un bridge portant ce nom soit
présent sur tous les nœuds susceptibles d’accueillir la VM.
Nous utilisons une configuration statique des réseaux (basée sur des
fichiers dans /etc/network/interfaces), mais Proxmox est
aussi capable d’exploiter des fonctionnalités de Software Defined
Network (SDN) que nous n’utilisons pas encore.
Comme pour nos KVM “classiques”, la modification des réseaux d’un hyperviseur est une action plutôt rare, à faire avec une prudence particulière.
Firewall
Il existe des capacités de filtrage à plusieurs niveaux : datacenter, nœud, VM. Tout est cumulatif.
Nous n’utilisons actuellement que le filtrage au niveau du datacenter :
- tout est autorisé en sortie
- tout est refusé en entrée
- interface web, SSH… autorisées pour des IP privilégiées
Le filtrage spécifique à chaque VM est géré dans la VM par
minifirewall, pf ou autre outil adapté.
Stockage
À l’échelle du datacenter, Proxmox peut exploiter plusieurs types de stockages.
Un stockage local de type Directory (dans
/var/lib/vz) existe par défaut et nous le restreignons à
contenir seulement des snippets et
container templates. Dans la pratique il n’est quasiment
pas utilisé.
Un stockage Storage_ISO de type Directory
(dans /home/images) permet de dédier un espace
conventionnel pour les images ISO.
On peut avoir des stockages de type ZFS qui référencent
les pools des membres du cluster qu’on veut associer. Ces stockages
seront alors disponibles pour les outils de création, réplication et de
migration de VM. Attention à bien cocher la case
thin provisioning.
On peut avoir des stockages de type
Proxmox Backup Server qui référencent des
PBS pour qu’ils soient ensuite disponibles pour les
outils de sauvegarde/restauration.
On peut avoir des stockages de type RBD ou
CephFS (TODO : documenter).
D’autres types de stockage sont disponibles : iSCSI,
NFS, SMB/CIFS, BTRFS,
LVM…
Haute-disponibilité
Proxmox parle de HA (High Availability) pour désigner la capacité du cluster à prendre des mesures automatisées pour la continuité de service : démarrer des VM, les déplacer en cas de besoin, rapprocher ou éloigner des VM sur les hyperviseurs…
Ça se gère dans la partie Datacenter > HA.
C’est ici qu’on voit si le quorum est atteint ou pas, et le rôle de chaque membre.
Note : si on utilise un QDevice il ne sera pas visible ici car il ne s’agit par réellement d’un membre. Par contre il sera visible dans les commandes Corosync de bas niveau.
On peut définir des Resources en ciblant des VM.
Dans Datacenter > HA > Affinity Rules on peut
ajouter :
- des
HA Node Affinity Rulespour plus ou moins forcer des VM à être présentes sur tel ou tel menbre du cluster. - des
HA Resource Affinity Rulespour que des ressources (précédemment définies) soient rapprochées ou éloignées.
Cette partie HA est délicate à manipuler car des règles peuvent aussi bien faciliter ou entraver la gestion d’un incident. Il faut les manipuler avec précaution. Nous ne maitrisons pas encore tous les aspects de cette fonctionnalité.
Réplication
Pour les VM qui utilisent ZFS comme système de stockage, il est possible de programmer des réplications vers d’autres membres du cluster.
On peut accéder aux réplications de manière globale, au niveau du datacenter, mais aussi au niveau de chaque hyperviseur.
On peut définir autant de réplications que de cibles souhaitées pour chaque VM. On choisit la cible, la fréquence…
Attention : si on a configuré des règles de HA pour des VM répliquées, en cas de crash de l’hyperviseur la VM sera redémarrée sur un autre hyperviseur sur lequel elle est répliquée, mais ses données seront plus ou moins périmées. Il est alors conseillé de mettre un
max_relocate = 0dans la définition de la ressource HA (TODO : bien vérifier ça).
Il est possible de déclencher manuellement une réplication, avec le
bouton Schedule Now.
Le bouton Log permet de voir les informations détaillées
de la réplication sélectionnée.
Comment faire ?
On retrouve ici plusieurs cas d’usage concrets, pour l’administration courante.
Sauf mention particulière, nous conseillons d’utiliser l’interface web (qui a été beaucoup plus éprouvée), mais nous indiquons aussi les commandes CLI possibles, à utiliser avec prudence.
Se connecter à la console d’une VM
Dans l’interface web, il y a plusieurs possibilités :
- un
double-clicou unclic-droit > Consolesur une VM dans une des listes va ouvrir la console virtuelle dans une nouvelle fenêtre ; - si la VM est sélectionnée (et affichée dans le panneau principal) le
bouton
Console(menu supérieur de la VM) permet d’activer la console virtuelle (avec un choix possible de type de console : NoVNC, SPLICE, xterm.js) ; - la partie
Console(menu latéral de la VM) affiche la console virtuelle dans la zone principale de la fenêtre courante.
Migrer une ou plusieurs VM
Une par une
Dans l’interface web on peut commander la migration d’une VM en la
sélectionnant, puis par clic-droit > Migrate ou par le
bouton Migrate (menu supérieur de la VM). On peut alors
choisir la cible.
En CLI, on utilise qm migrate pour une migration à chaud :
# qm migrate <vmid> <target> --with-conntrack-state 1 --online 1
Par lot
Ça peut être utile de rapidement vider un hyperbviseur.
Dans l’interface web, on sélectionne le nœud puis par
clic-droit > Bulk Migrate ou par le bouton
Bulk Actions > Bulk Migrate (menu supérieur de la VM).
On choisi ensuite les VM à migrer, le nombre de tâches parallèles de
migration…
En CLI, on utilise pvenode migrateall pour tout migrer d’un coup :
# pvenode migrateall <target>
… ou pour une sélection de VM :
# pvenode migrateall <target> --vms [vmid,vmid,]
Note : si le paramètre max_workers n’est pas présent
dans /etc/pve/datacenter.cfg il faut le spécifier dans la
ligne de commande :
# pvenode migrateall <target> --vms [vmid,vmid,] --max-workers 4
Note : si des VM disposent de disques locaux, il faut ajouter le
paramètre --with-local-disks true pour forcer leur
migration.
Maintenance d’un nœud du cluster
Il est possible de mettre eu nœud en mode maintenance, pour l’exclure temporairement du cluster, afin de faire des mises à jour… sans perturber le reste du cluster.
Cette action n’est accessible qu’en CLI, mais peut être exécutée depuis n’importe quel nœud du cluster.
Pour activer le mode maintenance d’un nœud :
# ha-manager crm-command node-maintenance enable <node>
Après quelques secondes, le nœud aura une petite icone de clé bleue, au lieu de la marque verte.
Pour désactiver le mode maintenance d’un nœud :
# ha-manager crm-command node-maintenance disable <node>
Pour les ressources (VM…) concernées, les règles HA vont déclancher leur déplacement. pour les autres il faudra les migrer manuellement.
Modifier les ressources d’une VM
Dans l’interface web, il faut choisir la VM à modifier, puis la
partie Hardware (menu latéral de la VM).
Toutes les modifications sont mises en attente si elles nécessitent
un redémarrage de la VM. Pour ça on peut utiliser l’action
Reboot de l’interface web (menu supérieur de la VM).
Processeurs
Sauf raison particulière on garde 1 seul socket et on met autant de
cores qu’on souhaite et on garde le type host
Tou se passe via le menu latéral de la VM, dans le panneau principal pour une VM sélectionnée.
Disques
Ajout
Pour ajouter un disque, on passe par Add > Hard disk
:
Bus/Device:SCSIStorage:<zpool>Discard:yesIOthread:yesCache:Default (No cache)
Note : Il existe des réglages avancés, mais pas encore bien maîtrisés (par exemple :
SSD Emulation)
Agrandissement
Pour agrandir un disque existant, on passe par
Disk Action > Resize et on indique la quantité à ajouter
(et pas la quantité totale !).
Suppression
Attention : Si le disque est en cours d’utilisation sur la VM, il est fortement conseillé de le démonter proprement avant toute manipulation dans PVE.
Pour retirer un disque d’une VM, il faut le détacher par le bouton
Detach. Il va devenir un Unused disk [id].
Pour supprimer définitivement le disque inutilisé, il faut passer par
le bouton Remove.
Cartes réseau
On passe par Add > Network device :
- on indique le bridge à utiliser ;
- on n’indique pas de VLAN (sauf besoin spécifique) ;
- on désactive la fonction
firewall(sauf si on est cerain d’en avoir besoin).
Renommer une VM
On passe par Options dans le menu de la VM, puis
double-clic sur le nom de la VM dans la ligne
Name, ou encore sélectionner la ligne Name
puis bouton Edit
Dans Proxmox tout utilise le VMID (ou CTID pour les conteneurs) donc le nom d’une VM n’est jamais contenu dans les ressources… Ça rend le changement trivial par rapport à nos KVM “classiques”.
Détruire une VM
On sélectionne la VM et on s’assure qu’elle est éteinte, puis
More > Remove (menu supérieur de la VM). Il faut :
- confirmer le VMID (pour éviter les erreurs)
- cocher
Purge from job configurations(supprime les réplications, backups…) - cocher
Destroy unreferenced disks owned by guest
Créer une VM
Dans l’en-tête principal, il y a un bouton bleu
Create VM. On peut aussi faire
clic-droit > Create VM sur un nœud. Une fenêtre dédie
permettra de régler tous les paramètres de la VM à créer.
La documentation officielle donne plus de détails.
Onglet General
Node: on choisit le nœud sur lequel on souhaite créer la VM.VMID: on peut forcer l’identifiant de la VM mais il est conseillé de garder celui qui est proposé.Name: nom à donner à la VM.Resource Pool: on peut spécifier le groupe à utiliser, si on en a créé.Add to HA: permet de créer une ressource HA à la volée.Start at boot: on coche si on souhaite que la VM démarre autmatiquement lorsque le nœud démarre.Start/Shutdown order,Startup delay,Shutdown timeout: paramètres additionnels pour le démarrage, consultez la doc officielleTags: on peut ajouter des étiquettes
Onglet OS
Pour une installation à partir d’une image ISO stockée localement, on
conserve le choix Use CD/DVD disc image file (iso) et on
choisit l’image locale à utiliser.
Onglet System
On conserve tous les choix par défaut.
Il est conseillé de cocher Qemu Agent et de l’installer
dans la VM
Onglet Disks
On crée autant de disques virtuels que souhaité, généralement 2 : 1
de 20 Go pour la partie système et 1 pour la partie données
(/home).
On conserve à priori le mode VirtIO SCSI single, en
cochant IO thread, ainsi que Discard. Voir la
doc officielle pour plus de détail.
Attention : aucun réglage de sauvegarde ni de réplication n’est créé. Si une politique de sauvegarde globale existe elle sera appliquée, sinon il faudra en configurer une manuellement pour la VM. Aucune réplication ne sera créée par défaut, il faut le faire manuellement.
Onglet CPU
Sauf besoin spécifique on conserve 1 seule Socket et on
indique autant de Cores qu’on souhaite avoir de vCPU dans
la VM.
On conserve a priori tous les autres réglages par défaut.
Onglet Memory
On indique la mémoire (en multiples de 1024 Mo) qu’on souhaite
allouer à la VM. Par exemple 12288 pour 12 Go.
Onglet Network
Si la VM ne doit avoir aucune interface réseau (très rare) on coche
No network device. Sinon, il y aura une première interface
réseau.
Si la VM doit avoir plusieurs interfaces réseau, il faut d’abord créer la VM puis aller les ajouter plus tard.
Bridge : on choisit le bridge à utiliser. Pour le WAN,
c’est généralement vmbr0, mais on a le choix de tous les
bridges existants sur ce nœud.
On garde a priori tous les autres paramètres par défaut.
Onglet Confirm
Un récapitulatif est montré avant validation finale.
Start after created : on coche cette case si on souhaite
que la VM démarre immédiatement après avoir été créée.
Cloner une VM
On passe par clic-droit > Clone (sur une VM dans une
liste) ou par More > Clone (menu supérieur de la
VM).
- À minima il faut donner un nom à la nouvelle VM.
- On conserve en général
Target storage : Same as source. - On peut choisir la cible avec
Target node. - Si la source est un modèle de VM, on choisit
Mode : Full clone.
Note : La VM ne sera pas démarrée automatiquement, pour ne pas risquer de conflit réseau…
