Problema
Muchos administradores de Proxmox terminan usando soluciones de almacenamiento externas como TrueNAS o FreeNAS para obtener ZFS, snapshots y exportaciones NFS/iSCSI. Ese enfoque introduce una capa adicional de gestión, plugins que rara vez se usan y una UI que no está alineada con la de Proxmox. El resultado es una experiencia fragmentada: los nodos de Proxmox deben conectarse a un host externo, los backups y snapshots se manejan fuera del flujo de trabajo habitual y la alta disponibilidad (HA) del storage depende de la sincronía entre dos sistemas diferentes. En entornos homelab o pequeñas infraestructuras de producción, esa complejidad se traduce en más puntos de falla y mayor carga operativa.
Causa
- Separación de planes de control – Proxmox gestiona VM/CT y redes, mientras que TrueNAS gestiona ZFS y servicios de exportación. Cada herramienta tiene su propio daemon, API y modelo de permisos.
- Plugins y servicios innecesarios – TrueNAS incluye una gran cantidad de plugins (Jails, Docker, etc.) que consumen recursos y pueden generar vulnerabilidades si no se actualizan.
- Desalineación de UI – Los usuarios deben alternar entre la UI de Proxmox y la de TrueNAS, lo que dificulta la visibilidad de snapshots o configuraciones de HA desde un único panel.
- Falta de integración nativa de snapshots – Los snapshots de ZFS creados en TrueNAS no aparecen automáticamente como puntos de restauración dentro de la UI de Proxmox, obligando a scripts externos o a procesos manuales.
Solución
Implementar un “storage interno” basado en ZFS directamente sobre los nodos de Proxmox elimina la capa externa y permite exponer los volúmenes mediante NFS o iSCSI usando los mismos daemons que ya corre el host. El flujo queda así:
- Crear un pool ZFS en cada nodo – Utilizar discos dedicados o partitions RAID‑Z.
- Configurar datasets con propiedades optimizadas para VM –
compression=lz4,recordsize=16Kpara discos virtuales yrecordsize=1Mpara backups. - Exponer los datasets:
- NFS para discos de VM/CT que requieren acceso de archivo.
- iSCSI para discos de bloque que necesitan rendimiento máximo y pueden ser presentados a varios nodos en modo clustered.
- Integrar el storage en Proxmox mediante la CLI o la UI, asignándole un ID y habilitando HA.
- Aprovechar los snapshots de ZFS directamente desde Proxmox: la UI permite crear un snapshot del dataset y asociarlo a una VM como punto de restauración.
- Automatizar backups con
vzdumpapuntando al dataset ZFS; la deduplicación y compresión de ZFS reducen el espacio usado.
Paso a paso resumido
- Pool ZFS:
zpool create -f rpool mirror /dev/sdb /dev/sdc - Dataset para VM:
zfs create -o compression=lz4 -o recordsize=16K rpool/vmdata - Exportar NFS:
zfs set sharenfs=on rpool/vmdata - Crear target iSCSI (usando
targetcli): crear un LUN que apunte arpool/vmdata/lun0. - Agregar storage en Proxmox:
pvesm add nfs proxzfs-nfs 10.0.0.1:/rpool/vmdata --content images,rootdiropvesm add iscsi proxzfs-iscsi 10.0.0.1:3260/iqn.2026-06.com.example:storage --content images,rootdir. - Activar HA: marcar el storage como “shared” y habilitar HA en los recursos VM/CT.
Cuándo aplicar esta solución
- Entornos homelab o pymes donde el número de nodos es ≤ 5 y el hardware de disco está bajo control.
- Necesidad de HA de storage sin depender de un appliance externo.
- Requerimiento de snapshots consistentes que se gestionen desde la UI de Proxmox.
- Limitaciones de recursos: cuando los plugins de TrueNAS consumen CPU/RAM que podrían dedicarse a las VM.
No es la mejor opción si:
- Se dispone de un cluster de TrueNAS con replicación ZFS entre sitios y se necesita una arquitectura de almacenamiento distribuido a gran escala.
- Los nodos de Proxmox están en diferentes subredes sin conectividad de baja latencia para iSCSI.
Código
# 1. Crear pool ZFS con espejo
zpool create -f rpool mirror /dev/sdb /dev/sdc
# 2. Dataset para máquinas virtuales
zfs create -o compression=lz4 -o recordsize=16K rpool/vmdata
# 3. Habilitar export NFS (opcional)
zfs set sharenfs=on rpool/vmdata
# 4. Configurar iSCSI target (requiere targetcli)
targetcli /iscsi create iqn.2026-06.com.example:proxstorage
targetcli /iscsi/iqn.2026-06.com.example:proxstorage/tpg1/luns create /backstores/block/rpool/vmdata/lun0
targetcli /iscsi/iqn.2026-06.com.example:proxstorage/tpg1/acls create iqn.2026-06.com.example:proxmox
# 5. Añadir storage NFS a Proxmox
pvesm add nfs proxzfs-nfs 10.0.0.1:/rpool/vmdata --content images,rootdir
# 6. Añadir storage iSCSI a Proxmox
pvesm add iscsi proxzfs-iscsi 10.0.0.1:3260/iqn.2026-06.com.example:proxstorage --content images,rootdir
# 7. Marcar como shared y habilitar HA
pvecm addnode <node>
ha-manager add proxzfs-nfs --shared 1
Verificación
zpool status– debe mostrar el pool rpool en estado ONLINE.zfs list -t filesystem– confirma que rpool/vmdata está creado con la compresión deseada.- En Proxmox, abre la sección Datacenter → Storage y verifica que proxzfs-nfs y proxzfs-iscsi aparecen como “Enabled”.
- Crea una VM de prueba, asigna disco desde el nuevo storage y ejecuta
vzdump <VMID> --mode snapshot. El dump debe completarse sin errores y el archivo debe residir en rpool/vmdata. - Genera un snapshot ZFS manual:
zfs snapshot rpool/vmdata@snap-test. Luego, desde la UI de Proxmox, selecciona “Rollback” y verifica que la VM vuelve al estado anterior.
Notas adicionales
- Memoria RAM: ZFS recomienda al menos 1 GB de RAM por TB de capacidad. En nodos con menos de 8 GB, ajusta
zfs_arc_maxpara evitar que el host agote memoria. - Red de iSCSI: usa VLAN dedicada o redes de 10 GbE para evitar cuellos de botella.
- Backup externo: aunque el storage sea interno, sigue recomendable replicar snapshots a otro servidor mediante
zfs send/receive. - Actualizaciones: mantén el kernel y los paquetes ZFS alineados con la versión de Proxmox; una desincronía puede causar errores de módulo.
- Permisos: al exponer NFS, define
sharenfs="[email protected]/24"para limitar el acceso a los nodos del cluster.
Con este enfoque, el storage se vuelve una extensión natural de Proxmox, se reduce la superficie de ataque y se gana consistencia en la gestión de snapshots y HA. La solución es lo suficientemente ligera para homelabs y escalable para pequeñas infraestructuras que buscan simplicidad sin sacrificar la potencia de ZFS.