Mettre à jour Proxmox 8 vers la version 9

En août 2025, Proxmox VE 9.0 a été officiellement lancé. Comme pour chaque mise à jour majeure, de nombreuses modifications ont été apportées, incluant des corrections de bugs et l’ajout de nouvelles fonctionnalités.

Les équipes de développement de Proxmox VE s’efforcent de fournir un journal des modifications aussi détaillé que possible. En plus de ce journal, le wiki qui l’héberge propose divers articles et procédures pour vous aider à mettre à jour Proxmox.

Les étapes à suivre avant et après la mise à jour d’un système sont souvent peu discutées. Dans cet article, je vous propose quelques conseils qui ont fait leurs preuves dans différentes infrastructures. Plusieurs points seront abordés :

  • Sauvegarde des données
  • Lecture des journaux des modifications
  • Mise à jour de la version N-1 (PVE 8)
  • Mise à jour de la version N (PVE 9)
  • Tests de bon fonctionnement

Upgrade from 8 to 9 - Proxmox VEProxmox VEIl est fortement recommandé d’effectuer un test de mise à jour sur des machines séparées. Si vous avez le temps et les ressources, vous pouvez également installer une version bêta. Cela vous permettra non seulement de découvrir en avant-première les modifications, mais aussi de fournir des retours constructifs aux équipes de développement pour les aider à résoudre d’éventuels problèmes.

De plus, effectuez les manipulations suivantes avec le compte root plutôt qu’un compte qui dispose des droits sudo. L’utilisateur root a un réel droit sur l’intégralité du système, ce qui est nécessaire lors de ce genre de manipulation.

Sauvegarde des données#

Avant de procéder à la mise à jour de vos machines, il est essentiel de commencer par sauvegarder vos données. Même si votre système de sauvegarde des machines virtuelles est bien établi, assurez-vous de vérifier l’intégrité des sauvegardes en effectuant un test de restauration.

Pensez à documenter les processus et à tenir un journal des tests de restauration réalisés, en notant les succès ainsi que les échecs, accompagnés d’une description détaillée (surtout pour les échecs, qui vous donneront une plus-value technique si le problème revient ou si vous avez besoin de partager votre expérience).

Lorsque votre cluster Proxmox utilise Ceph, la sauvegarde de vos données devient encore plus cruciale. Étant donné que Ceph est le système de stockage de vos machines, tout problème pourrait compromettre l’infrastructure et entraîner des complications majeures (blocage des systèmes, perte de donnée, interruption de service…).

Préparez un plan de retour arrière au cas où la mise à jour ne se passerait pas comme prévu (préparer des machines sous PVE 8 pour pouvoir faire des restaurations rapides, par exemple).

Aussi, dans un serveur Proxmox, il est intéressant de sauvegarder les fichiers “/etc/pve/storage.cfg” (définition des stockages) et “/etc/network/interfaces” (définition des réseaux). Au mieux, vous pouvez sauvegarder l’ensemble du dossier “/etc/pve”, comportant les clés publiques/privées, la configuration corosync pour le cluster, les comptes utilisateurs locaux, la configuration du SDN etc. avec la commande tar -czvf "/etc/pve/pve_backup_$(date +'%Y%m%d').tar.gz" /etc/pve.

Lecture des changements#

Une veille technologique est, dans l’IT actuelle, indispensable. Quand de nouvelles mises à jour majeures sont déployées, une attention particulière est de mise, particulièrement pour les outils que vous utilisez. Ces derniers temps, ZFS et Ceph bénéficient de nombreux changements.

Prenez le temps de trouver et de lire des retours d’expérience sur Internet, de personnes ayant effectué la mise à jour, non seulement sur Proxmox, mais aussi sur d’autres hyperviseurs.

Mise à jour de la version N-1 (PVE 8)#

Assurez-vous d’effectuer toutes les dernières mises à jour de Proxmox 8 avant de passer à Proxmox 9. Cette étape est cruciale, car elle met à niveau vos machines et garantit que vous disposez des prérequis nécessaires pour une transition fluide vers la version supérieure.

