Saltar al contenido principal

Almacenamiento ZFS

Special gracias

Nos gustaría expresar nuestro agradecimiento a Ed Rawlings (Spaceinvader One) por la experiencia y orientación de la que se ha adaptado esta documentación de almacenamiento ZFS. Sus tutoriales e ideas han ayudado a innumerables usuarios de Unraid a dominar técnicas de almacenamiento avanzadas. Apreciamos sus continuas contribuciones a la comunidad de Unraid.

ZFS aporta integridad de datos avanzada, configuraciones de almacenamiento flexibles y alto rendimiento a tu sistema Unraid. Esta guía explica los conceptos básicos de ZFS y te guía en la gestión de pools ZFS directamente desde el WebGUI de Unraid. Ya sea que estés configurando un nuevo almacenamiento ZFS o integrando un pool existente, encontrarás los pasos y contexto que necesitas para comenzar con confianza.


¿Por qué ZFS?

ZFS es un sistema de archivos moderno y un administrador de volúmenes diseñado para proteger sus datos, prevenir la corrupción y simplificar la gestión de almacenamiento.

Con ZFS, obtienes:

  • Verificaciones automáticas de integridad de datos y autoreparación
  • Soporte integrado para RAID (espejos, RAIDZ)
  • Snapshots y clones para copias de seguridad y restablecimientos fáciles
  • ZFS envía/recibe para una replicación eficiente
  • Compresión en tiempo real

Unraid supports ZFS for any storage pool. You can create a new ZFS pool, import one from another system, or use Unraid’s unique hybrid ZFS setup: add a ZFS-formatted disk directly to the Unraid array (not a pool) and combine ZFS features with Unraid’s parity protection.

:::info[Example]

Puede usar snapshots de ZFS y replicación en un solo disco como un objetivo de copia de seguridad, o replicar un pool rápido ZFS SSD a un disco ZFS en la array protegido por la parity de Unraid, obteniendo lo mejor de ambos mundos.

:::

nota

The hybrid ZFS-in-array approach is helpful for specific backup or replication scenarios but is not a replacement for a full ZFS pool. ZFS disks in the array are managed individually; you do not get the combined performance, redundancy, or self-healing of a true multi-disk ZFS pool. For full ZFS functionality, always use dedicated ZFS pools.

Pools, vdevs y redundancia

Un pool ZFS (llamado "zpool") está compuesto por uno o más vdevs (dispositivos virtuales). Cada vdev es un grupo de discos físicos con su propio nivel de redundancia. ZFS escribe datos a través de vdevs, pero cada vdev es responsable de su tolerancia a fallos.

precaución

La redundancia siempre es por vdev. Si alguno falla, todo el pool falla, incluso si otros vdevs están saludables. ¡Planifica tus vdevs con cuidado!


Creación de un grupo ZFS

Para crear un grupo ZFS usando el WebGUI:

  1. Detenga el array.
  2. Haga clic en Agregar Grupo.

  1. Elija un nombre para su grupo (por ejemplo, raptor).
  2. Configure el número de ranuras para coincidir con el número de discos que desea en sus vdev(s) de datos primarios.
nota

Esta cantidad inicial de ranuras es solo para vdevs de datos. Los vdevs de soporte (como unidades de registro o caché) se pueden agregar por separado después de crear el pool.

  1. Asigne discos al grupo (el orden de los discos no importa).

  1. Haga clic en el nombre del grupo (por ejemplo, raptor) para abrir su pantalla de configuración.
  2. Establezca el tipo de sistema de archivos a zfs o zfs-encrypted (para cifrado LUKS).

  1. Elija su perfil de asignación: esto determina la redundancia y el rendimiento de su grupo.
consejo

Antes de finalizar, revise las secciones sobre perfiles de asignación y topología para tomar una decisión informada.

  1. Habilite la compresión si lo desea (recomendado para la mayoría de las cargas de trabajo).
  2. Haga clic en Hecho, luego inicie el array.

Agregar un disco ZFS al array (Configuración híbrida)

Puede agregar un disco ZFS independiente a su array de Unraid (no un grupo ZFS) para combinar características de ZFS con la protección de paridad de Unraid.

What this enables
  • Protección de paridad: El disco ZFS está protegido por la parity de la array de Unraid, asegurando que sus datos estén seguros contra fallos de disco simples (o múltiples, dependiendo de sus parity drives).

  • Integridad de datos: ZFS proporciona verificaciones de integridad a nivel de bloque (sumas de verificación). Aunque un solo disco no puede autocorregir la corrupción por bit, ZFS detectará la corrupción y te alertará, permitiendo restaurar desde una copia de seguridad antes de que ocurra una pérdida de datos silenciosa.

  • Características de ZFS: Puedes utilizar snapshots de ZFS y replicarlos en este disco, haciéndolo ideal para objetivos de respaldo, conjuntos de datos específicos o escenarios donde deseas características de ZFS junto con el almacenamiento tradicional de Unraid.

