ZFS snapshot rollback¶
Cómo usar los snapshots ZFS de zfs-ha (pool replicado entre pmx-50 y pmx-51)
para deshacer un cambio destructivo en un LXC o VM.
Rollback es destructivo
zfs rollback borra todos los cambios posteriores al snapshot.
Si dudas, primero zfs clone a un dataset nuevo, inspecciona, y luego decide.
Snapshots existentes¶
Antes del plan de cohesión (2026-05-19) se tomaron snapshots protectores
@pre-cohesion-20260519 en ambos nodos para todos los LXCs/VMs.
Verificado 2026-08-01 — no des por hecho ni el nodo ni la existencia
- Estos snapshots tienen ya ~2.5 meses, muy por encima de los "30 días" que la sección de Limpieza más abajo sugiere como umbral — candidatos a purgar salvo que sigan sirviendo de punto fijo.
subvol-200-disk-0@pre-cohesion-20260519vive enpmx-51(nodoproxmox2), no enpmx-50— LXC 200 (n8n) corre hoy enpmx-51, no enpmx-50como sugieren los ejemplos de abajo. Comprobar siempre conpct list/qm listen ambos nodos antes de lanzar el rollback (ver sección "Replicación entre nodos").vm-208-disk-0@pre-cohesion-20260519ya no existe en ninguno de los dos nodos (los discosvm-208-disk-0/vm-208-disk-1siguen ahí, pero sin ese snapshot) — el ejemplo de "Rollback de una VM" abajo es sólo ilustrativo de la sintaxis, no un comando ejecutable tal cual hoy. Listar conzfs list -t snapshotantes de usarlo.
# Listar todos los snapshots con el tag
ssh pmx-50 'zfs list -t snapshot -o name,creation | grep pre-cohesion'
ssh pmx-51 'zfs list -t snapshot -o name,creation | grep pre-cohesion'
Salida típica:
zfs-ha/subvol-200-disk-0@pre-cohesion-20260519 2026-5-19 3:14
zfs-ha/vm-208-disk-0@pre-cohesion-20260519 2026-5-19 3:14
...
Rollback de un LXC entero¶
1. Parar el container¶
2. Verificar que el snapshot existe en este nodo¶
3. Rollback¶
Si hay snapshots más recientes que el target, ZFS rehúsa por defecto.
Forzar con -r (recursivo) elimina los intermedios:
4. Re-arrancar¶
Rollback de una VM¶
Igual pero con qm y dataset distinto:
ssh pmx-50 'qm stop 208'
ssh pmx-50 'zfs rollback -r zfs-ha/vm-208-disk-0@pre-cohesion-20260519'
ssh pmx-50 'qm start 208'
VMs suelen tener varios discos (disk-0, disk-1, disk-2). Hay que rollback
cada uno si quieres consistencia total.
Alternativa NO destructiva: clone + inspect¶
Si solo quieres ver el estado pasado sin perder el actual:
# Clonar snapshot a un dataset nuevo
ssh pmx-50 'zfs clone zfs-ha/subvol-200-disk-0@pre-cohesion-20260519 zfs-ha/subvol-200-disk-0-inspect'
# Montar y leer (el clone aparece como /zfs-ha/subvol-200-disk-0-inspect)
ssh pmx-50 'ls /zfs-ha/subvol-200-disk-0-inspect/'
# Cuando termines, destruir el clone
ssh pmx-50 'zfs destroy zfs-ha/subvol-200-disk-0-inspect'
Crear un snapshot ad-hoc antes de un cambio¶
Replicación entre nodos¶
zfs-ha está replicado vía zfs send | zfs receive (cron en pmx-50 cada N min).
Si haces rollback en pmx-50 y el LXC está pinned ahí, fine. Si está en pmx-51
(failover HA), rollback debe hacerse en pmx-51, no pmx-50.
Verificar dónde corre actualmente:
Limpieza de snapshots viejos¶
Tras confirmar que un cambio grande es estable (e.g. 30 días post F4):
# Listar candidatos
ssh pmx-50 'zfs list -t snapshot | grep pre-cohesion'
# Destruir uno
ssh pmx-50 'zfs destroy zfs-ha/subvol-200-disk-0@pre-cohesion-20260519'
No borres TODOS los pre-* a la vez
Hazlo por tandas (e.g. uno por nodo, verificar 24h, seguir).