N’oubliez pas de mettre à jour le noyau de vos machines et de redémarrer chaque serveur. Cette étape est essentielle pour assurer une mise à niveau dans les meilleures conditions possibles.

Mise à jour de la version N (PVE 9)#

Pour mettre à jour PVE de la version 8 à la version 9, un outil est à votre disposition pour connaître et définir votre niveau de maturité pour la mise à niveau. Cet outil, c’est pve8to9.

Pour aller sur la version 9 de Proxmox, il faut être en 8.4.1 minimum. Le 10/09/2025, PVE 8 est en 8.4.9. Si vous disposez de Ceph, vous devez faire les mises à jour pour être en version 19.2 (Squid).

Assurez-vous d’avoir au moins 10 Gb d’espace libre sur chacun de vos serveurs Proxmox (pour le téléchargement et la décompression des nouveaux paquets).

Dès que tous les prérequis sont bons, exécutez la commande pve8to9.

Par exemple, sur ma machine voici le résultat de la commande :

= CHECKING VERSION INFORMATION FOR PVE PACKAGES =

Checking for package updates..
PASS: all packages up-to-date

Checking proxmox-ve package version..
PASS: proxmox-ve package has version >= 8.4-0

Checking running kernel version..
PASS: running kernel '6.14.8-2-bpo12-pve' is considered suitable for upgrade.

= CHECKING CLUSTER HEALTH/SETTINGS =

PASS: systemd unit 'pve-cluster.service' is in state 'active'
PASS: systemd unit 'corosync.service' is in state 'active'
PASS: Cluster Filesystem is quorate.

Analzying quorum settings and state..
INFO: configured votes - nodes: 1
INFO: configured votes - qdevice: 0
INFO: current expected votes: 1
INFO: current total votes: 1
WARN: cluster consists of less than three quorum-providing nodes!

Checking nodelist entries..
PASS: nodelist settings OK

Checking totem settings..
PASS: totem settings OK

INFO: run 'pvecm status' to get detailed cluster status..

= CHECKING HYPER-CONVERGED CEPH STATUS =

SKIP: no hyper-converged ceph setup detected!

= CHECKING CONFIGURED STORAGES =

PASS: storage 'durango_infra' enabled and active.
PASS: storage 'durango_k8s' enabled and active.
PASS: storage 'durango_temp' enabled and active.
PASS: storage 'local' enabled and active.
PASS: storage 'local-lvm' enabled and active.
PASS: storage 'local-nvme' enabled and active.
INFO: Checking storage content type configuration..
PASS: no storage content problems found
PASS: no storage re-uses a directory for multiple content types.
INFO: Check for usage of native GlusterFS storage plugin...
PASS: No GlusterFS storage found.
INFO: Checking whether all external RBD storages have the 'keyring' option configured
SKIP: No RBD storage configured.

= VIRTUAL GUEST CHECKS =

INFO: Checking for running guests..
WARN: 7 running guest(s) detected - consider migrating or stopping them.
INFO: Checking if LXCFS is running with FUSE3 library, if already upgraded..
SKIP: not yet upgraded, no need to check the FUSE library version LXCFS uses
INFO: Checking for VirtIO devices that would change their MTU...
PASS: All guest config descriptions fit in the new limit of 8 KiB
INFO: Checking container configs for deprecated lxc.cgroup entries
PASS: No legacy 'lxc.cgroup' keys found.
INFO: Checking VM configurations for outdated machine versions
PASS: All VM machine versions are recent enough

= MISCELLANEOUS CHECKS =

INFO: Checking common daemon services..
PASS: systemd unit 'pveproxy.service' is in state 'active'
PASS: systemd unit 'pvedaemon.service' is in state 'active'
PASS: systemd unit 'pvescheduler.service' is in state 'active'
PASS: systemd unit 'pvestatd.service' is in state 'active'
INFO: Checking for supported & active NTP service..
WARN: systemd-timesyncd is not the best choice for time-keeping on servers, due to only applying updates on boot.
  While not necessary for the upgrade it's recommended to use one of:
    * chrony (Default in new Proxmox VE installations)
    * ntpsec
    * openntpd