Para añadir un disco ZFS al array:

  1. Vaya a la pestaña Principal en el WebGUI.
  2. Detenga el array.
  3. Haga clic en una ranura vacía bajo Dispositivos del Array.
  4. Seleccione el disco que desea agregar.

  1. Bajo Sistema de archivos, elija zfs o zfs-encrypted.

  1. Haga clic en Aplicar.
  2. Inicie el array y permita que el disco sea formateado si es necesario.

Elegir un perfil de asignación

Cuando configuras un pool ZFS, tu perfil de asignación determina cómo se protege tu información, cómo funciona tu pool y cómo puedes expandirlo. Aquí tienes una sencilla comparación para ayudarte a decidir qué perfil se adapta a tus necesidades:

PerfilRedundanciaRendimientoExpansiónEficiencia EspacialCaso de uso típico
RayaNingunoRápido, pero arriesgadoAgregar más discos100%Almacenamiento temporal/de raspado
Espejo1:1 (estilo RAID 1)Excelente para E/S aleatoriaAgregar más espejos50%Alto rendimiento, fácil expansión
RAIDZ11 disco por vdevRápido para archivos grandes. No ideal para pequeñas escrituras o escrituras aleatorias.Agregar nuevos vdevsAltaUso general, tolerancia a fallas de 1 disco
RAIDZ22 discos por vdevComo Z1, pero con escrituras un poco más lentas (paridad adicional)Agregar nuevos vdevsModeradoDatos importantes, tolerancia a fallas de 2 discos
RAIDZ33 discos por vdevComo Z2, con más sobrecarga de escritura (para máxima seguridad)Agregar nuevos vdevsInferiorCrítico para la misión, tolerancia a fallas de 3 discos
How to choose
  • Use Espejo si quiere el mejor rendimiento y expansión fácil y flexible, y está de acuerdo en utilizar más espacio en disco para la redundancia.
  • Elija RAIDZ1/2/3 si desea maximizar el espacio utilizable y almacenar archivos grandes, pero tenga en cuenta que la expansión es menos flexible y el rendimiento de escrita aleatoria es inferior.
  • Raya solo es adecuada para datos no críticos y temporales; si falla un disco, se pierde todo.

Topología y expansión

Cómo agrupar discos en vdevs afecta tanto la seguridad de los datos como la velocidad.

  • Si pones todos tus discos en un vdev RAIDZ2 grande, puedes perder dos discos sin perder datos. Sin embargo, la expansión significa agregar otro vdev completo.
  • Obtendrás un mejor rendimiento paralelo si divides los discos en múltiples vdevs RAIDZ1 más pequeños. Cuidado; si fallan dos discos en el mismo vdev, perderás todo el pool.
  • ZFS stripes data across vdevs, not individual disks, so more vdevs can lead to better performance for workloads with many small files or random I/O.
  • Expandir un grupo ZFS generalmente significa agregar un nuevo vdev con la misma disposición, no solo un disco.
consejo

Planifica la disposición de tu pool para que se ajuste a tus necesidades y crecimiento futuro. A diferencia del array de Unraid, no puedes agregar un solo disco a un vdev existente usando el WebGUI.


Compresión y RAM

ZFS ofrece características avanzadas que pueden mejorar significativamente la eficiencia y rendimiento del almacenamiento en Unraid. Dos temas de interés común son la compresión y los requisitos de memoria.

La compresión ZFS es transparente: opera en segundo plano, reduciendo los datos antes de que lleguen al disco.

Esto ofrece dos beneficios importantes:

  • Uso reducido del disco: Se consume menos espacio de almacenamiento.
  • Mejor rendimiento: Escribir y leer menos datos puede llevar a operaciones más rápidas, especialmente en CPUs modernas.

consejo

Habilita la compresión ZFS para la mayoría de los pools ZFS en Unraid. Es segura, eficiente, y rara vez impacta en la compatibilidad o estabilidad.

El mito de la RAM de ZFS - Haga clic para expandir/contraer

Puede que hayas encontrado el consejo desactualizado: “ZFS requiere 1 GB de RAM por 1 TB de almacenamiento.” Esto ya no es aplicable para la mayoría de los usuarios. ZFS utiliza RAM para su Caché de Reemplazo Adaptativo (ARC), lo que acelera las lecturas a las que se accede con frecuencia.

