Aprende cómo actualizar de Proxmox 8.x a 9.x en Debian 13 Trixie de forma segura y sin sorpresas.


Con la llegada de Debian 13 Trixie, también se abre el camino para la nueva versión de Proxmox VE 9.x. Si ya trabajas con Proxmox 8.x, es importante preparar bien la actualización para garantizar que tus máquinas virtuales y contenedores sigan funcionando sin problemas. En este artículo veremos los pasos recomendados, los cambios más relevantes y cómo usar la herramienta oficial pve8to9 para verificar que todo esté listo antes de dar el salto a la nueva versión.

Requisitos para la actualización

Para hacer la actualización de Proxmox 8.4 con Debian 12 a Proxmox 9.x con Debian 13 es importante tener en cuenta lo siguiente:

  • Actualiza todos los nodos de Proxmox a la última versión de Proxmox VE 8.4.
  • Revisa que la versión de pve-manager sea por lo menos la 8.4.1 y que tu nodo o nodos tengan la configuración correcta de repositorios. Puedes verlo en Interfaz Web - Nodo - Repositorios.
  • El nodo de Proxmox debe de estar en buen estado, no tiene que existir ninguna alerta, ni error para continuar.
  • Es importante que tengas acceso directo al nodo. Lo ideal es tener acceso vía IKVM/IPMI o acceso físico. Por lo general usaremos SSH, pero si algo va mal, será necesario conectar un monitor al nodo o usar algo como nanoKVM.
  • Es recomendable utilizar un multiplexor de terminal como tmux o screen para que la actualización siga adelante incluso si se corta la conexión SSH. Te dejo este artículo que habla sobre el comando screen:
screen: crea diferentes instancias de una terminal en una sola sesión
Este comando permite gestionar sesiones de terminal independientes, facilitando la continuidad de tareas incluso tras cerrar la sesión SSH o el terminal.

Y este otro de tmux:

tmux: parecido a screen, pero mucho más potente
tmux es un multiplexor de terminal similar a screen, pero con mayor flexibilidad y opciones de configuración.
  • Ten copias de seguridad de todas las MV o CTs que estés al 100% seguro de que funciona correctamente.
  • Ten espacio libre en la partición principal, recomiendan que como mínimo deben de haber 5GB libres, si son 10GB mejor.
  • Si tienes más de un nodo, es recomendable mover todas las MVs o CTs a otro nodo. Si sólo tienes uno, es recomendable apagarlas todas.
  • Si usas Ceph, actualiza el clúster a Ceph 19.4 Squid antes de empezar la actualización a Proxmox VE 9.0
  • Si tienes Proxmox Backup Server instalado junto a Proxmox VE debes de tener actualizado de la PBS 3 a PBS 4 para que funcione correctamente.

¡Hora de hacer copias de seguridad! (no, en serio, hazlas)

¡Ni se te ocurra desplazar la página más abajo! ¡Detente! Antes de ponerte manos a la obra con la actualización, es importante tener copias de seguridad de todo.

Haz copias de todas las MVs y CTs y no lo guardes en el mismo nodo, haz copias de seguridad fuera del nodo: en un NAS, USB, disco externo, en un Object Storage, donde sea.

💡
Además prueba también de restaurar esos backups para comprobar que funcionan correctamente. Tener copia de seguridad y que no funcione significa que no tienes copia de seguridad.

Realiza una copia de seguridad del nodo

También es importante guardar lo ficheros de configuración de todo, por eso es importante también respaldar el directorio /etc por completo.

Por SSH haz:

tar -cpzf /root/proxmox-config.tar.gz /etc
💡
Este comando crea un fichero comprimido con toda la configuración del sistema, de esta forma puedes utilizar para restaurar por si todo se va a tomar por el c... 🫢

Recomendaciones de SysAdmin

  • Si tienes hardware muy especifico o raro, es posible que se rompan algunos drivers, Ten en cuenta esto antes de actualizar.
  • Si estás usando ZFS, mira de parar todo.
  • Si usas algo fuera de lo oficial para Proxmox, es posible que tengas problemas.
  • No realices el proceso que hay a continuación un día a la noche, ni tampoco el lunes a primera hora. Mejor hazlo el martes que todo está más tranquilo. No, en serio, planifica seriamente un buen momento para actualizar, teniendo en cuenta que si algo sale mal te vas a tener que quedar muuuuchas horas para arreglar todo el desastre. Prepara café.

Verifica que puedes actualizar

