Guias

ZFS en Proxmox: configuración, ventajas y errores que debes evitar

ZFS se convirtió en una de las opciones de almacenamiento más populares entre los usuarios de Proxmox VE por su combinación de integridad, snapshots y administración desde la propia interfaz web. Esta guía explica cómo activarlo, qué niveles de pool elegir y qué errores te ahorrarán disgustos antes de poner un servidor en producción.


TL;DR — Lo que vas a tener al final

  • Tiempo de setup: 4-6 horas para setup completo.
  • Requisitos: CPU con VT-x, 16+ GB RAM, 64+ GB SSD.
  • Resultado: Homelab con VMs/LXC, backups PBS, monitoring integrado.
  • Troubleshooting: Logs de Proxmox, snapshots, restore drills mensuales.

1. Qué aporta ZFS a un homelab con Proxmox

ZFS no es solo un sistema de archivos: también es un gestor de volúmenes lógicos y un sistema de detección de corrupción integrado. Desde Proxmox VE 3.4 se incluye como opción nativa y desde la versión 4.x se ofrece también como sistema de archivos raíz durante la instalación, sin necesidad de compilar módulos manualmente.

Entre las ventajas que más se notan en un servidor casero o de pequeña oficina están la protección frente a bit rot, las instantáneas casi instantáneas, la posibilidad de hacer clones copy-on-write y la administración coherente desde la GUI y el CLI de Proxmox.

Las funciones más útiles en el día a día son:

  • Sumas de verificación por bloque que detecten corrupción silenciosa y la reparen con redundancia.
  • Compresión a nivel de sistema de archivos, normalmente con lz4, sin penalización perceptible.
  • Snapshots y clones ligeros para copias previas a actualizaciones de máquinas virtuales.
  • Niveles de RAID software pensados para minimizar el coste en hardware dedicado: RAIDZ-1, RAIDZ-2, RAIDZ-3 y dRAID.
  • Replicación asíncrona entre nodos para backups sin agentes.
  • Cifrado nativo por dataset desde ZFS 0.8.0.

ZFS necesita hablar directamente con los discos. Evita controladoras RAID por hardware con caché propia; usa un HBA o una controladora en modo IT.

2. Requisitos de hardware antes de empezar

La documentación oficial de Proxmox lo deja claro: ZFS consume RAM porque el módulo carga una caché adaptativa (ARC) directamente en memoria. El mínimo razonable son 8 GB, y se recomienda dotar al equipo de tanta RAM como permita el presupuesto, idealmente ECC para minimizar el riesgo de corrupción en equipos de almacenamiento.

Un par de reglas que conviene seguir:

  • Si se usa SSD como caché o ZIL, elige unidades empresariales con protección frente a pérdida de alimentación. Marcas como Samsung PM9A3 o Intel DC S3710 están pensadas para este uso.
  • No colocar ZFS encima de una controladora RAID hardware con caché y batería: ZFS necesita gestionar las escrituras por sí mismo.
  • En entornos virtualizados de pruebas (Proxmox dentro de una VM), la documentación de Proxmox desaconseja discos VirtIO de bloque para ZFS. Usa IDE o SCSI; el controlador VirtIO SCSI sí es una opción válida.

Si estás montando un homelab a partir de piezas recicladas, revisa la guía autoalojamiento: 12 servicios para correr en casa y dimensiona el servidor pensando en dejar margen para la ARC.

3. Elegir nivel de RAID al instalar Proxmox

El instalador de Proxmox permite elegir ZFS como sistema de archivos raíz y, en ese momento, también el tipo de RAID. La decisión condiciona el rendimiento y la capacidad útil durante toda la vida del servidor, por lo que conviene no improvisarla.

Nivel Mínimo de discos Capacidad útil aproximada Tolerancia a fallos
RAID0 / stripe 1 100 % 0 discos
RAID1 / mirror 2 50 % 1 por vdev
RAID10 4 50 % 1 por vdev
RAIDZ-1 3 N − 1 1 disco
RAIDZ-2 4 N − 2 2 discos
RAIDZ-3 5 N − 3 3 discos
dRAID2 4 (en GUI) Variable 2 discos