Unraid limita automáticamente a ZFS a usar una porción razonable de la RAM de tu sistema (usualmente 1/8 de la RAM total). Esto permite que ZFS funcione bien sin afectar a los contenedores de Docker, VMs, o el sistema operativo Unraid.

información

ZFS escala bien con la memoria disponible. Más RAM puede mejorar el rendimiento de la caché, pero ZFS funciona de manera confiable con hardware modesto. No dejes que recomendaciones antiguas te impidan utilizar ZFS en Unraid.


Importando grupos ZFS creados en otros sistemas

Unraid puede importar grupos ZFS creados en otras plataformas sin grandes complicaciones.

Cómo importar un grupo ZFS - Haga clic para expandir/contraer
  1. Detenga el array: Asegúrese de que su array de Unraid esté detenido.
  2. Añadir una nueva piscina: Haz clic en Añadir Piscina.
  3. Asigne todas las unidades:
    • Configure Número de ranuras de datos al número total de unidades en su grupo ZFS (incluidos los vdevs de datos y los vdevs de soporte).
    • Asigna cada disco a la ranura correcta.
    • Ejemplo: Para un pool con un vdev espejado de 4 unidades y un vdev L2ARC de 2 unidades, configure 6 ranuras y asigne las seis unidades.
  4. Configure el sistema de archivos a "Auto": Haga clic en el nombre del grupo (por ejemplo, raptor) y configure Sistema de Archivos en Auto.
  5. Finalice e inicie el array: Haga clic en Hecho, luego inicie el array.
Detección automática

Unraid detectará e importará automáticamente el pool ZFS. Los vdevs de soporte (como el registro, caché/L2ARC, especiales/deduplicación) se listan bajo Subpools en el WebGUI. No es necesario agregar subpools por separado después de iniciar la importación. Unraid los importará automáticamente junto con los discos de datos principales cuando todos los discos requeridos sean asignados.

Después de importar, se recomienda encarecidamente ejecutar un scrub para verificar la integridad de los datos.

  • Haz clic en el nombre del pool (por ejemplo, raptor) para abrir su configuración.
  • En Estado del Pool, verifica el estado y haz clic en Scrub.


Vdevs de soporte (subpools)

Unraid se refiere a los vdevs de soporte ZFS como subpools. La mayoría de los usuarios no los necesitan, pero los usuarios avanzados pueden encontrarlos:

Vdev de soporte (subpool)PropósitoRiesgos/Notas
Vdev especialAlmacena metadatos y archivos pequeñosEl pool se vuelve ilegible si se pierde.
Vdev de deduplicaciónPermite la deduplicaciónRequiere grandes cantidades de RAM; arriesgado para la mayoría de los usuarios. Evita a menos que tengas necesidades expertas.
Vdev de log (SLOG)Mejora el rendimiento de escritura síncronaOpcional. Solo beneficioso para ciertas cargas de trabajo.
Vdev de cache (L2ARC)Proporciona cache de lectura basado en SSDOpcional. Puede mejorar las velocidades de lectura para grandes conjuntos de trabajo.
Vdev de repuestoNo soportado en Unraid (a partir de la versión 7.1.2)
precaución

La mayoría de los usuarios de Unraid deberían evitar los vdevs de soporte / subpools a menos que tengan una necesidad específica y bien entendida. Están diseñados para cargas de trabajo especializadas y pueden introducir complejidad o riesgo si se usan incorrectamente.


Unidades de soporte críticas de vdev no asignadas durante la importación

Cuando importas un pool ZFS en Unraid, necesitas asignar cada disco de tu pool original, incluidos aquellos usados para vdevs de soporte, a las ranuras del pool. Unraid reconocerá automáticamente el papel de cada disco (datos, registro, caché, especial o deduplicación) una vez que se inicie el array. No necesitas especificar manualmente qué propósito servirá cada disco.

Si olvidas incluir una unidad que formaba parte de un vdev de soporte durante la importación, el resultado dependerá de la función del vdev:

Tipo de vdevSi falta una unidad durante la importaciónResultado
Vdev especial o de deduplicaciónEl pool no se importará o será inutilizableThese vdevs store critical metadata or deduplication tables. Without them, ZFS cannot safely mount the pool.
Vdev de log (SLOG)El pool se importa, pero el rendimiento de escritura síncrona disminuye.El pool sigue siendo accesible, pero puedes notar un menor rendimiento en los flujos de trabajo que dependen de escrituras síncronas.
Vdev de cache (L2ARC)El pool se importa, pero se pierde el cache de lecturaEl pool funciona normalmente, pero se pierde el aumento de rendimiento de la caché L2ARC. No se pierde ningún dato.
consejo