INFO: Checking if the local node's hostname 'miniquarium' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.1.1' configured and active on single interface.
INFO: Check node certificate's RSA key size
PASS: Certificate 'pve-root-ca.pem' passed Debian Busters (and newer) security level for TLS connections (4096 >= 2048)
PASS: Certificate 'pve-ssl.pem' passed Debian Busters (and newer) security level for TLS connections (2048 >= 2048)
PASS: Certificate 'pveproxy-ssl.pem' passed Debian Busters (and newer) security level for TLS connections (256 >= 2048)
INFO: Checking backup retention settings..
PASS: no backup retention problems found.
INFO: checking CIFS credential location..
PASS: no CIFS credentials at outdated location found.
INFO: Checking permission system changes..
INFO: Checking custom role IDs
NOTICE: Proxmox VE 9 replaced the ambiguously named 'VM.Monitor' privilege with 'Sys.Audit' for QEMU HMP monitor access and new dedicated 'VM.GuestAgent.*' privileges for access to a VM's guest agent.
        The guest agent sub-privileges are 'Audit' for all informational commands, 'FileRead' and 'FileWrite' for file-read and file-write, 'FileSystemMgmt' for filesystem freeze, thaw and trim, and 'Unrestricted' for everything, including command execution. Operations that affect the VM runstate require 'VM.PowerMgmt' or 'VM.GuestAgent.Unrestricted'
FAIL: 1 custom role(s) use the to-be-dropped 'VM.Monitor' privilege and need to be adapted after the upgrade
INFO: Checking node and guest description/note length..
PASS: All node config descriptions fit in the new limit of 64 KiB
INFO: Checking if the suite for the Debian security repository is correct..
PASS: found no suite mismatch
INFO: Checking for existence of NVIDIA vGPU Manager..
PASS: No NVIDIA vGPU Service found.
INFO: Checking bootloader configuration...
WARN: systemd-boot meta-package installed but the system does not seem to use it for booting. This can cause problems on upgrades of other boot-related packages. Consider removing 'systemd-boot'
PASS: bootloader packages installed correctly
INFO: Check for dkms modules...
SKIP: could not get dkms status
INFO: Check for legacy 'filter' or 'group' sections in /etc/pve/notifications.cfg...
PASS: No legacy 'filter' or 'group' sections found!
INFO: Check for legacy 'notification-policy' or 'notification-target' options in /etc/pve/jobs.cfg...
PASS: No legacy 'notification-policy' or 'notification-target' options found!
INFO: Check for LVM autoactivation settings on LVM and LVM-thin storages...
NOTICE: storage 'local-lvm' has guest volumes with autoactivation enabled
NOTICE: storage 'local-nvme' has guest volumes with autoactivation enabled
NOTICE: Starting with PVE 9, autoactivation will be disabled for new LVM/LVM-thin guest volumes. This system has some volumes that still have autoactivation enabled. All volumes with autoactivations reside on local storage, where this normally does not cause any issues.
You can run the following command to disable autoactivation for existing LVM/LVM-thin guest volumes:

        /usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation

INFO: Check space requirements for RRD migration...
PASS: Enough free disk space for increased RRD metric granularity requirements, which is roughly 83.47 MiB.
INFO: Checking for IPAM DB files that have not yet been migrated.
PASS: No legacy IPAM DB found.
PASS: No legacy MAC DB found.
INFO: Checking if the legacy sysctl file '/etc/sysctl.conf' needs to be migrated to new '/etc/sysctl.d/' path.
PASS: Legacy file '/etc/sysctl.conf' exists but does not contain any settings.
INFO: Checking if matching CPU microcode package is installed.
WARN: The matching CPU microcode package 'amd64-microcode' could not be found! Consider installing it to receive the latest security and bug fixes for your CPU.
        apt install amd64-microcode
SKIP: NOTE: Expensive checks, like CT cgroupv2 compat, not performed without '--full' parameter

= SUMMARY =

