PBS restore drill¶
Proxmox Backup Server vive en LXC 186 (pmx-50, .186), datastore main,
~57% usado. 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 5 de cada mes en pmx-50. 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 local-zfs. - Arranca el LXC.
- Verifica que un servicio canario responde (depende del LXC restaurado).
- Destruye el LXC temporal.
- Reporta éxito/fallo.
```bash
Trigger manual del drill¶
ssh pmx-50 '/usr/local/bin/pbs-drill.sh' ```
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:
bash
ssh pmx-50 'pvesm list pbs-main --content backup --vmid 200'
Restore a un VMID temporal:
bash
ssh pmx-50 'pct restore 999 pbs-main:backup/ct/200/2026-05-18T03:00:00Z --storage local-zfs --rootfs local-zfs:32'
Para VMs (qm restore):
bash
ssh pmx-50 'qmrestore pbs-main:backup/vm/208/2026-05-18T03:00:00Z 998 --storage local-zfs'
Restore "file-level" (recuperar un archivo concreto)¶
PBS soporta montar el snapshot como FUSE para extraer archivos sin restore completo:
```bash
ssh pmx-50 'proxmox-backup-client mount --repository
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):
bash
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¶
bash
ssh pmx-50 'pct exec 186 -- proxmox-backup-manager datastore show main'
Métrica clave: available. Si baja de 20% → revisar prune policy:
bash
ssh pmx-50 'pct exec 186 -- proxmox-backup-manager prune-job list'
Política actual (estándar): keep last 3, daily 7, weekly 4, monthly 6.
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.