La unidad básica es el vdev: ZFS reparte datos entre todos los vdevs de un pool. La pérdida de un vdev completo compromete el pool, así que cada vdev necesita la redundancia adecuada.

Para máquinas virtuales el parámetro crítico son las IOPS. Por eso la documentación de Proxmox recomienda mirrors (RAID1 o RAID10) para cargas con VMs: un vdev RAIDZ rinde aproximadamente como un disco en IOPS, mientras que un mirror escala linealmente en lectura. Reservar RAIDZ solo para casos en los que el espacio útil prime sobre la respuesta.

3.1. Crear el pool raíz durante la instalación

Si optas por ZFS en el instalador, Proxmox genera el pool rpool con particiones y un subvolumen rpool/ROOT/pve-1. Además crea rpool/data para imágenes de VM y la entrada en /etc/pve/storage.cfg que lo expone al panel web.

Tras la instalación, comprobamos el estado:

zpool status
zfs list

Verás nombres como mirror-0, sda2 o sdc, dependiendo del nivel elegido. Es saludable ejecutar de vez en cuando un zpool scrub programado para forzar la verificación y reparación silenciosa.

4. Crear pools adicionales con zpool

Una vez Proxmox está en marcha, es habitual añadir pools separados para datos o backups. El comando zpool controla la creación y mantenimiento, mientras que zfs gestiona los sistemas de archivos y sus propiedades.

zpool create -f -o ashift=12 tankpool mirror /dev/disk/by-id/<disk-a> /dev/disk/by-id/<disk-b>
zfs set compression=lz4 tankpool

El parámetro ashift=12 alinea el tamaño de bloque con discos de 4K, que es lo normal en hardware moderno. Mantener esa alineación evita penalizaciones de rendimiento por emular sectores 512e. El comando destruye la información de los discos indicados: sustituye los marcadores solo después de verificar los identificadores con ls -l /dev/disk/by-id/ y confirmar que tienes backup.

Usa un nombre de pool corto con letras, números, guion o guion bajo y comprueba las restricciones en zpool-create(8).

4.1. Caché L2ARC y ZIL dedicado

ZFS puede apoyarse en SSDs rápidos para dos tareas distintas:

  • Caché (L2ARC): mejora lecturas aleatorias sobre datos en frío. Solo es útil cuando el ARC en RAM queda corto.
  • ZIL (log separado): absorbe escrituras síncronas (las típicas de bases de datos o NFS) y reduce la latencia de fsync espectacularmente.

Para añadir ambos a un pool existente:

zpool add -f tankpool log /dev/disk/by-id/nvme0-part1 cache /dev/disk/by-id/nvme0-part2

Conviene dedicar discos con protección contra pérdida de alimentación. El SLOG solo almacena el ZIL de escrituras síncronas hasta vaciarse al pool principal (cada pocos segundos); 16-32 GB bastan para casi cualquier carga — no hace falta dimensionarlo a la mitad de la RAM.

5. Errores habituales al configurar ZFS en Proxmox

Aunque ZFS es robusto, algunos errores se repiten en foros y listas de correo. Identificarlos a tiempo evita recuperaciones dolorosas.

5.1. Elegir RAIDZ pensando solo en capacidad

Un RAIDZ-1 con seis discos de 4 TB ofrece unos 20 TB, mientras que un RAID10 con cuatro discos de 4 TB solo aporta 8 TB. La diferencia es que RAIDZ-1 rinde como un solo disco en IOPS y tiene un problema de amplificación de escritura: cada bloque de 8 KB escrito requiere un bloque de paridad del mismo tamaño (8 KB de paridad; 16 KB en total). En cargas con VMs pequeñas ese coste se nota.

Si el uso será mixto entre VMs y datos fríos, lo más razonable es reservar RAIDZ para el segundo pool y mantener RAID10 o mirrors para el pool de VMs activas.

5.2. Olvidar el requisito de RAM