TOTAL:    55
PASSED:   40
SKIPPED:  5
WARNINGS: 5
FAILURES: 1

ATTENTION: Please check the output for detailed information!
Try to solve the problems one at a time and then run this checklist tool again.

Les tests “FAIL” vous empêchent de mettre à jour. Les tests ayant un résultat en “WARN” ou “NOTICE” sont à prendre en compte, mais ne vont pas vous empêcher de mettre à jour les serveurs.

Pour ma part, une notice et surtout un FAIL apparaissent :

NOTICE: Proxmox VE 9 replaced the ambiguously named 'VM.Monitor' privilege with 'Sys.Audit' for QEMU HMP monitor access and new dedicated 'VM.GuestAgent.*' privileges for access to a VM's guest agent.
The guest agent sub-privileges are 'Audit' for all informational commands, 'FileRead' and 'FileWrite' for file-read and file-write, 'FileSystemMgmt' for filesystem freeze, thaw and trim, and 'Unrestricted' for everything, including command execution. Operations that affect the VM runstate require 'VM.PowerMgmt' or 'VM.GuestAgent.Unrestricted'

FAIL: 1 custom role(s) use the to-be-dropped 'VM.Monitor' privilege and need to be adapted after the upgrade

J’utilise OpenTofu pour générer mes machines virtuelles dans Proxmox, et auparavant, dans le rôle personnalisé, j’avais ajouté “VM.Monitor”. Ce rôle n’existe plus désormais, il faut donc l’enlever dans “Datacenter” > “Roles” > sélectionner ledit rôle, modifiez le en enlevant “VM.Monitor”.

Quelques articles disponibles sur mon site :

Entre-temps, disposant d’un processeur AMD, un “warn” est affiché :

WARN: The matching CPU microcode package 'amd64-microcode' could not be found! Consider installing it to receive the latest security and bug fixes for your CPU.
        apt install amd64-microcode

Pour régler ce problème, ajoutez non-free-firmware à la fin des dépôts “ftp.debian.org”, mettez à jour la liste des dépôts apt update et installez le paquet amd64-microcode (pour AMD). Les indications officielles sont ici et .

Les autres warn correspondent aux machines qui sont toujours en fonctionnement (pas grave), l’utilisation de systemd-timesyncd (Proxmox recommande d’utiliser chrony ou openntpd plutôt que systemd-timesyncd, ce dernier n’applique sa configuration qu’au démarrage) que j’ignore (selon mon environnement) et le paquet systemd-boot qui n’est pas utilisé, qui peut être supprimé.

Dès que tout vous semble bon il est l’heure de mettre à jour votre Proxmox ! Une commande sed sera lancée pour modifier le nom de référence de la distribution pour passer à Trixie en lieu et place de bookworm. Un rapide sed -i 's/bookworm/trixie/g' /etc/apt/sources.list et vous pouvez désormais lancer apt update.

