Actualizar Proxmox 8 a la versión 9

En este post, os vamos a mostrar cómo hemos actualizado Proxmox 8 a la la versión 9.

Antes de nada, y, por si algo fallara, es conveniente que tengamos copia de seguridad de nuestras máquinas y contenedores. En nuestro caso, ésto se cumple porque cada fin de semana se realizan copias de seguridad de todas las máquinas virtuales y contenedores en el NAS. Y, por si el NAS fallara en algún momento, por seguridad, al realizarse las copias de seguridad, también se suben a la nube.

También tendremos que parar las máquinas virtuales y contenedores al realizar el proceso de actualización. Así que, si tenéis alguna máquina que deba estar corriendo, movedla a otro de los nodos del cluster mientras realizáis la actualización.

Para empezar, vamos a actualizar los paquetes de nuestra distribución:

sudo apt update && sudo apt upgrade && sudo apt dist-upgrade

Ésto lo hacemos para asegurarnos de que todos los paquetes de Proxmox se encuentran actualizados a las últimas versiones en la versión 8.

Una vez actualizados, los paquetes del sistema vamos a ejecutar pve8to9.

pve8to9 es un pequeño programa incluido en el sistema que debemos ejecutar antes de actualizar Proxmox de la versión 8 a la 9 porque nos mostrará sugerencias y advertencias sobre posibles problemas antes, durante y después del proceso de actualización.

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-17-pve' is considered suitable for upgrade.

= CHECKING CLUSTER HEALTH/SETTINGS =

SKIP: standalone node.

= 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.
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..
WARN: 1 running guest(s) detected - consider migrating or stopping them.
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 'pve3' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.8.9' 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 RSA)
PASS: Certificate 'pve-ssl.pem' passed Debian Busters (and newer) security level for TLS connections (2048 >= 2048 RSA)
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...
SKIP: System booted in legacy-mode - no need for additional packages
INFO: Check for dkms modules...
SKIP: could not get dkms status
INFO: Check for legacy 'filter' or 'group' sections in /etc/pve/notifications.cfg...
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 5.86 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 'intel-microcode' installed.

= SUMMARY =

TOTAL:    41
PASSED:   32
SKIPPED:  6
WARNINGS: 1
FAILURES: 0

ATTENTION: Please check the output for detailed information!

Si hay algún problema, ejecutaremos pve8to9 todas las veces que haga falta mientras solucionamos los problemas que nos indique.

En el ejemplo que os muestro, hay dos cosas que debemos revisar:

La primera es que tenemos una máquina virtual o contenedor que está corriendo:

WARN: 1 running guest(s) detected - consider migrating or stopping them.

En mi caso, se trata de un contenedor:

pct list
VMID       Status     Lock         Name                
100        running                 turnkey-nextcloud 

Lo paramos y listo:

pct stop 100

Una vez parado, observamos el siguiente aviso:

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

¿Qué está pasando?

  • Tenemos almacenamiento LVM / LVM-thin (local-lvm)
  • Algunos volúmenes de invitados (VM/CT) tienen autoactivation = enabled
  • En PVE 8 eso es normal
  • En PVE 9, los volúmenes nuevos ya NO se autoactivarán por defecto

Proxmox nos avisa de que:

Este sistema aún tiene volúmenes antiguos con autoactivation activa

Y añade algo clave 👇

Todos están en almacenamiento local, donde normalmente no causa problemas

¿Qué es “autoactivation” en LVM?

Autoactivation significa que LVM activa los volúmenes lógicos automáticamente al arrancar el host, incluso antes de que Proxmox decida qué VMs arrancar.

Pros

  • Arranque simple
  • Compatible con configuraciones antiguas

Contras (por eso lo cambian en PVE 9)

  • Puede interferir con:
    • HA
    • fencing
    • clustering
    • recuperación tras fallos
  • No es ideal cuando Proxmox quiere controlar cuándo se activan los volúmenes

¿Es un problema ahora mismo?

👉 NO, especialmente en nuestro caso:

  • Están en local-lvm
  • No has estamos usando HA ni cluster compartido
  • Proxmox dice explícitamente que normalmente no causa problemas

Por tanto, podemos ignorar el aviso con tranquilidad.

¿Qué pasará al actualizar a PVE 9?

  • Los volúmenes existentes seguirán funcionando
  • Los nuevos ya no usarán autoactivation
  • Este aviso desaparecerá si ejecutas la migración

¿Qué hace el comando que nos sugieren?

/usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation

Ese script:

  • Desactiva autoactivation solo para volúmenes de invitados
  • No toca:
    • el VG
    • el thin-pool
    • el sistema
  • Es reversible
  • Es el camino “oficial” recomendado

Es importante destacar que la herramienta pve8to9 tan sólo chequea e informa. No realiza cambios. Los cambios tendremos que realizarlos nosotros.

Bien. Pues cuando nos hayamos asegurado de que no hay ningún problema, cambiamos los repositorios de Bookworm a Trixie en el fichero /etc/apt/sources.list:

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

Nosotros utilizamos el repositorio opensource de pve. Así que también tenemos que modificarlo:

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

Si tenéis más repositorios, cambiad también "bookworm" por "trixie" en ellos.

A continuación, realizamos un 'apt update' para asegurarnos de que todos los repositorios están disponibles y ninguno de ellos da error:

sudo apt update
Des:1 http://security.debian.org trixie-security InRelease [43,4 kB]
Des:2 http://ftp.es.debian.org/debian trixie InRelease [140 kB]
Des:3 http://ftp.es.debian.org/debian trixie-updates InRelease [47,3 kB]
Des:4 http://security.debian.org trixie-security/main amd64 Packages [98,2 kB]
Des:5 http://security.debian.org trixie-security/main Translation-en [62,7 kB]          
Des:6 http://security.debian.org trixie-security/non-free-firmware amd64 Packages [544 B]       
Des:7 http://security.debian.org trixie-security/non-free-firmware Translation-en [352 B]   
Des:8 http://ftp.es.debian.org/debian trixie/main amd64 Packages [9.670 kB]                       
Des:9 http://download.zerotier.com/debian/trixie trixie InRelease [20,5 kB]                             
Des:10 http://ftp.es.debian.org/debian trixie/main Translation-es [278 kB]                                 
Des:11 http://download.zerotier.com/debian/trixie trixie/main amd64 Packages [1.119 B]                                                     
Des:12 http://download.proxmox.com/debian/pve trixie InRelease [2.771 B]                                                       
Des:13 http://ftp.es.debian.org/debian trixie/main Translation-en [6.484 kB]           
Des:14 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages [302 kB]
Des:15 http://ftp.es.debian.org/debian trixie/contrib amd64 Packages [53,8 kB]                       
Des:16 http://ftp.es.debian.org/debian trixie/contrib Translation-en [49,6 kB]             
Des:17 http://ftp.es.debian.org/debian trixie/non-free amd64 Packages [100 kB]                   
Des:18 http://ftp.es.debian.org/debian trixie/non-free Translation-en [67,1 kB]            
Des:19 http://ftp.es.debian.org/debian trixie/non-free-firmware amd64 Packages [6.884 B]          
Des:20 http://ftp.es.debian.org/debian trixie/non-free-firmware Translation-en [4.704 B]      
Des:21 http://ftp.es.debian.org/debian trixie-updates/main amd64 Packages [5.412 B]                 
Des:22 http://ftp.es.debian.org/debian trixie-updates/main Translation-en [4.096 B]           
Descargados 17,4 MB en 3s (6.324 kB/s)                                                              
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Se pueden actualizar 804 paquetes. Ejecute «apt list --upgradable» para verlos.

Como vemos que no se ha producido ningún error, procedemos a realizar la actualización de paquetes a a Bookworm:

sudo apt -y upgrade

Cuando termine, realizamos un 'apt -y dist-upgrade':

sudo apt -y dist-upgrade

La actualización tardará un rato más o menos largo dependiendo de la potencia de la máquina.

Durante el proceso, nos pedirá autorización para reemplazar ficheros de configuración o instalar nuevos paquetes.

Si todo va bien, cuando termine, reiniciamos la máquina y habremos actualizado nuestro servidor.

Opcional: Modernizar las fuentes de repositorios de APT

Podemos migrar las fuentes de repositorios existentes al formato recomendado deb822, ejecutando:

sudo apt modernize-sources

Si respondemos "n" a la pregunta que aparece, podremos ver los cambios que haría el comando antes de aplicarlos.
Para aplicar los cambios, simplemente ejecutamos el comando de nuevo y respondemos "Y" cuando se nos pregunte.

El comando también conservará los archivos .list antiguos, añadiéndoles la extensión .bak.
De este modo, tendremos los nuevos archivos .sources y las configuraciones antiguas de los repositorios en archivos .list.bak.

Podemos eliminar esos archivos de copia de seguridad una vez hayamos verificado que todo funciona correctamente con el nuevo formato.

Be the first to comment