Problema
En muchos homelabs el punto crítico es garantizar copias de seguridad consistentes de máquinas virtuales (VMs) que pueden superar el terabyte de tamaño. El escenario típico incluye un nodo Proxmox (PVE) que ejecuta varias VMs y un servidor de almacenamiento separado, como Unraid, que expone sus discos mediante NFS o SMB. El objetivo es que los backups se guarden automáticamente en el almacenamiento externo sin interrumpir la operación de las VMs.
Los síntomas habituales son:
- Fallos intermitentes de
vzdumpcuando el destino es un share NFS. - Tiempo de backup excesivo o cuelgues al copiar discos de >1 TB.
- Inconsistencias detectadas al restaurar una VM.
- Dudas sobre la fiabilidad de ejecutar un servidor de backup como VM dentro del mismo hardware que las VMs a proteger.
El reto consiste en elegir una arquitectura que minimice los errores de I/O, mantenga la integridad de los datos y sea fácil de gestionar con herramientas nativas de Proxmox.
Causa
1. Latencia y saturación del NFS
Los shares NFS expuestos por Unraid suelen estar basados en discos HDD o en configuraciones RAID que no están optimizadas para I/O intensivo de backup. Cuando vzdump intenta leer y escribir bloques de varios gigabytes de forma secuencial, cualquier cuello de botella en la red (cableado, switch) o en el servidor NFS (caché de escritura) genera time‑outs y errores de “permission denied” o “no space left”.
2. Falta de deduplicación y compresión
vzdump envía la imagen completa del disco en cada ejecución. Con discos de 1 TB o más, el tráfico de red y el uso de espacio en el NAS crecen rápidamente. Sin deduplicación, los backups sucesivos almacenan datos idénticos una y otra vez, lo que acelera el agotamiento del storage y aumenta la probabilidad de fallos por falta de espacio.
3. Backup dentro del mismo host
Ejecutar un servidor de backup (por ejemplo PBS) como una VM en el mismo nodo que aloja las VMs a respaldar introduce contención de recursos: CPU, RAM y, sobre todo, acceso a disco. Cuando la VM de backup y la VM fuente compiten por el mismo pool de I/O, la latencia se dispara y los procesos de backup pueden abortar.
4. Configuración de snapshots y quiescing
En discos de gran tamaño, los snapshots pueden quedar “pendientes” si el almacenamiento subyacente no soporta operaciones de freeze adecuadamente. Esto genera inconsistencias en los archivos de backup y, en el peor caso, corrupción al restaurar.
Solución
Una arquitectura robusta combina tres pilares:
-
Almacenamiento de backup dedicado vía NFS o iSCSI
- Usa un pool de discos rápido (SSD o RAID‑10) en Unraid exclusivamente para backups.
- Configura el share NFS con opciones
no_root_squash,asyncyrsize/wsize=1048576para maximizar el throughput. - Asegúrate de que la red entre Proxmox y Unraid sea al menos 1 GbE; 10 GbE es recomendado para discos >1 TB.
-
Proxmox Backup Server (PBS) como appliance física o VM aislada
- Si el presupuesto lo permite, despliega PBS en hardware dedicado (una mini‑PC o un servidor de bajo consumo).
- Si solo dispones de la infraestructura actual, crea una VM de PBS con dedicación de CPU y RAM (p.ej. 4 vCPU, 8 GB RAM) y almacénala en un disco virtual SSD dentro de Unraid.
- Activa la característica de deduplicación y compresión de PBS; reduce drásticamente el espacio necesario y acelera los backups incrementales.
-
Integración nativa con Proxmox
- Añade el repositorio PBS como “Datastore” en la interfaz de Proxmox.
- Configura
vzdumppara usar el modosnapshot(si el storage lo permite) ostopcomo fallback. - Programa backups incrementales diarios y full semanales. Los incrementales solo transfieren los bloques modificados, lo que evita el tráfico masivo de datos.
Pasos concretos
-
Crear el share NFS en Unraid
- En la UI de Unraid, crea un share llamado
pve-backups. - En “Export NFS”, habilita “Export as read/write”.
- Añade la opción
rw,sync,no_root_squashen “Extra NFS Options”.
- En la UI de Unraid, crea un share llamado
-
Montar el share en Proxmox (una sola vez, en todos los nodos)
mkdir -p /mnt/pve-backups echo "192.168.10.20:/mnt/user/pve-backups /mnt/pve-backups nfs rw,vers=4,soft,timeo=180,rsize=1048576,wsize=1048576 0 0" >> /etc/fstab mount -a -
Instalar PBS (opción VM)
- Descarga la ISO oficial de PBS.
- Crea una VM en Proxmox con 2 vCPU, 4 GB RAM, disco de 50 GB (SSD) y conecta la NIC a la misma red que Unraid.
- Durante la instalación, elige el directorio
/mnt/pve-backups/pbs-repocomo repositorio principal (el directorio debe estar montado dentro de la VM mediante NFS).
-
Añadir el datastore PBS a Proxmox
- En la UI de Proxmox, ve a Datacenter → Storage → Add → Proxmox Backup Server.
- Introduce la IP de la VM PBS, el token de acceso y el nombre del datastore (
pbs-datastore). - Marca “Content: Backup”.
-
Configurar
vzdump- Edita
/etc/vzdump.confpara usar el nuevo datastore como destino por defecto:
storage: pbs-datastore mode: snapshot compress: lzo prune-backups: keep-last=7 - Edita
-
Programar backups
- En la UI, crea una tarea de backup diaria (incremental) y una semanal (full) apuntando al datastore PBS.
Cuándo aplicar esta solución
- Discos de VM > 500 GB: la deduplicación de PBS reduce dramáticamente el tráfico y el espacio usado.
- Entornos homelab con un único nodo Proxmox: aislar PBS en una VM dedicada evita la contención de recursos.
- Redes con al menos 1 GbE: garantiza que los backups no saturen la red.
- Necesidad de restauraciones rápidas: PBS permite restaurar a nivel de bloque, mucho más veloz que copiar una imagen completa desde NFS.
No aplicar si:
- El hardware disponible es insuficiente para ejecutar una VM de PBS con recursos dedicados (CPU/RAM).
- El NAS solo tiene discos HDD en configuración RAID‑5/6 sin caché de escritura; la latencia será demasiado alta.
- Se prefiere una solución “cold backup” donde las VMs se apagan antes de copiar; en ese caso
vzdumpcon modostopsobre NFS puede ser suficiente.
Código
# Montar NFS share (ejecutar en cada nodo Proxmox)
mkdir -p /mnt/pve-backups
mount -t nfs -o rw,vers=4,soft,timeo=180,rsize=1048576,wsize=1048576 192.168.10.20:/mnt/user/pve-backups /mnt/pve-backups
# Configuración mínima de vzdump para usar PBS
cat > /etc/vzdump.conf <<EOF
storage: pbs-datastore
mode: snapshot
compress: lzo
prune-backups: keep-last=7
EOF
# Crear tarea de backup diaria (ejemplo con CLI)
pveam update
pveam available
# Suponiendo VM ID 101
vzdump 101 --mode snapshot --storage pbs-datastore --compress lzo --schedule "0 2 * * *"
Verificación
-
Comprobar montaje NFS
df -h /mnt/pve-backupsDebería mostrar el share con espacio libre correcto.
-
Validar conexión PBS
En la UI de Proxmox, verifica que el datastore PBS aparece bajo Datacenter → Storage y que muestra “Online”. -
Ejecutar backup de prueba
vzdump 101 --mode snapshot --storage pbs-datastore --compress lzo --debugObserva que termina sin errores y que el backup aparece en el datastore PBS.
-
Restaurar una VM de prueba
- En la UI, selecciona el backup recién creado y elige “Restore”.
- Verifica que la VM arranca correctamente y que los discos están íntegros.
Notas adicionales
- Monitoreo: Configura alertas en Proxmox (via
pveproxyonode-exporter) para detectar fallos de backup o espacio bajo en el datastore PBS. - Snapshots en Unraid: Si Unraid soporta snapshots a nivel de disco, habilítalos para proteger el propio storage de backup contra corrupción.
- Retención: Ajusta la política
prune-backupssegún la capacidad del NAS; una regla típica es mantener 7 incrementales y 4 full. - Seguridad: Usa TLS entre Proxmox y PBS (opción “Enable TLS” al crear el datastore) y restringe el acceso NFS a la IP del nodo Proxmox.
- Escalabilidad: Cuando el número de VMs crezca, considera migrar PBS a hardware dedicado o a un nodo de almacenamiento con NVMe para acelerar los deduplicados.