Proxmox kernel jump¶
Procedimiento para upgrade de kernel mayor en nodos Proxmox (e.g. salto
6.17 → 7.0.2-4-pve ocurrido el 2026-05-16). El gotcha grande es el reboot
del nodo con VMs grandes — puede quedarse colgado >10 minutos en shutdown.
Lecciones aprendidas 2026-05-16
Reboot de pmx-50 con VM 208 viva quedó atascado en "Stopping
pve-guests..." durante >10min. Causa probable: timeout shutdown
insuficiente para el stack Docker grande. Hubo que power-cycle físico.
A partir de ahora: parar VM 208 graceful ANTES de reboot del host.
Pre-flight¶
```bash
Ver kernel actual y el instalado¶
ssh pmx-50 'uname -r; ls /boot/vmlinuz-* | sort'
Confirmar que el nuevo kernel ya está en /boot¶
(el upgrade apt full-upgrade deja el binario pero requiere reboot)¶
```
Snapshot ZFS protector antes de tocar nada:
bash
ssh pmx-50 'zfs snapshot zfs-ha/ROOT/pve-1@pre-kernel-$(date +%Y%m%d)'
Lista de workloads críticos a apagar gracefully:
- VM 208 (Docker hub, 40+ containers).
- VM 171 (Home Assistant — puede tardar 1-2min en flush).
- LXCs Caddy 270/271: dejarlos; HA cubre la caída de uno.
- LXC 186 (PBS) si el reboot es en pmx-50 (donde vive PBS).
Procedimiento¶
1. Migrar / detener workloads críticos¶
```bash
Stop graceful VM 208 (espera hasta 5min)¶
ssh pmx-50 'qm stop 208 --timeout 300'
Verificar¶
ssh pmx-50 'qm status 208' # debe decir "stopped" ```
Para Home Assistant igual:
bash
ssh pmx-50 'qm stop 171 --timeout 180'
2. Snapshot de configs PVE (por si el kernel nuevo rompe algo)¶
bash
ssh pmx-50 'tar czf /root/etc-pve-pre-kernel-$(date +%Y%m%d).tgz /etc/pve'
3. Reboot¶
bash
ssh pmx-50 'systemctl reboot'
Esperar 2-3 minutos. Monitorizar:
```bash
Desde la Mac o pmx-51¶
while ! ssh -o ConnectTimeout=3 pmx-50 'uname -r' 2>/dev/null; do echo "waiting..." sleep 5 done echo "pmx-50 back up" ```
4. Post-boot checks¶
bash
ssh pmx-50 'uname -r' # nuevo kernel
ssh pmx-50 'zpool status' # ZFS healthy
ssh pmx-50 'pvecm status' # cluster quorum
ssh pmx-50 'systemctl --failed' # nada roto
ssh pmx-50 'journalctl -k -p err -b' # errores kernel
5. Arrancar workloads¶
bash
ssh pmx-50 'qm start 208'
ssh pmx-50 'qm start 171'
Verificar VM 208:
bash
sleep 60 # dale tiempo a Docker
ssh monxas@192.168.0.XXX 'docker ps --format "{{.Names}}: {{.Status}}" | head -20'
Si el reboot se queda atascado¶
Síntoma: SSH al host muere, ping responde pero ningún servicio levanta tras 10min.
```bash
Probar reset suave vía IPMI/iLO si existe¶
pmx-50 mini-PC NO tiene IPMI → power cycle físico¶
```
Pasos físicos:
- Mantener power button 10s para force-off.
- Esperar 5s.
- Power on.
Tras volver:
bash
ssh pmx-50 'zpool status' # ZFS scrub si reporta CKSUM errors
ssh pmx-50 'journalctl -b -1 -p err' # logs del boot anterior
Rollback (si el kernel nuevo rompe algo crítico)¶
Proxmox mantiene los últimos 2 kernels en /boot. Para arrancar con el viejo:
```bash
Lista kernels disponibles¶
ssh pmx-50 'proxmox-boot-tool kernel list'
Fijar el anterior como default¶
ssh pmx-50 'proxmox-boot-tool kernel pin 6.17.0-X-pve'
Reboot¶
ssh pmx-50 'systemctl reboot' ```
Plan futuro¶
- IP-KVM USB (TinyPilot o similar) por nodo: evita el viaje al armario para power-cycle. Pendiente compra.
- Ansible playbook
kernel-upgrade.ymlque automatice los pasos 1-2-3-5. Aún no escrito (parte de F2).