Antes de liarnos con la actualización, tenemos que comprobar que nuestro nodo tiene todo listo para hacer la actualización. Para eso existe un comando propio de Proxmox que comprueba que tu sistema está preparado para la migración de una versión a otra de Proxmox.

pve8to9 --full

Este script revisará todo tu sistema y te mostrará un informa con los problemas de configuración, con paquetes obsoletos e incompatibles y recomendaciones útiles.

Por ejemplo, a mi me ha mostrado lo siguiente

Salida del comando

pve8to9 --full

= 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-14-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: 2
INFO: configured votes - qdevice: 0
INFO: current expected votes: 2
INFO: current total votes: 2
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 'backups' enabled and active.
PASS: storage 'local' enabled and active.
PASS: storage 'local-lvm' 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 'pve' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.1.169' 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 (4096 >= 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...
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...
NOTICE: storage 'local-lvm' 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: 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 36.43 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.
PASS: Found matching CPU microcode package 'amd64-microcode' installed.
mount: /var/lib/lxc/119/rootfs: /dev/mapper/pve-vm--119--disk--0 already mounted on /var/lib/lxc/119/rootfs.
dmesg(1) may have more information after failed mount system call.
mounting container failed
WARN: Failed to load config and mount CT 119 - command 'mount /dev/dm-23 /var/lib/lxc/119/rootfs//' failed: exit code 32

= SUMMARY =

TOTAL: 50
PASSED: 41
SKIPPED: 4
WARNINGS: 2
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.

Al final del todo, muestra un resultado final. Para poder actualizar con seguridad tenemos que corregir todos los errores que aparecen. Los warnings podemos revisarlos con calma y ver si son importantes o no.

Por ejemplo, el error que me estaba dando a mi:

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.

En Debian Trixie el paquete systemd-boot se ha dividido en tres (systemd-boot-efi, systemd-boot-tools y el meta systemd-boot), y este último puede entrar en conflicto con Proxmox, ya que solo en ciertas configuraciones se gestiona el arranque mediante proxmox-boot-tool. Por ello, si el script pve8to9 recomienda desinstalar systemd-boot, se puede hacer sin problema, salvo que se haya instalado manualmente para usarlo como cargador de arranque; en ese caso se mantendrán los paquetes necesarios y el propio script indicará qué acciones tomar antes y después de la actualización.

Así que pare resolver este problema:

apt removee systemd-boot

Y una vez arreglado el error, relanzamos el comando:

pve8to9 --full 

En este punto ya no hay errores en rojo y el warning es por la configuración de un contenedor que no debería de ser un problema. Ahora sí, con esto podemos iniciar la actualización.

Actualizar Proxmox 8.x a Proxmox 9.x

Lo primero de todo, es revisar que está todo actualizado:

apt update
apt full-upgrade
apt autoremove -y

De esta manera nos aseguramos de que tenemos los repositorios actualizados y actualizamos sin romper ningún tipo de dependencia.

💡
Si obtienes actualizaciones del kernel, es importante y muy recomendable hacer un reboot del nodo para que cargue el nuevo kernel.

En este punto, ejecutamos este comando para revisar la versión de Proxmox que tenemos:

$ pveversion

pve-manager/8.4.14/b502d23c55afcba1 (running kernel: 6.8.12-14-pve)

Ahora toca modificar los repositorios de Debian y cambiar bookworm por trixie lo haremos con el comando sed:

sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.list

Y luego añade el nuevo formato de repositorios:

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

Si eres un suertudo y tienes suscripción enterprise ejecuta mejor este:

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

Si tenéis también licencia y usáis Ceph:

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

Ahora si, ha llegado el momento de actualizar paquetes... Os recomiendo utilizar screen para ejecutar este comando, por si te quedas sin conexión de SSH durante la actualización, el comando quede en segundo plano ejecutando.

screen -S ProxmoxUpdate

Y en ese screen ejecutamos:

apt update
apt dist-upgrade
¡La hora del café! O del té, o del zumo, o la de la cervecita, o la del Whiskey, lo que más os guste. Este proceso puede tardar un poco, así que vigiladlo de lejos pero haced otras cosas.

Cuando finalice toda la instalación de paquetes, reiniciamos:

reboot

En un rato, podremos acceder a través de la interfaz web cargando de nuevo Proxmox y revisando que tiene la versión 9.x:

O revisando por CLI:

$ pveversion

pve-manager/9.0.10/deb1ca707ec72a89 (running kernel: 6.14.11-3-pve) 

¡Enhorabuena! Ya tienes Proxmox 9.x y Debian 13, ya puedes dormir feliz!


Más sobre ./voidNull

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación