A major Proxmox VE upgrade changes the underlying Debian version, the configuration storage layout, and sometimes the format of virtual machine files. Upgrading blindly with apt full-upgrade and no preparation is a reliable way to end up with a cluster with no quorum in the middle of a workday.
What changes when moving from Proxmox VE 8 to 9
Proxmox VE 9 moves to a new Debian release and updates the Linux kernel plus the QEMU, LXC, and ZFS versions. Some settings in /etc/pve/qemu-server/*.conf files and network configuration may need manual fixes after the upgrade. Before touching production, run the upgrade on a test node or a separate VM with a similar setup first.
Preparing the cluster for the upgrade
Before starting, take a snapshot of the cluster configuration and back up critical virtual machines through Proxmox Backup Server. Then run the standard compatibility checker on every node:
pve8to9 --full
The script checks package versions, cluster configuration, storage.cfg, and network bridges, flagging issues as FAIL or WARN. Only start the upgrade once the FAIL list is empty.
How to switch the APT repositories to the new release
Before upgrading packages, replace the Proxmox and Debian repository references in the source files:
| File | Before | After |
|---|---|---|
| /etc/apt/sources.list | bookworm | trixie |
| /etc/apt/sources.list.d/pve-enterprise.list | bookworm | trixie |
| /etc/apt/sources.list.d/ceph.list | quincy/bookworm | squid/trixie |
After editing the files, refresh the package index and make sure there are no repository connection errors:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.list
apt update
In what order should cluster nodes be upgraded
Upgrade the cluster one node at a time so the quorum is never lost, even for a second:
- Move virtual machines off the node being upgraded to its neighbors using live migration or the web interface.
- Disable HA services for the node or put it into maintenance mode.
- Upgrade the packages and reboot the node, wait for it to rejoin the cluster and show a green quorum status.
- Move the virtual machines back onto the upgraded node and move on to the next one.
How to upgrade packages and reboot the node
The actual package installation runs as two commands in a row, and it is worth checking the log for dependency errors between them:
apt full-upgrade
reboot
After the reboot, check the version with pveversion and the status of the pve-cluster, pvedaemon, and corosync services. If the node does not rejoin the cluster within 2-3 minutes, check journalctl -u corosync for a protocol version mismatch.
Rollback plan if the upgrade goes wrong
- If the node fails to boot, pick the previous kernel in the GRUB menu — old kernel versions are not removed automatically during an upgrade.
- If networking breaks, restore the
/etc/network/interfacesfile from the backup taken before the upgrade. - If the package manager hangs mid-operation, run
dpkg --configure -aand repeatapt full-upgrade. - If the node cannot be recovered, redeploy its virtual machines on a healthy node from a PBS backup and remove the failed node from the cluster.
Checklist after upgrading the cluster
The Proxmox VE 8 to 9 upgrade is considered complete once every item below is checked:
- Every node reports the same version in
pveversionoutput. - Cluster quorum is formed and corosync status is green on every node.
- All virtual machines and containers are running and respond to a ping.
- Backup jobs have completed at least once without errors after the upgrade.