PBS restore drill¶
Proxmox Backup Server vive en LXC 186 (pmx-50, 192.168.0.22 — renombrado desde
.186 en la renumeración IP de 2026-07-31), datastore main, 41% usado
(verificado 2026-08-01; llegó a 89-91% a finales de julio, se recortó keep-daily
3→2 y el GC de 2 fases liberó el espacio real en el ciclo siguiente). Hace backups
diarios de todas las VMs/LXCs según jobs.cfg.
El restore drill mensual valida que los backups son realmente restorables — "un backup que nunca se restauró no es un backup".
Cron actual
Script pbs-drill.sh corre día 1 (LXC, mensual) + día 15 trimestral (VM) en pmx-50. El drill de día 5 es otro script, pbs-restore-test.sh, en pmx-51. Logs en
/var/log/pbs-drill.log. Resultado push a Telegram via n8n.
Drill automatizado (lo que corre el cron)¶
pbs-drill.sh (resumen):
- Crea un LXC temporal
pct restore 999 <snapshot> --storage zfs-ha. - Arranca el LXC.
- Verifica que un servicio canario responde (depende del LXC restaurado).
- Destruye el LXC temporal.
- Reporta éxito/fallo.
Restore manual de una VM/LXC¶
Vía PBS UI¶
- Abrir
https://pbs.monxas.casa/(CF Access). - Datastore
main→ seleccionar el guest (e.g.ct/200). - Click en un snapshot → Restore.
- Target: nodo destino, storage destino, VMID nuevo (para no pisar el original).
- Confirmar.
Vía CLI desde el nodo Proxmox¶
Listar snapshots disponibles:
Restore a un VMID temporal:
ssh pmx-50 'pct restore 999 pbs:backup/ct/200/2026-05-18T03:00:00Z --storage zfs-ha --rootfs zfs-ha:32'
Para VMs (qm restore):
Restore "file-level" (recuperar un archivo concreto)¶
PBS soporta montar el snapshot como FUSE para extraer archivos sin restore completo:
ssh pmx-50 'proxmox-backup-client mount --repository <user>@[email protected]:main vm/208/2026-05-18T03:00:00Z /mnt/restore-tmp'
# Copiar lo que necesites
ssh pmx-50 'cp /mnt/restore-tmp/path/to/file /destino/'
# Desmontar
ssh pmx-50 'proxmox-backup-client unmount /mnt/restore-tmp'
Verificación post-restore¶
Después de un restore "real" (no drill):
ssh pmx-50 'pct start 999' # o qm start
ssh pmx-50 'pct exec 999 -- systemctl is-system-running'
ssh pmx-50 'pct exec 999 -- ip a' # ¡cuidado IP duplicada con el original!
IP duplicada
El LXC/VM restaurado conserva la IP del original. Si la VM origen sigue
viva, vas a tener conflicto ARP. Cambia la IP antes de arrancar el
restore, o arranca con red desconectada (--net0 name=eth0,bridge=vmbr0,link_down=1).
Capacidad del datastore¶
Métrica clave: available. Si baja de 20% → revisar prune policy:
Política actual (job main-prune, verificada 2026-08-01): keep-daily 2,
keep-weekly 1 (sin keep-last/monthly/yearly). Recortada desde keep-daily 3 a
finales de julio 2026 por presión de espacio (ver nota de capacidad arriba).
Datastore archive (job archive-prune) tiene política separada: keep-daily 14,
keep-weekly 8, keep-monthly 12.
Troubleshooting¶
| Síntoma | Causa | Fix |
|---|---|---|
Restore falla con chunk store error |
Bit-rot en datastore | proxmox-backup-manager datastore verify main |
| Restore lentísimo (<10MB/s) | Network entre PBS y nodo destino saturada | Verificar iperf3 entre nodos |
| Sin snapshots recientes | Cron vzdump paró |
journalctl -u vzdump.timer en pmx-50 |
403 permission denied |
Token PBS expirado o sin permisos | Regenerar token en UI → actualizar /etc/pve/storage.cfg |
Plan futuro¶
- Test restore fuera del cluster (a un Proxmox standalone aislado) — valida que los backups son portables. Pendiente.
- Off-site backup PBS (sync a NAS externo o cloud) — pendiente, riesgo evaluado en ADR-0007.