Proxmox VE 8 to 9 Upgrade Guide

This guide provides detailed instructions for upgrading Proxmox VE 8 servers to Proxmox VE 9, based on a successful production upgrade.

Prerequisites

Before starting the upgrade, ensure:

  • Server backups are completed
  • All VMs and containers are backed up
  • No critical workloads are running during upgrade window
  • Console/IPMI access available in case of issues

Step 1: Run Pre-upgrade Check

First, run the comprehensive upgrade checker to identify any issues:

pve8to9 --full

This will check 45+ components and identify any warnings or failures that need resolution before proceeding.

Step 2: Resolve Pre-upgrade Issues

Based on the checker output, resolve common issues:

Update Available Packages

apt update && apt upgrade -y

Fix GRUB Bootloader Configuration

If you see bootloader warnings about removable EFI boot:

echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections -v
apt install --reinstall grub-efi-amd64

Remove Conflicting systemd-boot Package

apt remove systemd-boot

Install Intel Microcode (Intel systems only)

Enable non-free-firmware repository and install microcode:

# Update sources.list to include non-free-firmware
echo 'deb http://deb.debian.org/debian bookworm main contrib non-free-firmware' > /etc/apt/sources.list
echo 'deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware' >> /etc/apt/sources.list
echo 'deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware' >> /etc/apt/sources.list

apt update
apt install intel-microcode

Step 3: Verify All Issues Resolved

Re-run the pre-upgrade checker to confirm all issues are fixed:

pve8to9 --full

You should see: TOTAL: 45, PASSED: 38, SKIPPED: 5, WARNINGS: 0, FAILURES: 0

Step 4: Configure Proxmox VE 9 Repositories

For No-Subscription Environments

Create the new Proxmox VE 9 repository in deb822 format:

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

For Enterprise Environments

cat > /etc/apt/sources.list.d/pve-enterprise.sources << 'EOF'
Types: deb
URIs: https://enterprise.proxmox.com/debian/pve
Suites: trixie
Components: pve-enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

Step 5: Remove Old Repository Files

Clean up old repository configurations to avoid conflicts:

rm -f /etc/apt/sources.list.d/pve-install-repo.list
rm -f /etc/apt/sources.list.d/pve-enterprise.list

Step 6: Update Package Lists and Verify

apt update
apt policy

Verify that the output shows only the desired repositories and no conflicts.

Step 7: Perform the Upgrade

Execute the distribution upgrade:

apt dist-upgrade

Expected upgrade scope:

  • ~595 packages to be upgraded
  • ~142 new packages to be installed
  • ~59 packages to be removed
  • ~1.2 GB additional disk space needed

The upgrade process typically takes 15-45 minutes depending on system specifications and network speed.

Step 8: Post-Upgrade Steps

Reboot the System

reboot

Verify Upgrade Success

After reboot, check the version:

pveversion

Should show Proxmox VE 9.x.x

Check System Status

systemctl status pve-cluster pveproxy pvedaemon pvestatd

Verify Storage and Services

pvesm status
pve-firewall status

Check Running VMs and Containers

qm list
pct list

Convert old sources.list format to modern deb822 format:

apt modernize-sources

This will:

  • Convert /etc/apt/sources.list to /etc/apt/sources.list.d/debian.sources
  • Add proper GPG signatures automatically
  • Create backup files (.bak) for safety
  • Modernize other .list files to deb822 format

After modernization, clean up any unused enterprise repositories if you don’t have a subscription:

# Remove enterprise repo if you get 401 Unauthorized errors
rm -f /etc/apt/sources.list.d/pve-enterprise.sources
apt update

Final System Health Check

# Check system resources
free -h
df -h /

# Verify uptime and kernel
uptime
uname -r

# Check for any service issues
journalctl --since "1 hour ago" --priority=err

Key Changes in Proxmox VE 9

  • Debian 13 (Trixie) base system
  • Ceph 19.2.3 integration
  • QEMU 10.0.2 hypervisor
  • Linux Kernel 6.14.x with latest hardware support
  • Updated networking stack with enhanced performance
  • Enhanced security features and hardening
  • Modern deb822 repository format (use apt modernize-sources)
  • Improved container and VM management
  • Better resource monitoring and statistics

Troubleshooting

Common Issues

  1. Repository Conflicts: Ensure old .list files are removed
  2. Package Conflicts: Run apt autoremove after upgrade
  3. Boot Issues: Verify GRUB configuration is correct
  4. Service Failures: Check logs with journalctl -xe
  5. 401 Unauthorized Errors: Remove enterprise repository if no subscription
  6. Sources Modernization Fails: Manually create .sources files if needed
  7. Web Interface Inaccessible: Check pveproxy service and SSL certificates
  8. Storage Issues: Verify NFS/CIFS mounts and permissions

Emergency Recovery

  • Boot from Proxmox VE installation media
  • Mount existing system and chroot
  • Restore from backups if necessary

Post-Upgrade Verification Checklist

Core System Verification

  • Version Check: pveversion shows Proxmox VE 9.x.x
  • Kernel: uname -r shows 6.14.x-x-pve or newer
  • Services: All core services running (systemctl status pve-cluster pveproxy pvedaemon pvestatd)
  • Storage: All storage pools active (pvesm status)
  • Firewall: Status shows “disabled/running” or as configured (pve-firewall status)
  • Memory/Disk: Adequate free resources (free -h && df -h /)

Repository Modernization

  • Sources Modernized: Run apt modernize-sources successfully
  • Backup Created: Original .list files backed up as .bak
  • Enterprise Repo: Removed if no subscription to avoid 401 errors
  • Update Works: apt update runs without errors

Application Testing

  • Web Interface: Accessible at https://your-server:8006
  • VM Management: Can start/stop VMs (qm start/stop VMID)
  • Container Management: LXC containers function (pct start/stop VMID)
  • Storage Access: Can create/delete disk images
  • Network: VMs/containers have network connectivity
  • Backup Jobs: Scheduled backups continue to work
  • Cluster: All nodes communicate (if clustered: pvecm status)
  • Console Access: VNC/SPICE consoles work for VMs/containers

Performance and Monitoring

  • System Load: Reasonable CPU/memory usage
  • Error Logs: No critical errors (journalctl --since "1 hour ago" --priority=err)
  • Hardware: Intel microcode loaded (Intel systems)
  • GPU Passthrough: Still functional if previously configured
  • Monitoring: Graphs and statistics updating properly

Notes

  • This upgrade path moves from Debian 12 (Bookworm) to Debian 13 (Trixie)
  • Ensure adequate downtime window for mission-critical environments
  • Consider testing on non-production systems first
  • Keep rescue media and backups readily available

Additional Resources


Last updated: October 16, 2025 Tested on: Proxmox VE 8.4.x → 9.0.x