Proxmox VE 9.0 vient tout juste d’être publié (5 août 2025), Il repose sur la dernière version de Debian 13 (Trixie) et intègre des upgrade de ses composants principaux :
L’interface utilisateur reste globalement inchangée par rapport à la version 8, ce qui facilite la transition pour les utilisateurs habitués à Proxmox VE 8. la mise à jour est globalement assez simple; toutefois il y a des étapes a respecter.
Cet article est une compilation de mes notes et étapes pour la mise a jour de mon cluster, en espérant qu'elles puissent vous aider dans votre upgrade.
La procédure présentée ici est un « raccourci » par rapport aux instructions officielles publiées par Proxmox.
Bien qu’elle ait été testée sur plusieurs environnements, elle n’est pas garantie de fonctionner dans toutes les configurations.
Avant de lancer la mise à jour, faites un backup complet de vos VM, conteneurs, fichiers de configuration et, surtout, de votre cluster si vous en avez un.
Il est IMPÉRATIF d'executer les commandes d'upgrade via ssh (et non via l'interface web), le mieux est d'utiliser un shell avec session re-connectable (screen par exemple)
Avant toutes instructions “regrettables” il convient de s'assurer que notre pve est en 8.4 et complétement update.
root@pve03:~# apt update root@pve03:~# apt dist-upgrade root@pve03:~# pveversion pve-manager/8.4.11/ (running kernel: 6.8.12-15-pve)
La derniere commande doit préciser la version 8.4.xx
Proxmox fourni un outil qui permet de valider le host.
root@pve03:~# pve8to9 = 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.8.12-15-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: 5 INFO: configured votes - qdevice: 0 INFO: current expected votes: 5 INFO: current total votes: 5 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 'local' enabled and active. PASS: storage 'local-lvm' enabled and active. PASS: storage 'nfs-iso' enabled and active. PASS: storage 'nfs-vmstore' 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.. PASS: no running guest detected. 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.. PASS: Detected active time synchronisation unit 'chrony.service' INFO: Checking if the local node's hostname 'pve03' is resolvable.. INFO: Checking if resolved IP is configured on local node.. PASS: Resolved node IP '192.168.99.22' 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 (2048 >= 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 PASS: no custom roles defined 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: System booted in uefi mode but grub-efi-amd64 meta-package not installed, new grub versions will not be installed to /boot/efi! Install grub-efi-amd64. FAIL: systemd-boot meta-package installed. This will cause problems on upgrades of other boot-related packages. Remove 'systemd-boot' See https://pve.proxmox.com/wiki/Upgrade_from_8_to_9#sd-boot-warning for more information. 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... PASS: all guest volumes on storage 'local-lvm' have autoactivation disabled PASS: No problematic volumes found. INFO: Checking lvm config for thin_check_options... PASS: Check for correct thin_check_options passed INFO: Check space requirements for RRD migration... PASS: Enough free disk space for increased RRD metric granularity requirements, which is roughly 65.59 MiB. INFO: Checking for IPAM DB files that have not yet been migrated. NOTICE: Found leftover legacy IPAM DB file in '/etc/pve/priv/ipam.db'. This file can be deleted AFTER upgrading ALL nodes to PVE 8.4+. 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. PASS: Found matching CPU microcode package 'intel-microcode' installed. SKIP: NOTE: Expensive checks, like CT cgroupv2 compat, not performed without '--full' parameter = SUMMARY = TOTAL: 51 PASSED: 43 SKIPPED: 5 WARNINGS: 1 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.
il est impératif de corriger les erreurs
Dans mon cas, je dois retirer le meta-package systemd-boot, mais avant je dois m'assurer que les composants EFI sont correctement installés, et pour ce faire, je dois identifié la partition UEFI; elle est en général /dev/sda2 et doit etre de FSTYPE vFAT / FAT32.
root@pve03:~# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1
├─sda2 vfat FAT32 F219-BECF
└─sda3 LVM2_member LVM2 001 XbtjoZ-JtT7-X08F-ltwz-xW1z-0glf-W1WHJf
├─pve-swap swap 1 4d9f7947-5fab-425d-9210-78a0b903f1b2 [SWAP]
├─pve-root ext4 1.0 7661b132-9c66-4f90-9acd-fa295d3c1b66 53.1G 15% /
├─pve-data_tmeta
│ └─pve-data-tpool
│ └─pve-data
└─pve-data_tdata
└─pve-data-tpool
└─pve-data
On confirme bien ici le /dev/sda2, on va ensuite monté cette partition au bon endroit:
root@pve03:~# mount /dev/sda2 /boot/efi/
On va maintenant installer l'entrée efi proxmox, cette étape est cruciale:
root@pve03:~# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox --recheck Installing for x86_64-efi platform. Installation finished. No error reported.
Si tout se passe bien, on va updaté le grub:
root@pve03:~# update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-6.8.12-16-pve Found initrd image: /boot/initrd.img-6.8.12-16-pve Found linux image: /boot/vmlinuz-6.8.12-15-pve Found initrd image: /boot/initrd.img-6.8.12-15-pve Found linux image: /boot/vmlinuz-6.8.12-14-pve Found initrd image: /boot/initrd.img-6.8.12-14-pve Found linux image: /boot/vmlinuz-6.8.4-2-pve Found initrd image: /boot/initrd.img-6.8.4-2-pve Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi Adding boot menu entry for UEFI Firmware Settings ... done
on va ensuite régénérer les entrées UEFI:
root@pve03:~# efibootmgr -c -d /dev/sda2 -p 2 -l '\EFI\proxmox\grubx64.efi' -L "Proxmox" BootCurrent: 0000 Timeout: 0 seconds BootOrder: 0004,0000,0008,0001,0002,0003,0005,0006 Boot0000* proxmox Boot0001* DTO UEFI USB Floppy/CD Boot0002* DTO UEFI USB Hard Drive Boot0003* DTO UEFI ATAPI CD-ROM Drive Boot0005* DTO Legacy USB Floppy/CD Boot0006* Hard Drive Boot0008* Samsung SSD 840 EVO 250GB Boot0004* Proxmox
Dans certains cas, il faut “forcer” grub… ce n'est pas obligatoire, mais cela permet de s'assurer que grub fera son job.
root@pve03:~# echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections -v -u info: Trying to set 'grub2/force_efi_extra_removable' [boolean] to 'true' info: Loading answer for 'grub2/force_efi_extra_removable'
Enfin, on peut installer le grub-efi-amd64 :
root@pve03:~# apt install --reinstall grub-efi-amd64 Reading package lists... Done Building dependency tree... Done Reading state information... Done The following package was automatically installed and is no longer required: proxmox-kernel-6.8.12-14-pve-signed Use 'apt autoremove' to remove it. The following packages will be REMOVED: grub-pc The following NEW packages will be installed: grub-efi-amd64 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Need to get 45.7 kB of archives. After this operation, 384 kB disk space will be freed. Do you want to continue? [Y/n] Get:1 http://download.proxmox.com/debian/pve bookworm/pve-no-subscription amd64 grub-efi-amd64 amd64 2.06-13+pmx7 [45.7 kB] Fetched 45.7 kB in 0s (734 kB/s) Preconfiguring packages ... (Reading database ... 72859 files and directories currently installed.) Removing grub-pc (2.06-13+pmx7) ... Selecting previously unselected package grub-efi-amd64. (Reading database ... 72851 files and directories currently installed.) Preparing to unpack .../grub-efi-amd64_2.06-13+pmx7_amd64.deb ... Unpacking grub-efi-amd64 (2.06-13+pmx7) ... Setting up grub-efi-amd64 (2.06-13+pmx7) ... Installing for x86_64-efi platform. File descriptor 3 (pipe:[329533283]) leaked on vgs invocation. Parent PID 642498: grub-install.real File descriptor 3 (pipe:[329533283]) leaked on vgs invocation. Parent PID 642498: grub-install.real Installation finished. No error reported. Generating grub configuration file ... Found linux image: /boot/vmlinuz-6.8.12-16-pve Found initrd image: /boot/initrd.img-6.8.12-16-pve Found linux image: /boot/vmlinuz-6.8.12-15-pve Found initrd image: /boot/initrd.img-6.8.12-15-pve Found linux image: /boot/vmlinuz-6.8.12-14-pve Found initrd image: /boot/initrd.img-6.8.12-14-pve Found linux image: /boot/vmlinuz-6.8.4-2-pve Found initrd image: /boot/initrd.img-6.8.4-2-pve Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi Adding boot menu entry for UEFI Firmware Settings ... done Processing triggers for man-db (2.11.2-2) ... Processing triggers for shim-signed:amd64 (1.44+pmx1+15.8-1+pmx1) ...
A ce point, on peut désinstaller systemd-boot:
root@pve03:~# apt remove systemd-boot Reading package lists... Done Building dependency tree... Done Reading state information... Done The following package was automatically installed and is no longer required: proxmox-kernel-6.8.12-14-pve-signed Use 'apt autoremove' to remove it. The following packages will be REMOVED: systemd-boot 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 250 kB disk space will be freed. Do you want to continue? [Y/n] (Reading database ... 72852 files and directories currently installed.) Removing systemd-boot (252.39-1~deb12u1) ... Processing triggers for man-db (2.11.2-2) ...
Ca commence comme un upgrade Debian classique, en changeant les sources:
root@pve03:~# sed -i 's/bookworm/trixie/g' /etc/apt/sources.list root@pve03:~# sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.list
on en profite pour supprimer les références à proxmox (on va les remettre plus tard):
root@pve03:~# rm /etc/apt/sources.list.d/pve-install-repo.list
root@pve03:~# cat > /etc/apt/sources.list.d/proxmox.sources << EOF Types: deb URIs: http://download.proxmox.com/debian/pve Suites: trixie Components: pve-no-subscription Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg EOF
root@pve03:~# cat > /etc/apt/sources.list.d/ceph.sources << EOF Types: deb URIs: http://download.proxmox.com/debian/ceph-squid Suites: trixie Components: no-subscription Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg EOF
root@pve03:~# pve8to9
Aucune erreurs (Failures) ou Warnings ne doit apparaitre.
root@pve03:~# apt update root@pve03:~# apt dist-upgrade
Durant le procésus, il y aura plusieurs questions:
| Question | réponse | Explication |
|---|---|---|
| /etc/issue | Non | Il s'agit du fichier qui est affiché sur la console (physique) du host… j'aime bien la version de proxmox 8 (elle serait remplacé par la version “standard” de debian) |
| Redémarrage des services | Oui | |
| /etc/lvm/lvm.conf | Oui | on peut mettre a jour le fichier de config de lvm |
root@pve03:~# pve8to9 root@pve03:~# reboot now
Il s'agit d'un outil fort intéréssant
root@pve03:~# bash -c "$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)"