Reducir la ARC con zfs_arc_max ayuda a liberar memoria para VMs, pero dejarla demasiado baja degrada el rendimiento en cadena:

echo "options zfs zfs_arc_max=8589934592" > /etc/modprobe.d/zfs.conf
update-initramfs -u -k all

Tras tocar este parámetro hay que regenerar el initramfs y reiniciar. Como regla práctica, la documentación sugiere 2 GiB base + 1 GiB por cada TiB de capacidad.

5.3. Mezclar tamaños de disco en un mismo vdev

Un mirror con discos de 1 TB y 2 TB solo aprovechará 1 TB del segundo. Si necesitas ampliar, sustituye primero el disco pequeño por uno del tamaño del mayor y espera al resilver antes de añadir capacidad extra.

5.4. Subir el volblocksize a ciegas

Aumentar volblocksize mejora la relación datos/paridad, pero solo puede fijarse al crear el ZVOL. Cambiarlo en caliente no es posible, y aplicarlo globalmente rompe la alineación con sistemas de archivos invitados como ext4 o NTFS. Mantén el valor por defecto (volblocksize=16K para ZVOL; recordsize=128K para datasets) salvo que tengas una razón técnica clara.

5.5. Habilitar zpool upgrade en el rpool con GRUB

Activar funciones nuevas de formato deja el rpool inaccesible desde GRUB, lo que impide arrancar el sistema si el kernel falla. Antes de actualizar un pool hay que confirmar que se usa el proxmox-boot-tool y no GRUB clásico:

proxmox-boot-tool status

La regla oficial es: no actualizar el rpool si sigue arrancando con GRUB heredado o si el sistema se instaló antes de Proxmox VE 5.4.

5.6. Usar ZFS para swap sin pensar

Crear un ZVOL de swap puede sobrecargar el pool cuando se lanzan backups o escrituras masivas. La guía de Proxmox recomienda crear una partición de swap en un disco físico y bajar la swappiness:

sysctl -w vm.swappiness=10

Persistirlo en /etc/sysctl.d/99-swappiness.conf con vm.swappiness = 10.

6. Comandos útiles para la operación diaria

Un par de rutinas que conviene tener a mano tras poner en marcha ZFS en Proxmox:

# Revisar estado general
zpool status -v
# Forzar verificación de integridad
zpool scrub tankpool
# Listar datasets y propiedades
zfs list -t all
# Limitar ARC temporalmente
echo "8589934592" > /sys/module/zfs/parameters/zfs_arc_max
# Sustituir un disco en mal estado
zpool replace -f tankpool /dev/disk/by-id/old /dev/disk/by-id/new

Cuando el disco sustituido es de arranque, hay que regenerar la partición ESP con proxmox-boot-tool format y proxmox-boot-tool init, indicando grub si Secure Boot está habilitado.

7. Cifrado nativo: cuándo y cómo

ZFS permite cifrar datasets con clave o frase desde ZFS 0.8.0. La activación se hace por pool y tiene letra pequeña: el cifrado se considera experimental en Proxmox, y la replicación con datasets cifrados presenta limitaciones conocidas.

zpool set feature@encryption=enabled tankpool
zfs create -o encryption=on -o keyformat=passphrase tankpool/secretos
zfs mount -l tankpool/secretos

Antes de activar cifrado en producción es imprescindible:

  • Tener un backup verificado del propio dataset sin cifrar.
  • Almacenar el material de clave (frase o archivo de clave) fuera del servidor.
  • Probar el procedimiento de recuperación en un equipo de pruebas.

Si trabajas con reglas como NIS2 o RGPD, conviene complementarlo con cifrado en tránsito y políticas de rotación de claves para no quedar atado a un dataset irrecuperable.

8. Dispositivo especial (Special Device) y deduplicación

El special device almacena metadatos del filesystem y, opcionalmente, bloques pequeños (umbral configurable con special_small_blocks). La tabla de dedup (DDT) reside en el pool principal, no en el special device. En pools con discos mecánicos lentos, añadir un SSD NVMe como special device convierte la creación de ficheros pequeños en algo casi instantáneo.