root@miniquarium:~# apt update
Get:1 http://ftp.fr.debian.org/debian trixie InRelease [138 kB]
Get:2 http://download.proxmox.com/debian/pve trixie InRelease [2,771 B]
Get:3 http://security.debian.org trixie-security InRelease [43.4 kB]
Get:4 http://ftp.fr.debian.org/debian trixie-updates InRelease [47.1 kB]
Get:5 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages [161 kB]
Get:6 http://security.debian.org trixie-security/main amd64 Packages [5,304 B]
Get:7 http://security.debian.org trixie-security/main Translation-en [6,724 B]
Get:8 http://ftp.fr.debian.org/debian trixie/main amd64 Packages [9,668 kB]
Get:9 http://ftp.fr.debian.org/debian trixie/main Translation-en [6,484 kB]
Get:10 http://ftp.fr.debian.org/debian trixie/contrib amd64 Packages [53.8 kB]
Get:11 http://ftp.fr.debian.org/debian trixie/contrib Translation-en [49.6 kB]
Get:12 http://ftp.fr.debian.org/debian trixie/non-free-firmware amd64 Packages [6,868 B]
Get:13 http://ftp.fr.debian.org/debian trixie/non-free-firmware Translation-en [4,704 B]
Get:14 http://ftp.fr.debian.org/debian trixie-updates/main amd64 Packages [2,432 B]
Get:15 http://ftp.fr.debian.org/debian trixie-updates/main Translation-en [396 B]
Fetched 16.7 MB in 2s (10.8 MB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
587 packages can be upgraded. Run 'apt list --upgradable' to see them.

Plus de 580 paquets à mettre à jour, allons-y avec la commande apt dist-upgrade. Pour ma part, environ 580 Mo seront téléchargés et environ 1,2 Go de stockage sera utilisé en plus qu’actuellement. L’outil apt-listchanges va s’ouvrir pour vous lister la liste des modifications sur de nombreux paquets, toujours intéressant à lire (aussi lisible sur le net).

Le fichier /etc/issue sera modifié pour refléter les nouvelles valeurs de Debian 13. Bien qu’esthétique, c’est tout de même intéressant à avoir.

Installing new version of config file /etc/debian_version ...

Configuration file '/etc/issue'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** issue (Y/I/N/O/D/Z) [default=N] ? y

Pendant la mise à jour du paquet libc6, une question sera posée à propos du redémarrage automatique des services ; je vous conseille de répondre “No”. En effet, il n’est pas utile de redémarrer les services à chaud, durant la mise à jour de Proxmox, puisque nous devrons dans tous les cas redémarrer le serveur.

Setting up dbus (1.16.2-2) ...
A reboot is required to replace the running dbus-daemon.
Please reboot the system when convenient.

Installé sur un SSD grand public, la mise à jour PVE 8 vers PVE 9 a mis environ 20 minutes à être effectuée, redémarrage compris.

Tests de bon fonctionnement#

Lorsque vous avez redémarré votre machine, essayez d’accéder à votre serveur Proxmox. C’est le premier test, est-ce que le serveur a redémarré et est-il en état de marche ?

Ici, oui, PVE 9.0.3 en ligne !

Et maintenant ?#

Effectuez, en SSH, la commande apt autoremove pour supprimer les résidus (notamment les noyaux obsolètes).

Avec Debian 13, APT passe en version 3 et dispose d’un nouveau formalisme pour les fichiers sources.list (Merci L.G. pour l’info’ !). Debian dispose d’une page pour expliquer les changements :

SourcesList - Debian WikiDebian WikiJ’ai lancé la commande apt modernize-sources sur mon nœud Proxmox, et les fichiers se sont mis à jour :

root@miniquarium:~# apt modernize-sources
The following files need modernizing:
  - /etc/apt/sources.list
  - /etc/apt/sources.list.d/ceph.list
  - /etc/apt/sources.list.d/pve-enterprise.list

Modernizing will replace .list files with the new .sources format,
add Signed-By values where they can be determined automatically,
and save the old files into .list.bak files.

This command supports the 'signed-by' and 'trusted' options. If you
have specified other options inside [] brackets, please transfer them
manually to the output files; see sources.list(5) for a mapping.

For a simulation, respond N in the following prompt.
Rewrite 3 sources? [Y/n]
Modernizing /etc/apt/sources.list...
- Writing /etc/apt/sources.list.d/debian.sources
- Writing /etc/apt/sources.list.d/proxmox.sources

Modernizing /etc/apt/sources.list.d/ceph.list...
Modernizing /etc/apt/sources.list.d/pve-enterprise.list...

Désormais, les dépôts ressemblent à ça :

root@miniquarium:~# cat /etc/apt/sources.list.d/proxmox.sources
# Modernized from /etc/apt/sources.list
Types: deb
URIs: http://download.proxmox.com/debian/pve/
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

N’oubliez pas de désactiver le dépôt “pve-enterprise” qui sera ajouté à postériori, si vous n’avez pas de licence Proxmox Enterprise.

Utilisez vos machines, créez des VM, exploitez votre infrastructure ! Mettez à jour Proxmox Backup Server, documentez, optimisez votre supervision…

#proxmox #linux
Julien HOMMET
14 minutes
2820 mots
tuto