The Proxmox VE 8 to 9 upgrade is an officially supported in-place upgrade: get every node to 8.4.1+, run pve8to9 --full, resolve every failure and review each applicable warning, take tested external backups, verify the Trixie repositories, then apt dist-upgrade and reboot. Today it lands you on 9.2 (kernel 7.0). PVE 8 support ended 2026-08.

Contents
By LK Wood IV · Published 2026-06-17 · Updated 2026-10-11 · ~10 min read · St. Louis County, MO
Proxmox VE 9 has been out since August 2025. The release checked on September 26, 2026 is 9.2, built on Debian 13.5 “Trixie” with Linux kernel 7.0. It is what the Trixie repositories supply.
Upgrading Proxmox 8 to 9 in place is officially supported. It is also a major version jump. It ships breaking changes that can leave a node off the network or refusing to boot if you walk in unprepared.
The support deadline has passed. Proxmox VE 8’s end of standard support was 2026-08, and its Debian 12 “Bookworm” base carries a 2026-07 end date in Proxmox’s lifecycle table.
This is the pre-flight guide. It covers what to check before you start, the gotchas most likely to bite, and the commands themselves. It is built from Proxmox’s official Upgrade_from_8_to_9 documentation and from issues the community has reported. The mechanism is routine. The preparation is the whole job.
Back up first, always. Proxmox’s own guidance is blunt: “A valid and tested backup is always required before starting the upgrade process.” If you take one thing from this page, take that.
Upgrade planning overview
This 68-second original animation maps the preparation and upgrade sequence from Proxmox’s official guide.
Video transcript
- 0:00–0:05 — Plan the upgrade. Proxmox VE 8 to 9 upgrade planning overview. This original animation explains the preparation sequence.
- 0:05–0:13 — Start current. Start with every node fully updated to Proxmox VE 8.4, with
pve-managerversion 8.4.1 or later. - 0:13–0:21 — Make recovery possible. Verify external guest backups. Keep IPMI or physical console access, or use SSH inside
tmuxorscreen. Do not rely on the web interface console. - 0:21–0:30 — Run the full preflight. Run
pve8to9 --full. Stop on failures, act on every warning that applies, and rerun the checker after each fix. The checker reports; it does not perform the upgrade. - 0:30–0:38 — Protect cluster state. On a cluster, move guests away, upgrade one node at a time, and keep quorum. Hyperconverged Ceph must be on Squid 19 before the Proxmox upgrade.
- 0:38–0:47 — Switch repositories deliberately. Change the Debian and Proxmox repositories from Bookworm to Trixie. Run
apt updateandapt policy, then continue only when there are no errors and only the intended repositories appear. - 0:47–0:54 — Stop on a removal conflict. Stop if APT wants to remove the
proxmox-vepackage. Repair the repository or package conflict before continuing. - 0:54–1:01 — Upgrade with the prompts in view. Run
apt dist-upgrade. Read each configuration-file prompt and choose deliberately instead of accepting every default. - 1:01–1:08 — Check, reboot, verify. Rerun
pve8to9, reboot, then verify the Proxmox version, storage, network, services, and guests. The full guide covers the gotchas and recovery paths.
The short version
- Get every node to PVE 8.4.1 or later first.
- Run
pve8to9 --full. Resolve every failure and act on every warning that applies to the node before touching repositories. - Back up all VMs and containers to external storage, preserve the host configuration, test a restore, and make sure you have IPMI or physical console access.
- Switch repositories from
bookwormtotrixie. Inspectapt updateandapt policybeforeapt dist-upgrade. Reboot into the new kernel (7.0 on the current 9.2). - On a cluster, go one node at a time and keep quorum. Move Ceph to Squid first.
- Expect possible NIC renames and LVM autoactivation changes. Handle both before you reboot.
What you are upgrading to
When you point your repositories at Trixie and run apt dist-upgrade, APT installs the current Proxmox VE 9 packages. You do not get to choose 9.0. As checked September 26, 2026, that means Proxmox VE 9.2 (released May 21, 2026) instead of the original 9.0 from August 2025. The stack underneath you becomes:
- Debian 13.5 “Trixie” and Linux kernel 7.0 (up from the 6.14 that shipped with 9.0)
- QEMU 11.0, LXC 7.0, ZFS 2.4
- Ceph Tentacle 20.2 available as a stable option, with Squid 19.2 still available (you still upgrade existing Ceph to Squid before the PVE jump — see the cluster section)
The headline 9.2 additions over 9.0 are a dynamic load balancer for HA-managed guests that uses live CPU/RAM utilization while respecting your HA rules, native WireGuard and BGP in the SDN stack, and custom CPU model management in the web UI.
None of this changes the procedure. It does mean you jump straight to the current release. The newer kernel is also what drives the NIC-rename and PCI-passthrough gotchas further down.
Two ways to move from 8 to 9
Proxmox’s wiki (read 2026-10-10) lists two paths:
- In-place: update to the latest 8.4, switch the repositories to Trixie, and run
apt dist-upgrade. This page covers it. - Fresh install: back up every guest to external storage, back up
/etc(especially/etc/pve,/etc/passwd,/etc/network/interfacesand/etc/resolv.conf), install the latest 9.x from the ISO, rebuild the cluster if you had one, then restore/etc/pve/storage.cfg, the firewall configuration and the guests. The ISO install erases the host’s existing data.
The wiki presents the fresh install as the path for new hardware.
Before you touch anything
The prerequisites from the official guide:
- Be on PVE 8.4.1+ on every node. The
pve8to9checklist ships in the latest 8.4 packages. - Rehearse it. Proxmox suggests installing PVE 8.4 on test hardware or in a VM, updating it to the latest 8.4 minor version, copying over the relevant configuration, and running the upgrade there first.
- Check third-party sources. Custom packages and third-party repositories must also work with Debian Trixie.
- Tested backups of every guest on external storage. Also copy the host configuration needed for a fresh install:
/etc/pve,/etc/passwd,/etc/network/interfaces,/etc/resolv.conf, and any custom configuration. Test a guest restore before the upgrade. - At least 5 GB free on the root filesystem (10+ GB recommended) for the package transition.
- Console access that isn’t the web GUI. Use IPMI/iKVM or a physical console, or SSH inside
tmux/screen— never the GUI’s noVNC console, which dies with the services mid-upgrade. - Ceph users: upgrade Ceph to 19.2 Squid before upgrading Proxmox.
- Co-installed Proxmox Backup Server: bring PBS to the latest 3.4 release, run
pbs3to4 --full, and read the PBS 3-to-4 guide. Proxmox says a co-installed PVE/PBS system can upgrade both in one go by synchronizing the APT repository-change steps. Do not upgrade PBS first as a separate major-version step.
Run the checklist: pve8to9 --full
Before changing a single repository line, run:
pve8to9 --full
It flags common incompatibilities in repository state, LVM, boot configuration and known package conflicts. It does not fix anything for you. Resolve every failure. Read every warning or notice, apply its documented fix when it matches the node, and run the checker again.
A remaining notice can describe a condition you deliberately reviewed. The requirement is no unresolved failure and no ignored applicable warning. A cosmetically empty report is not the goal.
The pve8to9 upgrade checklist
pve8to9 without a flag runs the quick checks. Proxmox says to run pve8to9 --full at least once before the upgrade, and to rerun the script after each fix and again after apt dist-upgrade. The wiki’s “Checklist issues” section covers two findings you are likely to see:
proxmox-vepackage is too old. Confirm the repositories still point at PVE 8.x on Bookworm, then runapt updateandapt dist-upgradeto reach the latest 8.4.- LVM or LVM-thin guest volumes with autoactivation enabled. The script suggests the
pve-lvm-disable-autoactivationmigration described in the next section.
Its suggestions can also include removing the systemd-boot meta-package, covered under boot changes below.
The gotchas most likely to bite
These are the changes most likely to cause a bad day. Most are easy to handle if you handle them before the reboot.
LVM autoactivation is now off by default
On Proxmox 9, LVM autoactivation is disabled by default for new logical volumes on LVM and LVM-thin storage. Existing volumes keep their old behavior. The change avoids activation failures on shared LVM storage such as iSCSI or Fibre Channel.
Proxmox provides /usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation. Running it is strongly recommended for shared LVM and optional for local-only storage.
Do not run lvconvert --repair as routine preparation. The official guide gives lvconvert --repair pve/data only when boot reports the exact failure Check of pool pve/data failed (status:64). Manual repair required!; Proxmox says that failure’s cause is still under investigation.
Network interfaces can get renamed
The newer kernel can recognize additional NIC hardware features, which changes the predictable interface name. If your vmbr0 bridge points at the old name, the host boots with no network.
On a PVE 8 node, you can pin a stable name with Proxmox’s manual systemd .link method. The steps:
- Match the physical NIC by MAC address and
Type=ether. - Assign a non-conflicting
en...name. - Update
/etc/network/interfaces. - Run
update-initramfs -u -k alland reboot. - Confirm networking before the major upgrade.
PVE 9 also documents pve-network-interface-pinning. It does not keep the current names. Its default generated names are nic1, nic2, and so on. It writes .new configuration files for review, does not update Datacenter firewall references in /etc/pve/firewall/cluster.fw, and requires a reboot. Use that workflow only when the command is installed and you intend to adopt its generated names.
If you run a Ceph Full Mesh with post-up /usr/bin/systemctl restart frr.service, that line will deadlock on 9. The wiki’s replacement is a conditional restart:
post-up /usr/bin/systemctl is-active --quiet frr.service && /usr/bin/systemctl restart frr.service || true
If the host is already stuck, boot the PVE ISO’s Rescue Boot from the Advanced menu and edit /etc/network/interfaces.
Boot and systemd changes
- Remove the
systemd-bootmeta-package whereproxmox-boot-toolmanages booting, ifpve8to9suggests it. Trixie splitssystemd-bootintosystemd-boot-efi,systemd-boot-toolsand a meta-package that changes the bootloader configuration automatically. - GRUB on LVM in UEFI mode can fail to install; the fix is
[ -d /sys/firmware/efi ] && apt install grub-efi-amd64. /etc/sysctl.confis no longer honored by systemd-sysctl. Move any custom kernel tunables into/etc/sysctl.d/<NN>-name.conf. The wiki notes this affects EVPN exit-noderp_filtersettings and IP forwarding./tmpis now a tmpfs on Debian Trixie, up to 50% of memory, and files in/tmpand/var/tmpare cleaned regularly while the system runs. Do not keep anything you need there.- VM memory can look higher. PVE 9 counts VM memory overhead, so usage may read above 100%. A new “Host memory usage” field shows the host’s view.
Containers, passthrough, and migration
- cgroup v1 is removed. Containers running systemd 230 or older (including CentOS 7 and Ubuntu 16.04) won’t start — migrate those guests first.
- PCI passthrough can break on the newer kernel (first widely reported on 6.14; the current 9.2 ships kernel 7.0). If a passthrough VM misbehaves, the known workaround is pinning an older kernel until it’s resolved.
- Live migration between different CPU vendors (Intel↔AMD) can leave guests unresponsive — plan maintenance windows accordingly.
- NVIDIA vGPU compatibility is a matrix, not a minimum-driver rule. For a PVE 9.2 kernel 7 host, choose the exact PVE/kernel row in Proxmox’s current NVIDIA vGPU compatibility table and use its matching vGPU branch and host driver. Veeam is incompatible with QEMU machine version ≥10.0.
Known failure after upgrading: a Windows VM that won’t boot. Since the kernel-7.0 rollout on 9.2, Windows guests running SeaBIOS with MBR disks have been reported failing with
0xc0000001, and OVMF guests dropping to the UEFI boot menu. If that’s where you’ve landed, don’t reinstall anything — the signature-by-signature fixes (kernel pin, boot-path repair, UEFI conversion) are in Windows VM won’t boot after the Proxmox 9 upgrade.
Stop, continue, or recover
This is the decision point before apt dist-upgrade. The signals and recovery commands below come from Proxmox’s official 8-to-9 guide, not from a generic Debian upgrade recipe.
| Signal | Safe next action |
|---|---|
The node is below PVE 8.4.1, or pve8to9 --full reports a failure | Stop. Fully update PVE 8, fix each failure, and rerun the checker. |
| The checker reports a warning or notice | Read its full text, decide whether it applies to this node, complete the documented action when it does, and rerun the checker. Do not ignore it merely to reach the package step. |
apt update reports an error, or apt policy does not show a valid Trixie Proxmox VE candidate | Stop. Correct the Debian, Proxmox, and applicable Ceph/PBS repository definitions; remove stale Bookworm entries; rerun both checks. |
pve-apt-hook says APT is attempting to remove the proxmox-ve meta-package | Stop. The official guide identifies a missing or misconfigured Proxmox repository as the cause. Repair the repositories; do not remove or bypass the hook. |
| A network interruption leaves the package transaction incomplete | Restore connectivity and confirm the repositories are correct, then use the guide’s apt -f install recovery before continuing. |
apt dist-upgrade completes | Rerun pve8to9, reboot, then verify the PVE version, storage, network, services, and guests before moving to another cluster node. |
| The upgraded host does not boot | Use Proxmox’s GRUB recovery procedure when that matches the failure. Otherwise, the documented clean route is a fresh PVE 9 installation followed by restore from good external guest backups and the host configuration you saved. It is a recovery path with no in-place rollback guarantee. |
The upgrade itself
Once pve8to9 --full has no unresolved failure and you have handled every applicable warning above:
Migrate guests off the node you are about to upgrade (on a cluster). Proxmox says migrating from an older to a newer version works. Migrating from newer to older may work but is unsupported.
Update PVE 8 to the latest 8.4 and confirm the version:
apt update apt dist-upgrade pveversionpveversionshould report 8.4.1 or newer. With hyperconverged Ceph,ceph --versionshould report Squid (19).Point repositories at Trixie. Switch
bookwormtotrixieacross your APT sources and the Proxmox repository. The deb822.sourcesformat is the one Proxmox shows for 9. Update the Ceph repositories to Squid/trixie if applicable. Remove or disable the old Bookworm entries. The commands are in the next section.On a host with PBS installed alongside PVE, follow the PBS guide and switch its repository in this same stage, after both
pve8to9 --fullandpbs3to4 --fullhave been reviewed.Audit the repositories before upgrading:
apt update apt policyContinue only when
apt updatehas no repository errors andapt policyshows the expected Trixie/PVE package candidates.Upgrade:
apt dist-upgradeAnswer the config-file prompts deliberately. The prompt choices are listed below.
Rerun
pve8to9, then reboot into the new kernel. The reboot is required (the current 9.2 ships kernel 7.0). Reboot even if you were already running a 6.x kernel on 8, because the 9 kernel is rebuilt against the new compiler and ABI. Then confirm:pveversion # should report 9.xHard-refresh the web UI (Ctrl+Shift+R) so you’re not staring at a cached 8.x interface.
Repository commands from the official guide
These are the commands and files on Proxmox’s wiki page (revision last edited 2026-09-17, read 2026-10-10). Run them on the node, from the console, not the web GUI.
Switch the Debian base repositories, then comment out any remaining Bookworm-specific lines:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.list
For the no-subscription repository, create /etc/apt/sources.list.d/proxmox.sources:
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
Then remove the PVE 8 no-subscription entry from sources.list, pve-install-repo.list or any other .list file, and verify with apt update and apt policy.
With a subscription, the enterprise file is /etc/apt/sources.list.d/pve-enterprise.sources with URIs: https://enterprise.proxmox.com/debian/pve, Suites: trixie, Components: pve-enterprise and the same Signed-By line. Remove pve-enterprise.list afterwards.
For hyperconverged Ceph, /etc/apt/sources.list.d/ceph.sources uses Suites: trixie with the Squid URI. That is http://download.proxmox.com/debian/ceph-squid and Components: no-subscription, or https://enterprise.proxmox.com/debian/ceph-squid and Components: enterprise. Remove ceph.list afterwards, and remove any backports line. Proxmox says the upgrade has not been tested with backports packages installed. A 401 error on an enterprise repository means the subscription needs a refresh in the web UI or with pvesubscription update --force.
Config-file prompts during dist-upgrade
The run takes anywhere from under 5 minutes on a fast SSD to 60 minutes or more on a slow spinning disk. Expect prompts. Proxmox’s recommendations:
| File | Choice |
|---|---|
/etc/issue | Keep the current version |
/etc/lvm/lvm.conf | Install the maintainer’s version if you made no custom changes |
/etc/ssh/sshd_config | The maintainer’s version is generally safe. It replaces the deprecated ChallengeResponseAuthentication option. Inspect other changes |
/etc/default/grub | Keep the current version unless you know you need the new one. Review relevant changes |
/etc/chrony/chrony.conf | Install the maintainer’s version if unchanged. Move local changes into conf.d or sources.d |
You may also see keyboard-layout and apt-listchanges prompts (press q). The default answer to the service-restart question is fine.
After the reboot
- On a cluster, confirm every node runs the latest packages. If one does not, continue with the next node and start over at the prerequisites.
- Optionally run
apt modernize-sources. Answernfirst to preview the changes, then rerun it and answerY. The old.listfiles stay as.list.bak, and you can delete them once the new files check out. - Journald may log kernel audit messages during the upgrade. Disable that beforehand with
systemctl disable --now systemd-journald-audit.socket, or wait: the messages stop after the reboot.
If you run a cluster
- All nodes on 8.4.1+ before you start.
- One node at a time, maintaining quorum throughout. Upgrade, reboot, confirm it rejoins healthy, then move on.
- Ceph → 19.2 Squid first for hyperconverged setups.
- HA groups are deprecated in favor of HA rules; the migration happens automatically once every node is on 9.0. If HA acts up, check
journalctl -eu pve-ha-crm.
If you lean on community automation for cluster nodes, give the helper-scripts safety guide a read first — running anything as root mid-migration deserves the same caution.
Verdict: upgrade now, or wait?
If your Proxmox 8 setup is doing its job and you don’t need anything specific in 9, waiting for a point release was a reasonable conservative choice while PVE 8 remained supported. PVE 8’s end of standard support was 2026-08, and that date has passed. The 9.x line is where supported installs now live. 9.2 was the current release when this page was checked September 26, 2026.
When you do upgrade, preparation decides how it goes. That means tested external backups, saved host configuration, resolved pve8to9 --full findings, pinned NIC names, real console access, and a read of the official release notes for your hardware.
There is no blanket rollback switch. Your recovery plan is the documented repair path for the failure you see, or a fresh PVE 9 install and restore from the backups you verified before starting.
Sources
- Proxmox VE official upgrade guide: Upgrade from 8 to 9 (revision last edited 2026-09-17; commands, repository files, config-file prompts and known issues re-read 2026-10-10)
- Proxmox VE roadmap / 9.x release notes
- Proxmox VE support lifecycle and end-of-life dates (FAQ)
- Proxmox VE backup and restore documentation
- Proxmox VE: Recover From Grub Failure
- Proxmox Backup Server official upgrade guide — Upgrade from 3 to 4
- Proxmox VE network device-name overrides
- Proxmox VE NVIDIA vGPU compatibility matrix
- Proxmox VE 9.2 release announcement (Debian 13.5, kernel 7.0, dynamic load balancer, WireGuard SDN)
- Proxmox forum — PVE 8 to 9 in-place upgrade reports
Frequently asked questions
Is the in-place Proxmox VE 8 to 9 upgrade safe?
--full, resolve every failure, review and act on each applicable warning, and have tested external backups before you start. LVM autoactivation, NIC renaming, and the new kernel can still leave a node unbootable or off the network if you do not prepare for them.What are the biggest breaking changes in Proxmox VE 9?
--full to see which apply to your node.Will my network interface names change after upgrading to Proxmox 9?
Do I need to back up before the Proxmox 8 to 9 upgrade?
How do I upgrade a Proxmox cluster from 8 to 9?
Should I upgrade to Proxmox 9 right now or wait?
--full, address possible NIC renames, ensure console access, and read the official release notes for your exact storage, networking, passthrough, and third-party packages.When does Proxmox VE 8 reach end of life?
Which Proxmox VE 9 version do I get when I upgrade, and what is new?
Sources and corrections
- Last updated
- Methodology
- See our methodology for research and review standards.
- Update log
- 2026-10-11 — Added an original 68-second animated planning overview, English captions, a visible transcript, and VideoObject metadata. Every scene maps to the official Upgrade_from_8_to_9 guide revision 12639; the animation does not depict a recorded upgrade or add a hands-on outcome claim.
- 2026-10-10 — Added the exact repository-switch commands and deb822 source files, the config-file prompt choices, the apt dist-upgrade duration note, test-first and fresh-install paths, and the post-upgrade steps, all checked against Proxmox’s Upgrade_from_8_to_9 wiki page (revision last edited 2026-09-17, read 2026-10-10). Split long paragraphs and trimmed repeated keyword phrasing in the body. No version numbers or dates elsewhere on the page changed.
- 2026-08-25 — Added the known-failure callout for Windows guests that stop booting after the upgrade (0xc0000001 on SeaBIOS/MBR, OVMF boot-menu drops — reported on the forum and r/Proxmox since the 9.2 kernel-7.0 rollout), linking the new troubleshooting sibling articles/proxmox-9-windows-vm-not-booting-2026 from the guest-gotchas section and related:. That page owns the post-upgrade boot-failure diagnosis; this guide keeps owning the upgrade procedure.
- 2026-08-14 — Re-tensed every Proxmox VE 8 end-of-life reference. The page was written while 2026-08 was a future deadline and framed it that way throughout – ‘wait a few weeks, not indefinitely’, ‘plenty of runway … before the cutoff’, ‘upgrade searches are climbing through the summer’, and a support-clock graphic whose you-are-here marker read ‘Jul 2026’ above a footer promising ‘a hard deadline a few weeks out’. Read on 2026-08-14 that deadline is now, so the advice to keep waiting had inverted into telling readers to stay on an unsupported hypervisor. Proxmox’s official support lifecycle table (pve.proxmox.com/wiki/FAQ, retrieved 2026-08-14) lists VE 8 as Debian 12 Bookworm, first release 2023-06, Debian EOL 2026-07, Proxmox EOL 2026-08. The EOL date itself was correct and is unchanged; only the tense, the wait-it-out advice, and the graphic’s now-marker moved.
- Corrections
- Spotted an error or a stale number? Email contact@techfuelhq.com. Confirmed corrections are recorded here with the date and change.