Almacenamiento ZFS
Nos gustaría expresar nuestro agradecimiento a Ed Rawlings (Spaceinvader One) por la experiencia y la guía de la que esta documentación de almacenamiento de ZFS ha sido adaptada. Sus tutoriales y perspectivas han asistido a innumerables usuarios de Unraid en dominar técnicas avanzadas de almacenamiento. Apreciamos sus continuas contribuciones a la comunidad de Unraid.
ZFS trae integridad de datos avanzada, configuraciones de almacenamiento flexibles y alto rendimiento a su sistema Unraid. Esta guía explica los conceptos básicos de ZFS y lo guía a través de la administración de pools de ZFS directamente desde el WebGUI de Unraid. Ya sea configurando nuevo almacenamiento ZFS o integrando un pool existente, encontrará los pasos y el contexto que necesita 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.
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 de ZFS (denominado "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 los vdevs, pero cada vdev es responsable de su tolerancia a fallos.
La redundancia siempre es por vdev. Si falla algún vdev, todo el pool falla, incluso si otros vdevs están en buen estado. ¡Planee sus 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.
Este conteo 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 (checksums). Si bien un solo disco no puede autocurarse de bit rot, ZFS detectará corrupción y le alertará, permitiéndole restaurar desde una copia de seguridad antes de que ocurra la pérdida de datos silenciosa.
-
Características de ZFS: Puede utilizar snapshots y replicación de ZFS en este disco, lo que lo hace ideal para objetivos de respaldo, conjuntos de datos específicos o escenarios donde desea 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 configura un pool de ZFS, su perfil de asignación determina cómo se protege su datos, cómo funciona su pool, y cómo puede expandirlo. Aquí hay una comparación simple para ayudarle a decidir qué perfil se adapta a sus 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 borrador |
Espejo | 1:1 (estilo %%RAID 1 | raid1%%) | Excelente para I/O aleatorio | Agregar más espejos | 50% |
RAIDZ1 | 1 disco por vdev | Rápido para archivos grandes. No es ideal para escrituras pequeñas o aleatorias. | Agregar nuevos vdevs | Alto | 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 | Bajo | 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 coloca todos sus discos en un gran vdev RAIDZ2, puede perder dos discos sin perder datos. Sin embargo, la expansión significa agregar otro vdev completo.
- Obtendrá mejor rendimiento en paralelo si divide discos en varios vdevs RAIDZ1 más pequeños. Tenga cuidado; si dos discos fallan en el mismo vdev, perderá 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 de Unraid. Dos temas comunes de interés 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 en ZFS - Haga clic para expandir/contraer
Es posible que haya encontrado el consejo obsoleto: “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 la RAM para su Caché de Reemplazo Adaptativo (ARC), lo que acelera las lecturas accedidas frecuentemente.
Unraid limita automáticamente ZFS al uso de una porción razonable de la RAM de su sistema (usualmente 1/8 del total de RAM). Esto permite que ZFS funcione bien sin afectar los contenedores Docker, VMs, o el sistema operativo de Unraid.
Importando grupos ZFS creados en otros sistemas
Unraid puede importar grupos ZFS creados en otras plataformas sin grandes complicaciones.
Cómo importar un pool de 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 log, caché/L2ARC, especial/dedup) se listan bajo Subpools en el WebGUI. No hay necesidad de agregar subpools por separado después de iniciar la importación. Unraid los importará automáticamente junto con los discos de datos principales cuando se asignen todas las unidades requeridas.
Después de importar, es altamente recomendado 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 de ZFS como subpools. La mayoría de los usuarios no necesitan estos, pero es posible que los usuarios avanzados se encuentren con ellos:
Vdev de soporte (subpool) | Propósito | Riesgo/Notas |
---|---|---|
Vdev especial | Almacena metadatos y archivos pequeños | La agrupación se vuelve ilegible si se pierde. |
Vdev de duplicación por eliminación | Habilita la duplicación por eliminación | Requiere grandes cantidades de RAM; es arriesgado para la mayoría de los usuarios. Evitar a menos que se tengan necesidades técnicas. |
Vdev de registro (SLOG) | Mejora el rendimiento de escritura síncrona | Opcional. Solo es beneficioso para ciertas cargas de trabajo. |
Vdev de cache (L2ARC) | Proporciona cache de lectura basado en SSD | Opcional. Puede mejorar la velocidad de lectura para conjuntos de trabajo grandes. |
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/subpools de soporte a menos que tenga una necesidad específica y bien entendida. Están diseñados para cargas de trabajo especializadas y pueden introducir complejidad o riesgo si se utilizan incorrectamente.
Unidades de soporte críticas de vdev no asignadas durante la importación
Cuando importe un pool de ZFS en Unraid, debe asignar cada unidad de su pool original, incluidas las utilizadas para los vdevs de soporte, a los slots del pool. Unraid reconocerá automáticamente el rol de cada unidad (datos, registro, caché, especial o dedup) una vez que comience el array. No es necesario especificar manualmente qué unidad sirve para qué propósito.
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 registro (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 caché (L2ARC) | El pool se importa, pero se pierde el caché 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 puede agregar un disco a un vdev RAIDZ existente para hacerlo más grande.
Formas de expandir tu pool incluyen:
- Añadiendo un nuevo vdev: Crezca su pool agregando otro vdev (como un nuevo espejo o grupo RAIDZ). Esto aumenta la capacidad, pero debe agregar discos en conjuntos que coincidan con la configuración del vdev.
- Reemplazo de unidades con unidades más grandes: Reemplace cada unidad en un vdev, una a la vez, por un disco más grande. Consulte reemplazo de discos para procedimientos detallados. Después de que todas las unidades sean reemplazadas y el pool se resuelva, 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 su pool, considere cuánta almacenamiento necesitará, no solo hoy, sino en el futuro. ZFS recompensa la buena planificación, especialmente si desea 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 | Store the appdata share for fast, responsive containers and databases. This supports snapshots for easy rollbacks and can also host VMs for high I/O. | Muchos usuarios eligen un espejo de ZFS de 2 unidades para esto. Es fácil de expandir y ofrece un rendimiento sólido. |
Pool ZFS para datos importantes | Use un espejo ZFS o un pool RAIDZ2 para archivos insustituibles como fotos, registros de impuestos y datos de user share. ZFS verifica la corrupción y se autocura 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 | Use un disco ZFS (incluso dentro del array de Unraid) como un objetivo de replicación. Puede 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 | Keep point-in-time snapshots of critical data or containers. snapshots can be auto-scheduled and are space-efficient. | Esta característica permite una rápida recuperación de eliminaciones accidentales o configuraciones erróneas. |
Evitar errores comunes de ZFS
ZFS es un poderoso sistema de archivos, pero hay varios errores comunes que pueden socavar sus beneficios. Es importante tener en cuenta los siguientes puntos antes de configurar su pool para una experiencia más fluida:
-
Desajuste de tamaño de discos 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, use 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 admiten la expansión de RAIDZ a través de la línea de comandos, esta función aún no está disponible en el WebGUI. Por el momento, expanda a través del CLI o agregue 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.
-
Deduplicación sin RAM adecuada: La deduplicación requiere memoria significativa, y habilitarlo sin suficiente RAM puede impactar gravemente el rendimiento. Solo habilite la deduplicación si comprende completamente los requisitos.
-
La redundancia de vdev es local: La redundancia en ZFS es local para cada vdev y no se comparte a través del pool. Asegúrese de planear el diseño de su vdev para lograr el nivel de resiliencia que necesita.