Almacenamiento ZFS
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.
:::
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.
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:
- Detenga el array.
- Haga clic en Agregar Grupo.
- Elija un nombre para su grupo (por ejemplo,
raptor
). - Configure el número de ranuras para coincidir con el número de discos que desea en sus vdev(s) de datos primarios.
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.
- Asigne discos al grupo (el orden de los discos no importa).
- Haga clic en el nombre del grupo (por ejemplo,
raptor
) para abrir su pantalla de configuración. - Establezca el tipo de sistema de archivos a
zfs
ozfs-encrypted
(para cifrado LUKS).
- Elija su perfil de asignación: esto determina la redundancia y el rendimiento de su grupo.
Antes de finalizar, revise las secciones sobre perfiles de asignación y topología para tomar una decisión informada.
- Habilite la compresión si lo desea (recomendado para la mayoría de las cargas de trabajo).
- 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.
-
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:
- Vaya a la pestaña Principal en el WebGUI.
- Detenga el array.
- Haga clic en una ranura vacía bajo Dispositivos del Array.
- Seleccione el disco que desea agregar.
- Bajo Sistema de archivos, elija
zfs
ozfs-encrypted
.
- Haga clic en Aplicar.
- 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:
Perfil | Redundancia | Rendimiento | Expansión | Eficiencia Espacial | Caso de uso típico |
---|---|---|---|---|---|
Raya | Ninguno | Rápido, pero arriesgado | Agregar más discos | 100% | Almacenamiento temporal/de raspado |
Espejo | 1:1 (estilo RAID 1) | Excelente para E/S aleatoria | Agregar más espejos | 50% | Alto rendimiento, fácil expansión |
RAIDZ1 | 1 disco por vdev | Rápido para archivos grandes. No ideal para pequeñas escrituras o escrituras aleatorias. | Agregar nuevos vdevs | Alta | Uso general, tolerancia a fallas de 1 disco |
RAIDZ2 | 2 discos por vdev | Como Z1, pero con escrituras un poco más lentas (paridad adicional) | Agregar nuevos vdevs | Moderado | Datos importantes, tolerancia a fallas de 2 discos |
RAIDZ3 | 3 discos por vdev | Como Z2, con más sobrecarga de escritura (para máxima seguridad) | Agregar nuevos vdevs | Inferior | Crítico para la misión, tolerancia a fallas de 3 discos |
- 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.
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.
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.
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
- Detenga el array: Asegúrese de que su array de Unraid esté detenido.
- Añadir una nueva piscina: Haz clic en Añadir Piscina.
- 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.
- Configure el sistema de archivos a "Auto": Haga clic en el nombre del grupo (por ejemplo,
raptor
) y configure Sistema de Archivos en Auto. - Finalice e inicie el array: Haga clic en Hecho, luego inicie el array.
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ósito | Riesgos/Notas |
---|---|---|
Vdev especial | Almacena metadatos y archivos pequeños | El pool se vuelve ilegible si se pierde. |
Vdev de deduplicación | Permite la deduplicación | Requiere 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íncrona | Opcional. Solo beneficioso para ciertas cargas de trabajo. |
Vdev de cache (L2ARC) | Proporciona cache de lectura basado en SSD | Opcional. Puede mejorar las velocidades de lectura para grandes conjuntos de trabajo. |
Vdev de repuesto | No soportado en Unraid (a partir de la versión 7.1.2) |
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 vdev | Si falta una unidad durante la importación | Resultado |
---|---|---|
Vdev especial o de deduplicación | El pool no se importará o será inutilizable | These 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 lectura | El pool funciona normalmente, pero se pierde el aumento de rendimiento de la caché L2ARC. No se pierde ningún dato. |
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.
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 uso | Descripción | Detalles / Ejemplos |
---|---|---|
Pool SSD/NVMe rápido para appdata y Docker | Almacena 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 importantes | Utiliza 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 diaria | Usa 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 pool | Manté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.