Always assign every physical drive from your original ZFS pool, including all support vdevs, when importing into Unraid. This ensures smooth detection and integration. For new pools created in Unraid, support vdevs are optional and generally not needed for most users.


Expansión de almacenamiento

ZFS es poderoso, pero es importante entender cómo funciona su expansión de almacenamiento - especialmente si estás planificando un crecimiento futuro.

Históricamente, los vdevs ZFS tienen un ancho fijo. No puedes agregar un disco a un vdev RAIDZ existente para hacerlo más grande.

Formas de expandir tu pool incluyen:

  • Agregando un nuevo vdev: Haz crecer tu pool agregando otro vdev (como un nuevo espejo o grupo RAIDZ). Esto aumenta la capacidad, pero debes agregar discos en conjuntos que coincidan con la configuración del vdev.
  • Reemplazo de discos con otros más grandes: Cambia cada disco en un vdev, uno a la vez, por uno más grande. Consulta reemplazo de discos para procedimientos detallados. Después de reemplazar y resolver todos los discos, la capacidad del vdev aumenta.
  • Crear un nuevo pool: Iniciar un nuevo pool de ZFS mantiene las cosas organizadas e independientes para diferentes tipos de datos o cargas de trabajo.
Planning ahead

Antes de construir tu pool, considera cuánto almacenamiento necesitarás, no solo hoy, sino en el futuro. ZFS recompensa la buena planificación, especialmente si quieres evitar actualizaciones disruptivas más adelante.


Usar pools ZFS en un servidor Unraid existente

Si estás ejecutando un array tradicional de Unraid y quieres añadir pools de ZFS, aquí hay algunas formas efectivas de integrarlos:

Caso de usoDescripciónDetalles / Ejemplos
Pool SSD/NVMe rápido para appdata y DockerAlmacena la parte de appdata para contenedores y bases de datos rápidos y receptivos. Esto admite snapshots para retrocesos fáciles y también puede alojar VMs para I/O alto.Muchos usuarios eligen un espejo ZFS de 2 discos para esto. Es fácil de expandir y ofrece un rendimiento sólido.
Pool ZFS para datos importantesUtiliza un espejo ZFS o un pool RAIDZ2 para archivos insustituibles como fotos, registros fiscales y datos de user share. ZFS verifica la corrupción y se autocorrige con redundancia.Esta configuración protege datos críticos con comprobaciones de integridad automáticas y capacidades de auto-saneamiento.
Objetivo de respaldo o replicación diariaUsa un disco ZFS (incluso dentro del array de Unraid) como objetivo de replicación. Puedes replicar otros pools localmente o desde otro servidor Unraid.Utiliza zfs send/receive o herramientas como Syncoid para respaldos y restauraciones rápidas y confiables.
Snapshot-based recovery poolMantén snapshots de punto en el tiempo de datos o contenedores críticos. Los snapshots se pueden programar automáticamente y son eficientes en espacio.Esta función permite una rápida recuperación de eliminaciones accidentales o errores de configuración.

Evitar errores comunes de ZFS

ZFS es un sistema de archivos potente, pero existen varios escollos comunes que pueden socavar sus beneficios. Es importante tener en cuenta los siguientes puntos antes de configurar tu pool para una experiencia más fluida:

  • Desajuste de tamaño de disco en RAIDZ: ZFS trata todos los discos en un vdev RAIDZ como del tamaño del más pequeño. Para asegurar la mejor eficiencia, utiliza siempre discos de tamaño idéntico dentro de cada vdev.

  • Expansión de vdevs RAIDZ a través del WebGUI: Mientras que Unraid 7.1.x y versiones más nuevas soportan la expansión de RAIDZ vía la línea de comandos, esta característica aún no está disponible en el WebGUI. Por el momento, expande a través del CLI o añade nuevos vdevs a través del GUI.

  • ZFS disk vs. full zpool: A single ZFS-formatted disk in the Unraid array does not offer the redundancy or features of a dedicated ZFS pool. To leverage advanced functionality, use standalone pools.

  • Desduplicación sin la RAM adecuada: La desduplicación requiere mucha memoria, y habilitarla sin suficiente RAM puede impactar severamente el rendimiento. Solo habilita la desduplicación si entiendes completamente los requisitos.

  • La redundancia de vdev es local: La redundancia en ZFS es local a cada vdev y no se comparte en todo el pool. Asegúrate de planificar la disposición de tus vdevs para lograr el nivel de resiliencia que necesitas.