zpool add tankpool special mirror /dev/disk/by-id/nvme1 /dev/disk/by-id/nvme2

La redundancia del special device debe coincidir con la del pool: si falla, el pool entero queda comprometido. Activarlo no se puede deshacer fácilmente, por lo que conviene planificarlo antes.

Sobre la deduplicación: la tabla DDT consume memoria y su tamaño real depende de la cantidad de bloques únicos y del tamaño de registro. No uses una fórmula fija de RAM por terabyte. Mide primero con zdb -S sobre datos representativos y evita activarla en un homelab salvo que hayas probado el consumo, la recuperación y la carga de escritura.

9. Integración con Proxmox VE

Cuando añadimos un pool nuevo, lo registramos como almacenamiento de Proxmox con pvesm add:

pvesm add zfspool vmdata -pool tankpool/vmdata -content images,rootdir

El backend ZFS de Proxmox sirve para discos de VM y rootdirs de contenedores. Las copias vzdump y las ISO necesitan un almacenamiento de archivos como Directory, NFS, CIFS o Proxmox Backup Server. En Datacenter → Storage → Add → ZFS puedes registrar el dataset y filtrar sus nodos.

Una buena práctica es separar los pools por uso:

  • Pool raíz con el sistema y plantillas.
  • Pool de VMs activas (mirrors, SSD o NVMe si hay presupuesto).
  • Pool de backups, preferentemente en discos independientes.

Si además quieres aislar la red de gestión del firewall, échale un vistazo a la guía sobre configurar un firewall en Linux con nftables, que se complementa bien con la segmentación de VLAN que verás más adelante en este sitio.

Conclusiones

ZFS en Proxmox es una de las combinaciones más cómodas para homelabs porque une la integridad de un sistema de archivos moderno con la administración gráfica de Proxmox y herramientas CLI conocidas. La elección entre mirrors, RAIDZ y dRAID depende del equilibrio que busques entre capacidad, rendimiento y tolerancia a fallos. Para VMs casi siempre ganan los mirrors; para almacenamiento en frío, RAIDZ o dRAID son opciones razonables.

Antes de declararlo listo, asegúrate de tener un proxmox-boot-tool status con bootloader moderno, una política de scrub automática y backups verificados fuera del propio pool. Con esos mimbres, ZFS se convierte en una capa de almacenamiento muy difícil de tumbar.

Preguntas frecuentes

¿Por qué ZFS en Proxmox: configuración, ventajas y errores que debes evitar es relevante para sysadmins Linux?

Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.

¿Qué necesito para empezar con ZFS en Proxmox: configuración, ventajas?

Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.

¿Cuáles son los errores más comunes con ZFS en Proxmox: configuración, ventajas?

Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.

¿Cuándo usar ZFS en Proxmox: configuración, ventajas y cuándo una alternativa?

Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.

¿Cómo migro desde una configuración previa a ZFS en Proxmox: configuración, ventajas?

Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.

Lee también

Alfonso Moreno | Sysadmin Senior

Soy Alfonso, sysadmin senior con RHCE y más de 10 años administrando sistemas Linux para empresas y proyectos personales. Me especializo en infraestructura, redes, virtualización, monitoring, automation y self-hosting. Sobre SoyLinux.com SoyLinux.com es un blog técnico en español sobre Linux, software libre y self-hosting. Lo mantengo en mi tiempo libre. Áreas de expertise - Linux server administration: RHEL, CentOS, Rocky, Alma, Fedora, Debian, Ubuntu - Network services: Postfix, BIND, Samba, NFS, Squid - Virtualización y containers: KVM, Proxmox, Docker, Podman - Monitoring: Prometheus, Grafana, Zabbix - Automation: Ansible, Bash scripting - Self-hosting: Vaultwarden, Nextcloud, Jellyfin, Immich, Homelab Contacto - Email: [email protected]

3 thoughts on “ZFS en Proxmox: configuración, ventajas y errores que debes evitar”

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *