Cómo instalar ZFS, el mejor sistema de archivos para servidores

Cómo instalar ZFS, el mejor sistema de archivos para servidores

Sergio De Luz

Todos nosotros conocemos y hemos trabajado con sistema de archivos como NTFS en Windows, o EXT4 en Linux, sin embargo, existen otros sistemas de archivos con diferentes características, funcionamiento y rendimiento. Hoy en RedesZone os vamos a hablar en detalle sobre el sistema de archivos ZFS, el mejor sistema de archivos para servidores NAS donde la integridad de los archivos es uno de los aspectos más importantes, sin olvidar la protección de los datos frente a un ransomware o malfuncionamiento de uno de los discos. ¿Estás preparado para saberlo todo sobre ZFS?

Los archivos son la base central de los sistemas operativos. Poder crear, enviar, recibir o editar archivos, es una de las funcionalidades más demandadas de cualquier sistema. Pero esto no sería posible sin un sistema bien organizado, y con las características necesarias para que no tengamos problemas a la hora de manipular estos contenidos.

Si quieres empezar a usar el sistema de archivos ZFS para tu servidor o servidores, es importante conocer cuáles son las principales características que presenta esta opción. Además, en RedesZone te explicaremos cómo poner en marcha esta alternativa, además de cada uno de los puntos iniciales para una correcta configuración. De esta manera, el uso de este sistema de archivos no tendrá ningún tipo de complicación, ya que veremos los pasos más importantes.

 

¿Qué es ZFS y qué características tiene?

ZFS es un sistema de archivos que fue desarrollado originalmente por Sun Microsystems para su sistema operativo Solaris, el código fuente se publicó en el año 2005 como parte del sistema operativo OpenSolaris, pero esto hizo que ZFS pudiera utilizarse en otros sistemas operativos y entornos. En un primer momento hubo problemas con los derechos de ZFS, por lo que se decidió hacer diferentes «ports» para adaptarlo a los diferentes sistemas operativos sin tener problemas de licencias. En el año 2013 se lanzó OpenZFS bajo el paraguas de proyecto Umbrella, de tal forma que ZFS podía ser utilizado sin problemas en sistemas operativos como Linux y FreeBSD entre otros. Desde este momento, podemos encontrarnos con el sistema de archivos ZFS en FreeBSD, NetBSD, Linux como Debian o Ubuntu entre otras.

El sistema de archivos ZFS se utiliza de forma nativa en sistemas operativos basados en FreeBSD, como los populares FreeNAS o XigmaNAS, dos sistemas operativos que están orientados específicamente para servidores NAS. El fabricante QNAP con su sistema operativo QTS basado en Linux, ha estado utilizando EXT4 durante muchos años, pero recientemente ha lanzado un nuevo sistema operativo llamado QuTS Hero que permite utilizar el sistema de archivos ZFS para el almacenamiento masivo, gracias a esta decisión, podremos beneficiarnos de una gran cantidad de mejoras en la integridad de archivos y en su protección frente a posibles errores de escritura.

Actualmente, el fabricante QNAP tiene servidores NAS que únicamente soportan el sistema de archivos ZFS, todos los NAS que tienen una «h» de «Hero» en su modelo es porque disponen del sistema operativo QuTS Hero, y, por tanto, tenemos el sistema de archivos ZFS. En estos servidores NAS disponemos de memoria RAM de tipo ECC (con corrección de errores), esta característica es fundamental cuando estamos usando ZFS porque permite detectar y corregir errores antes de escribirlo en disco. ZFS hace un uso intensivo de la memoria RAM como primer caché, con el objetivo de proporcionar el mejor rendimiento en lectura y en escritura, además, si activamos la deduplicación también vamos a tener un gran consumo de memoria RAM.

Normalmente se recomienda tener 2GB de RAM por cada 1TB de datos que vayamos a utilizar en el pool, aunque podría ser menor. Por este motivo, los NAS de QNAP con QuTS Hero son capaces de soportar hasta 128GB de memoria RAM ECC, con el objetivo de almacenar una gran cantidad de información en ZFS y obtener el mejor rendimiento posible. En las últimas semanas, QNAP también ha lanzado nuevos servidores NAS que nos permiten elegir entre el sistema operativo QTS normal o QuTS Hero, de esta forma, el usuario podrá elegir entre EXT4 o ZFS como sistema de archivo para el almacenamiento de todos los datos en su servidor, estos NAS también tienen la posibilidad de instalar memoria RAM non-ECC (para EXT4) y RAM ECC si vas a elegir ZFS como sistema de archivos.

Antes de empezar a explicar las principales características de ZFS, vamos a hablar de sus «límites». ZFS se ha diseñado de tal forma que nunca tengamos limitaciones en la vida real. ZFS permite crear 248 instantáneas de forma nativa, y también permite crear hasta 248 número de ficheros en el sistema de archivos. Otros límites son los 16 exabytes para el tamaño máximo de un sistema de ficheros, e incluso 16 exabytes para el tamaño máximo de un fichero. La capacidad máxima de almacenamiento un «pool» es de 3 × 1023 petabytes, por lo que tendremos espacio más que de sobra en caso de necesitarlo, además, podremos tener hasta 264 discos en un zpool, y 264 zpools en un sistema.

 

Espacios de almacenamiento virtuales (Storage pools)

En ZFS existen lo que se denomina «espacios de almacenamiento virtuales», o también conocidos como vdevs, que básicamente son el dispositivo de almacenamiento, es decir, los discos duros o SSD para el almacenamiento. Con ZFS no tenemos los típicos RAID que encontramos en sistemas de archivos como EXT4, los típicos RAID 0, RAID 1 o RAID 5 entre otros, también existen aquí, pero de diferente manera.

Un «pool» puede ser de varios tipos, dependiendo de lo que nosotros queramos en cuanto a velocidad, espacio de almacenamiento e integridad de los datos en caso de que uno o varios discos fallen:

  • Stripe: todos los discos se meten dentro de un «pool» y se suman las capacidades de los diferentes discos. En caso de fallo de un disco, perderemos toda la información. Este tipo de pool es como el RAID 0 pero permite incorporar múltiples discos en él.
  • Mirror: todos los discos se meten dentro de un «pool» y se replican, la capacidad máxima del pool será la misma que la menor capacidad de uno de los discos. Todos los discos en el mirror están replicados, por tanto, solamente perderemos información si se rompen todos los discos del mirror. Este tipo de pool es como un RAID 1, pero permite incorporar múltiples discos en él.
  • RAID Z1: todos los discos se meten dentro del pool. Suponiendo que todos los discos tengan la misma capacidad, se suma la capacidad de todos los discos menos la de uno (si tenemos 3 discos de 4TB, el espacio de almacenamiento efectivo sería de 8TB). Permite que uno de los discos se pueda romper, y la información quede intacta. El funcionamiento es como un RAID 5 que todos conocemos. Un RAID Z1 debe tener 3, 5 o 9 discos en cada vdev, por tanto, podremos tener en un vdev un total de 9 discos y que, si falla uno, no tengamos pérdida de datos, en caso de fallar un segundo disco, perderemos toda la información.
  • RAID Z2: todos los discos se meten dentro del pool. Suponiendo que todos los discos tengan la misma capacidad, se suma la capacidad de todos los discos menos la de dos discos (si tenemos 4 discos de 4TB, el espacio de almacenamiento efectivo sería de 8TB). Permite que dos de los discos se puedan romper, y la información quede intacta. El funcionamiento es similar a un RAID 6 que todos conocemos. Un RAID Z2 debe tener 4, 6 o 10 discos en cada vdev, por tanto, podremos tener en un vdev un total de 10 discos y que, si fallan dos, no tengamos pérdida de datos, en caso de fallar un tercer disco, perderemos toda la información.
  • RAID Z3: todos los discos se meten dentro del pool. Suponiendo que todos los discos tengan la misma capacidad, se suma la capacidad de todos los discos menos la de tres (si tenemos 5 discos de 4TB, el espacio de almacenamiento efectivo sería de 8TB). Permite que tres de los discos se puedan romper, y la información quede intacta. Un RAID Z3 debe tener 5, 7 o 11 discos en cada vdev, por tanto, podremos tener en un vdev un total de 1 discos y que, si fallan tres, no tengamos pérdida de datos, en caso de fallar un cuarto disco, perderemos toda la información.

Otras configuraciones que podremos realizar con ZFS, es definir un disco como «Hot Spare«, o también conocido como «Repuesto», para que, en caso de fallo de un disco, automáticamente entre en funcionamiento este disco de respaldo y comience el proceso de resilvering (regeneración de los datos utilizando este nuevo disco que acabamos de introducir al pool). También tenemos la posibilidad de definir un disco como «caché«, que básicamente es activar el L2ARC y tener un mayor rendimiento, esto es ideal si lo utilizamos con un SSD rápido, de tal forma que aumentemos el rendimiento global del sistema, si vas a utilizar un HDD normal, no notarás ninguna mejoría e incluso podría empeorar el rendimiento. Por último, también tenemos la posibilidad de definir un disco como «LOG» (SLOG ZFS Intent Log) para almacenar los registros de escritura que deberían haber ocurrido, esto es de ayuda en caso de un corte en el suministro eléctrico.

ZFS se ayuda del caché que hemos comentado anteriormente para acelerar enormemente las transferencias de datos, tanto en lectura como escritura, además, no solamente mejoraremos al lectura y escritura secuencial sino también la lectura y escritura aleatoria.

 

Sistemas de ficheros ligeros (dataset)

Los dataset son realmente los sistemas de ficheros de ZFS, es lo que hay dentro de un espacio de almacenamiento de ZFS. Para crear un dataset es requisito imprescindible haber creado antes un «pool», de lo contrario no es posible crearlo. Existen dos tipos de dataset diferentes:

  • Filesystem: es el tipo de dataset por defecto, es el que se utiliza para almacenar los archivos, carpetas etc. Se puede establecer directamente el punto de montaje, sin editar el típico fstab de sistemas Linux.
  • ZVOL: es un dataset que representa a un dispositivo por bloques, también lo podemos encontrar en los diferentes sistemas operativos como «Volumen». Este dataset permite crear un dispositivo por bloques, y posteriormente darle formato con sistemas de archivos como EXT4.

Algunas de las características más importantes de un dataset (filesystem) son que permite configurar cuotas, cuota de disco reservada, gestión de permisos con avanzadas listas de control de acceso (ACL), e incluso permite características muy avanzadas como las siguientes:

  • Deduplicación (dedup): la deduplicación es una técnica que consiste en eliminar copias duplicadas de datos repetidos. No se le podría llamar «comprimir», pero sí es cierto que, si realizamos deduplicación, el tamaño final de un conjunto de datos es claramente menor. Esta técnica se utiliza para optimizar el almacenamiento de datos en disco. ZFS hace la deduplicación de manera nativa, por tanto, es muy eficiente, pero para que funcione correctamente necesita una gran cantidad de memoria RAM: por cada 1TB de dataset deduplicado, se necesitan unos 16GB de memoria RAM. Teniendo en cuenta que hoy en día es mucho más barato el espacio de almacenamiento (discos duros) que la RAM, es aconsejable no usar la deduplicación, a no ser que sepas lo que estés haciendo.
  • Compresión: nativamente ZFS permite hacer uso de diferentes algoritmos de compresión, con el objetivo de ahorrar espacio de almacenamiento en el dataset, y, por tanto, en el «pool». El algoritmo de compresión LZ4 es el estándar actualmente y el más recomendado en la mayoría de situaciones, también se pueden utilizar otros como LBJB, e incluso GZIP con diferentes niveles de compresión. No obstante, muy pronto veremos ZSTD que es un nuevo algoritmo de compresión para ZFS. ZSTD es un algoritmo de compresión general, moderno y de alto rendimiento, creado por la misma persona que LZ4, su objetivo es proporcionar niveles de compresión similares a GZIP, pero con mejor rendimiento. Otra característica interesante de ZSTD es que permite seleccionar diferentes niveles de compresión/rendimiento para adaptarse a las necesidades de los administradores.

  • Instantáneas (Snapshots): las instantáneas nos permiten guardar una «foto» del estado del sistema de archivos en un determinado momento, con el objetivo de proteger la información si sufrimos el ataque de un ransomware, o que directamente eliminamos un archivo cuando no deberíamos haberlo hecho. Aunque fabricantes como QNAP o Synology tienen instantáneas y usan EXT4, los snapshots de ZFS son nativos, por lo que su funcionamiento es mucho más eficiente. ZFS nos permite visualizar los datos de estas instantáneas sin revertirlas, revertir todos los cambios, e incluso «clonar» estos snapshots que hemos realizado. Esto de los «clones» permiten tener dos sistemas de ficheros independientes que se crear compartiendo un conjunto común de bloques. El número de snapshots que podemos realizar con ZFS son de 248, es decir, se podría decir que tenemos instantáneas ilimitadas.

ZFS no sobreescribe datos debido al modelo Copy-on-write del que hablaremos posteriormente, por tanto, tomar una instanténea simplemente significa no liberar los bloques utilizados por versiones antiguas. Las instanténas se toman de manera muy rápida y son realmente eficientes desde el punto de vista del espacio, no ocupan nada a no ser que modifiques un dato del que se ha realizado el «snapshot». Es decir, no hay una duplicación de datos, los datos el snapshot y los que hay en producción se comparten, únicamente al modificarlo es cuando empieza a aumentar la ocupación.

 

Auto reparación (Self-healing)

Una de las características más importantes de ZFS es la auto reparación, anteriormente hemos hablado de que existen pools de tipo «mirror» y también RAID-Z, con paridad simple, doble o triple. Un aspecto muy importante es que ZFS no tiene el defecto de «write-hole», esto puede ocurrir cuando se produce un fallo en el suministro eléctrico durante la escritura, esto hace que sea imposible determinado qué bloques de datos o bloques de paridad se han escrito en los discos y cuáles no. En esta situación de error catastrófico, los datos de paridad no coinciden con el resto de datos del espacio de almacenamiento, además, no se puede saber qué datos son incorrectos: los de paridad, o los datos del bloque.

Todos los datos en ZFS son hasheados previamente a su escritura en el pool, el algoritmo del hash se podría configurar a la hora de crear el dataset. Una vez que se ha escrito el dato, el hash es comprobado para verificar que se ha escrito correctamente y no ha habido problemas en la escritura. ZFS permite comprobar la integridad de los datos de forma fácil haciendo uso de estos datos hasheados. En caso de no corresponderse los datos con el hash, lo que se hace es buscar en el «mirror» o calcular los datos a través del sistema de paridad (RAID-Z) para proceder con su comprobación a nivel de hash. Si los datos del hash con iguales, se procede con la corrección de los datos en el bloque. Todo esto se realiza de forma totalmente automática.

 

Copy-on-write

ZFS utiliza una arquitectura copy-on-write, gracias a esto, evitamos los problemas derivados del write-hole que hemos explicado anteriormente. El CoW es una de las principales características de ZFS. El funcionamiento consiste en que todos los punteros a bloques de un sistema de ficheros contienen un checksum, el cual se comprueba al leer el bloque. Los bloques que contienen datos activos no se sobrescriben nunca, lo que se hace es reservar un nuevo bloque, y los datos modificados se escriben en él directamente. Para hacerlo más rápido y eficiente, se suelen agregar varias actualizaciones para realizar posteriormente las transacciones, e incluso se utiliza un ZIL (ZFS Intent Log).

La parte negativa de esto, es que produce una alta fragmentación en los pools, y no hay posibilidad actualmente de realizar una desfragmentación. Si tu pool está formado por SSD, no notarás demasiado la pérdida de rendimiento por la propia naturaleza de los SSD, pero si haces uso de HDD es posible que sí lo notes. En nuestro caso, tenemos una fragmentación superior al 25% después de varios años de utilización:

La única forma de realizar una desfragmentación al pool, es copiando los datos a otro medio, eliminar el pool y crearlo nuevamente. Es decir, no hay una forma de desfragmentar un pool en ZFS, al menos de momento.

 

Dynamic Striping

ZFS distribuye los datos que escribimos dinámicamente en todos los dispositivos virtuales (vdev), con la finalidad de aumentar el rendimiento al máximo. La decisión de dónde colocar los datos se realiza en el momento de la escritura. Esto mejora mucho en pools de tipo mirror y RAID-Z, y, además, elimina de manera eficaz el problema del write-hole que hemos visto anteriormente.

Otra característica interesante es que ZFS utiliza bloques de tamaño variable de hasta 128K, el administrador puede configurar el tamaño máximo de bloque utilizado, ideal para adaptarse a las necesidades de lo que va a escribir en el pool, pero se puede adaptarse automáticamente. En el caso de usar compresión, se usan estos tamaños de bloque variable para que sea mucho más eficiente con el espacio.

 

¿Qué problemas se pueden presentar?

A pesar de que ZFS es un sistema de archivos muy robusto, con integridad de datos y muchas características avanzadas, también puede presentar algún desafío. Por esto, es importante conocer a que te puedes enfrentar al hacer uso de este sistema en particular. Algunos de estos son:

  • Uso de la memoria: Si revisamos la función de caché de ARC, nos encontramos con un sistema que puede consumir una cantidad significativa de memoria RAM. Estos sistemas con una memoria insuficiente, pueden experimentar problemas de rendimiento en algunos casos.
  • Fragmentación: A pesar de que la fragmentación es manejada de una forma más eficaz que otros sistemas de archivos, aún puede generar problemas. Especialmente cuando son pools de espacios limitados.
  • Expansión de almacenamiento: Algo que ZFS no permite en comparación con otros sistemas de archivos, es agregar de forma sencilla un solo disco vdev (conjunto de discos) ya existente en ZFS. Por lo general, las expansiones requieren agregar otros vdev a los pools. Por otro lado, eliminar uno tampoco era una opción. Pero esto se ha corregido en las versiones más recientes de este sistema de archivos. Abordando con éxito esta limitación.
  • Licencia y distribución: Muchas licencias pueden ser incompatibles, y en el caso de ZFS no se incluye de forma predefinida en los kernel de Linux. Esto es posible que llegue a complicar un poco la instalación y las actualizaciones de los sistemas basados en Linux.
  • Desgaste de los discos: Si se da uso de discos SSD para las cachés ZIL o L2ARC, las operaciones de escritura van a aumentar. Por lo cual puede conllevar una aceleración del desgaste de estos discos de estado sólido.
  • Reparaciones pool: Recuperar un pool ZFS dañado cuando no hay respaldos o redundancia, puede ser muy complejo. Incluso en algunos casos, lo más probable es que llegue a ser imposible recuperar ese contenido.
 

Características y mejoras de OpenZFS 2.0

OpenZFS 2.0 ya es una realidad, la última versión de este sistema de archivos de alto rendimiento y gran integridad de datos, se ha actualizado con novedades muy interesantes. Lo primero que debemos indicar, es que OpenZFS 2.0 es compatible con FreeBSD 12 en adelante, y también es compatible con Linux Kernel entre las versiones 3.10 y 5.9, por tanto, tendremos una gran compatibilidad para exprimir todas sus novedades.

Algunas de las múltiples mejoras que han incorporado a este sistema de archivos, son las siguientes:

  • Resilver secuencial de los datos: la función de resilver secuencial, permite reconstruir un mirror vdev en muy poco tiempo en comparación con el resilvering tradicional. La redundancia completa se restaura lo más rápido posible, y posteriormente el pool se limpia automáticamente para comprobar todas las sumas de comprobación.
  • L2ARC persistente: esta función hace que el dispositivo L2ARC para caché de datos sea persistente, aunque reiniciemos el equipo, esto hace que eliminemos el tiempo de preparación de caché habitual que normalmente necesitamos después de importar el grupo.
  • Compresión ZST integrada: en esta nueva versión de ZFS disponemos del algoritmo de compresión Zstandard, un algoritmo de compresión moderno y que tiene un alto rendimiento, además, es un algoritmo de compresión «general», por lo que funciona muy bien independientemente de los datos que vayamos a comprimir. Este algoritmo proporciona niveles de compresión similares o mejores que GZIP, pero con un rendimiento muchísimo mejor. Podremos seleccionar el nivel de compresión para permitir balancear el rendimiento/compresión dependiendo de nuestras necesidades.
  • Incorporación de «Redacted streams» en recepción y envío, esta característica permite enviar subconjuntos de datos a un sistema de destino. Permite a los usuarios ahorrar espacio al no replicar datos sin importancia, e incluso podremos seleccionar el excluir información.

Otros cambios introducidos en esta nueva versión están relacionados con los comandos, se han añadido algunos comandos nuevos, y se han modificado algunos que ya teníamos, para adaptarlos a las nuevas características de ZFS. Si queréis saber en detalle los cambios en los comandos ZFS os recomendamos visitar el GitHub oficial. Otras mejoras incorporadas son la compatibilidad para preasignar espacio, se han reorganizado las páginas man del tutorial oficial de ZFS, se ha habilitado un módulo PAM para cargar automáticamente claves de cifrado ZFS y mucho más. Por último, se ha mejorado enormemente el rendimiento, y es que ahora el borrado de los clones de los snapshots es mucho más rápido con zfs destroy, también es mucho más rápido el envío/recepción de pequeños registros, se ha mejorado la escalabilidad del recurso compartido de zfs, la gestión de memoria y el ARC es mucho más eficiente, también se ha mejorado el rendimiento AES-GCM para proteger nuestros datos con una capa de cifrado.

 

Cómo instalar y poner en marcha ZFS

ZFS se encuentra instalado en sistemas operativos basados en FreeBSD, como, por ejemplo, XigmaNAS o FreeNAS. El sistema de archivos por defecto en estos sistemas operativos es UFS, pero tenemos la opción de utilizar ZFS como sistema de archivos del sistema. Por lo que es fácil de comenzar a usar si tienes un equipo con este software en concreto.

No obstante, lo más recomendable es usar ZFS como sistema de archivos del conjunto de almacenamiento donde vayamos a tener todos y cada uno de nuestros archivos, es aquí donde verdaderamente podremos sacarle el máximo partido. En estos sistemas operativos orientados a NAS, no tendremos que ejecutar ningún comando debido a que todo se hace con la interfaz gráfica de usuario, sin necesidad de tocar nada más. Otros sistemas operativos como Debian, Ubuntu, Linux Mint y otros, necesitaremos instalar ZFS de manera manual.

A continuación, os vamos a enseñar cómo configurar y poner en marcha ZFS en un sistema operativo XigmaNAS (basado en FreeBSD), el procedimiento es similar a FreeNAS ya que estamos usando el mismo sistema de archivos. También os enseñaremos cómo instalarlo en sistemas operativos como Debian, aunque aquí tendremos que hacerlo todo a través de consola de comandos.

 

Configuración y puesta en marcha de ZFS en XigmaNAS

Para la realización de este tutorial hemos utilizado VMware para virtualizar XigmaNAS, y hemos creado un total de 6 discos virtuales. El primer disco virtual de 20GB de capacidad es para instalar el propio sistema operativo, y está en formato UFS que es el nativo de FreeBSD. Los otros 5 discos con 100 GB cada uno, está orientado al espacio de almacenamiento para el sistema de archivos ZFS, y estarán formateados como ZFS.

Una vez se tenga en cuenta estos puntos, pasaremos a ver los primeros pasos que se deben seguir para hacer uso de este sistema de archivos desde cero. Por lo que podrás seguir desde el principio el proceso al completo para su puesta en marcha:

 

Paso 1: Formatear los discos en formato ZFS para añadirlos a un pool

El primer paso es formatear los discos en formato ZFS para añadirlos a un pool, para ello, nos vamos a «Discos / Administración«.

Dentro de este menú, nos vamos a la pestaña de «Opciones del HDD» y pinchamos en «Importar Discos – Importar», para importar todos los discos que hemos configurado en el servidor.

Nos aparecerán todos los discos sin formato, porque los acabamos de añadir, pero también nos aparecerá el disco del sistema operativo en formato UFS.

En la pestaña de «Formatear HDD» seleccionamos todos los discos, y seleccionamos «Sistema de archivos: Almacenamiento ZFS en la agrupación de dispositivos (Pool)«.

En el asistente de configuración para formatearlo, podemos darles una etiqueta de volumen, tal y como podéis ver a continuación:

Pinchamos en siguiente y ya habremos formateado todos los discos en formato ZFS, listo para añadirlos a un pool ZFS.

 

Paso 2: Creación del dispositivo virtual vdev ZFS

Ahora teneos que irnos a «Discos / ZFS» y accederemos a la sección de «Agrupaciones de dispositivos (pools)» en la parte de «Dispositivo virtual». En esta sección pinchamos en el «+» que tenemos en la parte de la derecha.

Aquí lo que tendremos que hacer es seleccionar todos los discos que queremos incorporar el vdev, dependiendo del número de discos que agreguemos, tendremos la posibilidad de configurar un «Stripe», «Mirror» y los diferentes RAIDZ. Nosotros hemos elegido los cinco discos, por tanto, podremos crear los cinco tipos.

Nosotros hemos elegido la opción de «Espejo», o también conocido como «Mirror». Con esta opción tendremos en los cinco discos exactamente la misma información.

Una vez que hayamos creado el dispositivo virtual, nos aparecerá en el listado de dispositivos virtuales, tal y como podéis ver aquí:

 

Paso 3: Configurar el pool y darle un nombre

Una vez que hayamos creado el vdev, debemos irnos a «Administración», y pinchar en «+» para dar formato a este vdev y poder utilizarlo posteriormente con un Dataset o Volumen.

Le tenemos que dar un nombre, y también podremos definir el punto de montaje que nosotros queramos, el punto de montaje predeterminado es /mnt.

Le vamos a dar el nombre de zfsalmacen y elegimos el vdev que hemos creado anteriormente, tal y como podéis ver aquí:

Una vez que lo hayamos creado, nos aparecerá el tamaño total, tamaño libre, fragmentación etc.

Una sección muy importante de XigmaNAS es la sección de «Herramientas», aquí tendremos diferentes asistentes de configuración para realizar diferentes acciones, todo esto lo podemos hacer manualmente mediante comandos, pero con esta interfaz gráfica de usuario podremos hacerlo en un par de clicks. Lo que nos permite realizar XigmaNAS es todo lo siguiente:

  • Actualizar el nucleo ZFS y añadir soporte de nuevas caracteristicas a la agrupacion de dispositivos (Pool)
  • Agrega un dispositivo de reserva a la agrupación de dispositivos de datos (Pool)
  • Agrega un dispositivo para CACHÉ a la agrupación de dispositivos de datos (Pool)
  • Agrega un dispositivo para LOG a la agrupación de dispositivos de datos (Pool)
  • Conecta un dispositivo para datos
  • Desconecta un dispositivo de datos de un espejo
  • Desplegar la historia de comandos ZFS
  • Elimina los errores del dispositivo
  • Eliminar la etiqueta ZFS del dispositivo
  • Elimina una agrupación de dispositivos de datos (Pool).
  • Exportar una agrupación de dispositivos (pool) ZFS desde el sistema
  • Generar un identificador unico para la agrupación de dispositivos (pool)
  • Listar o importar agrupaciónes de dispositivos (pools)
  • Pone el disco fuera de linea
  • Ponga un dispositivo en linea
  • Reemplazar un dispositivo
  • Revisar (Scrub) la agrupación de dispositivos (pool)

En la sección de «Información» podremos ver el estado general del ZFS, el tipo de vdev elegido y también todos los discos que tenemos en el pool. Un detalle importante es que es posible que no tengamos el ZFS actualizado a la última versión en los propios discos, si nos sale ese aviso, tendremos que realizar una actualización que es muy sencilla.

Para actualizarlo, nos vamos a la sección de «herramientas» y seleccionamos la opción «Actualizar el núcleo ZFS y añadir soporte de nuevas características a la agrupación de dispositivos (Pool)» y seguimos con el asistente para actualizarlo

En cuanto lo hayamos actualizado, no nos saldrá ningún aviso, tal y como podéis ver aquí:

 

Paso 4: Creación del dataset o volumen

Crear un dataset es realmente sencillo, nos vamos a «Conjunto de datos (dataset)» y pinchamos en la tecla «+»:

Dentro de la configuración del dataset, tenemos que elegir un nombre, y también el pool donde queremos crear el dataset. Nosotros únicamente tenemos un pool creado, así que no tiene pérdida. Aquí es donde podremos configurar la compresión en tiempo real, el deduplicado, la sincronización, las ACL y muchos más parámetros avanzados.

Debemos recordar que, si seleccionamos la opción de deduplicación, consumirá una gran cantidad de memoria RAM, el propio XigmaNAS nos avisa de esto en su wiki.

El resto de opciones de configuración disponibles son las siguientes:

Una vez creado el dataset, nos aparecerá de esta manera dentro del pool «zfsalmacen» que hemos creado anteriormente.

No debemos olvidar que también podremos crear dispositivos por bloques, los llamados volúmenes en ZFS:

 

Otras opciones de ZFS

Otras opciones disponibles son las instantáneas o snapshots, podremos crear millones de instantáneas, ya sean programadas o manualmente. Para configurar una instantánea, simplemente pinchamos en el «+» para añadir una nueva:

Seleccionamos a qué queremos realizar un snapshot, podremos hacerlo al pool completo, o solamente a uno o varios dataset que tenemos dentro del pool:

Una vez creada la instantánea, veremos algo como esto:

Lo más importante es la columna de «utilizado», ya que es el espacio que ocupa esa instantánea, y es debido a que se han realizado modificaciones o se han eliminado datos. Gracias a que los snapshots son nativos en ZFS, la eficiencia es realmente impresionante.

En la sección de «Configuración» tendremos un resumen de todo lo que hemos configurado hasta el momento, podremos ver los dispositivos virtuales, los pools, y también los dataset y volúmenes creados.

En el menú principal del sistema operativo, podremos ver que tenemos el pool «zfsalmacen», y nos indicará el espacio total, ocupado y disponible.

Tal y como habéis visto, ZFS es un sistema de archivos muy avanzados y nos permite una gran configurabilidad. En caso de fallo de un disco, basta con ponerlo fuera de línea, agregar uno nuevo, añadirlo al pool y realizar un scrub para que revise todo el pool y haga una regeneración de los datos.

 

Configuración y puesta en marcha de ZFS en Debian y otros

Aunque ZFS es un sistema de archivos avanzado, debido a algunos problemas con la licencia de uso, muchas distribuciones Linux no lo soportan por defecto, por lo que la puesta en marcha puede ser algo tediosa en muchos sistemas al tener que instalar y configurar el sistema de archivos manualmente.

Si queremos utilizar este sistema de archivos en nuestro sistema operativo, podemos descargarlo de forma totalmente gratuita desde su página web principal. Además, los principales repositorios cuentan también con paquetes precompilados, por lo que, por ejemplo, si queremos instalarlo en Ubuntu tan solo debemos descargarlo desde los repositorios oficiales con apt que, junto al resto de paquetes necesarios, se instalará de forma totalmente automática.

sudo apt install zfs

instalar zfs

A la hora de gestionar los discos, este sistema de archivos utiliza el concepto de «pool«. Un pool de ZFS puede estar formado por uno o varios discos duros físicos. Por ejemplo, si tenemos 3 discos duros y queremos aprovechar su capacidad como una sola (stripe) con este sistema de archivos, tendremos que configurar un pool que incluya los 3 discos con el siguiente comando:

sudo zpool create pool-redeszone /dev/sdb /dev/sdc /dev/sdd

Si solamente tenemos un disco, simplemente pondremos un disco y tendremos un «stripe» de un solo disco.

Podemos cambiar «pool-redeszone» por el nombre que queramos dar al pool. También debemos cambiar el «sdb», «sdc» y «sdd» que nosotros tengamos en nuestro sistema, por la correspondiente letra de cada disco que queramos añadir. Podemos ver todos los discos conectados con el comando:

sudo fdisk -l

Fdisk Ubuntu LinuxEn caso de querer configurar un mirror con los mismos discos, debemos añadir el parámetro «mirror», quedando de la siguiente manera:

sudo zpool create pool-redeszone mirror /dev/sdb /dev/sdc /dev/sdd

Si queremos configurar un RAIDZ, sería así (se necesitan mínimo 3 discos):

sudo zpool create pool-redeszone raidz /dev/sdb /dev/sdc /dev/sdd

Si queremos configurar un RAIDZ2, sería así (se necesitan mínimo 4 discos):

sudo zpool create pool-redeszone raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde

Si queremos configurar un RAIDZ3, sería así (se necesitan mínimo 5 discos):

sudo zpool create pool-redeszone raidz3 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

Por defecto, Linux montará el pool de discos en la raíz del sistema operativo /, por lo que, si queremos acceder a él y a sus datos, debemos situarnos sobre el directorio /pool-redeszone/.

Si queremos conocer el estado de nuestro pool de discos, podemos hacerlo tecleando en el terminal:

sudo zpool status

Estado ZFSEn caso de querer añadir discos al pool se hace con el comando:

sudo zpool add pool-redeszone /dev/sdx

E incluso destruir el pool (con la correspondiente pérdida de todos los datos) con el comando:

sudo zpool destroy pool-redeszone

Pool ZFS Eliminado

Otras opciones interesantes son los snapshots de ZFS, podremos crear un snapshot de esta forma:

zfs snapshot pool-redeszone/datos@2020-05-22

Y también podríamos borrar el snapshot creado de la siguiente forma:

zfs destroy pool-redeszone/datos@2020-05-22  

Puntos fuertes y débiles de ZFS

Como hemos podido ver, ZFS nos facilita muchas opciones en la gestión de archivos, pero como todo en el mundo de la informática, tiene sus ventajas y sus desventajas. Vamos a ver algunas de ellas, las cuales pueden ser las más importantes o las que más nos pueden influir. De esta manera, podrás tener una idea más clara si es buena idea usar este sistema de archivos para tu servidor o no. Por lo que estos son los puntos fuertes y débiles de esta alternativa:

 

Ventajas

Ya conoces más a fondo qué es este sistema de archivos para servidores y cuáles son sus principales ventajas. Pero, de entre todas ellas, hay que tener en cuenta cuáles son las ventajas que puedes aprovechar al usar este el sistema ZFS. Por ello, aquí reunimos los principales puntos fuertes de este sistema:

  • Se simplifica la administración: En este apartado es donde se unifica la gestión de volúmenes, RAID y sistemas de archivos. En todo caso, lo que vamos a necesitar son algunos comandos para poder crear nuevos volúmenes, niveles de redundancia, sistemas de compresión, puntos de montaje, sistemas de archivos y mucho más. También nos facilita la supervisión de todo esto.
  • Garantiza la integridad de los datos: Cuando se realiza la escritura de los datos, se hace un cálculo que es una suma de comprobación, y esta se escribe junto a los mismos. Acto seguido, cuando se procede a leer estos datos, se realiza de nuevo ese cálculo a modo de verificación. Si este encuentra discrepancias, nos mostrará un error. Pero el propio sistema tratará de arreglarlo de forma automática.
  • Copiado y pegado: En muchos sistemas de archivo, se sobreescriben datos, los antiguos se pierden, pero con ZFS esto no es así. Cuando se realiza esta acción, la nueva información se graba en un bloque diferente, de forma que no se pierden versiones anteriores. Lo que sí se actualizará son los metadatos de los sistemas de archivos. Esto permite que los archivos antiguos se conservan en caso de que queden bloqueados.
 

Desventajas

Sin embargo, como todo, también cuenta con una serie de inconvenientes o, también, debilidades que te pueden interesar antes de apostar de lleno por esta opción. Por esto mismo, estas son las principales desventajas que presenta el uso del sistema de archivos ZFS para servidores:

  • Rendimiento: Esto no suele ser un gran problema, siempre que no se cubra más de un 80% de su capacidad, pues pierde rendimiento. Esto se trata de un problema bastante común, pues cuando este pool se llena más de ese porcentaje, es necesario realizar una ampliación o hacer una migración a un almacenamiento mayor.
  • No se puede reducir el pool: No es posible eliminar dispositivos o vdev una vez estos se han añadido.
  • Capacidad limitada en la redundancia: Con una excepción de pasar de un pool a otro que sea una réplica, no es posible cambiar los tipos de redundancia. Si establecemos uno, la única posibilidad sería crear uno nuevo restaurando los datos desde una copia de seguridad u otra ubicación. Por lo cual se deja inservible el sistema anterior.

Como podemos ver, es un sistema de archivos avanzado para usuarios avanzados, pero una vez que te aprendes los comandos básicos y cómo funciona, es muy fácil su administración y mantenimiento. En caso de querer añadir un disco para caché o para LOG como os hemos explicado anteriormente, también se podría hacer, añadiendo «cache» y «log» seguido de los discos a elegir. Os recomendamos acceder a la web oficial de OpenZFS donde encontraréis una gran serie de recursos para instalar y utilizar este sistema de archivos tan avanzado.

3 Comentarios
Logo redeszone.net
Navega gratis con publicidad…

Navegar por testdevelocidad.es con publicidad personalizada, seguimiento y cookies de forma gratuita. i

Para ello, nosotros y nuestros socios i necesitamos tu consentimiento i para el tratamiento de datos personales i para los siguientes fines:

Las cookies, los identificadores de dispositivos o los identificadores online de similares características (p. ej., los identificadores basados en inicio de sesión, los identificadores asignados aleatoriamente, los identificadores basados en la red), junto con otra información (p. ej., la información y el tipo del navegador, el idioma, el tamaño de la pantalla, las tecnologías compatibles, etc.), pueden almacenarse o leerse en tu dispositivo a fin de reconocerlo siempre que se conecte a una aplicación o a una página web para una o varias de los finalidades que se recogen en el presente texto.

La mayoría de las finalidades que se explican en este texto dependen del almacenamiento o del acceso a la información de tu dispositivo cuando utilizas una aplicación o visitas una página web. Por ejemplo, es posible que un proveedor o un editor/medio de comunicación necesiten almacenar una cookie en tu dispositivo la primera vez que visite una página web a fin de poder reconocer tu dispositivo las próximas veces que vuelva a visitarla (accediendo a esta cookie cada vez que lo haga).

La publicidad y el contenido pueden personalizarse basándose en tu perfil. Tu actividad en este servicio puede utilizarse para crear o mejorar un perfil sobre tu persona para recibir publicidad o contenido personalizados. El rendimiento de la publicidad y del contenido puede medirse. Los informes pueden generarse en función de tu actividad y la de otros usuarios. Tu actividad en este servicio puede ayudar a desarrollar y mejorar productos y servicios.

La publicidad que se presenta en este servicio puede basarse en datos limitados, tales como la página web o la aplicación que esté utilizando, tu ubicación no precisa, el tipo de dispositivo o el contenido con el que está interactuando (o con el que ha interactuado) (por ejemplo, para limitar el número de veces que se presenta un anuncio concreto).

  • Un fabricante de automóviles quiere promocionar sus vehículos eléctricos a los usuarios respetuosos con el medioambiente que viven en la ciudad fuera del horario laboral. La publicidad se presenta en una página con contenido relacionado (como un artículo sobre medidas contra el cambio climático) después de las 18:30 h a los usuarios cuya ubicación no precisa sugiera que se encuentran en una zona urbana.
  • Un importante fabricante de acuarelas quiere realizar una campaña publicitaria en Internet para dar a conocer su última gama de acuarelas con la finalidad de llegar tanto a artistas aficionados como a profesionales y, a su vez, se evite mostrar el anuncio junto a otro contenido no relacionado (por ejemplo, artículos sobre cómo pintar una casa). Se detectará y limitará el número de veces que se ha presentado el anuncio a fin de no mostrarlo demasiadas veces.

La información sobre tu actividad en este servicio (por ejemplo, los formularios que rellenes, el contenido que estás consumiendo) puede almacenarse y combinarse con otra información que se tenga sobre tu persona o sobre usuarios similares(por ejemplo, información sobre tu actividad previa en este servicio y en otras páginas web o aplicaciones). Posteriormente, esto se utilizará para crear o mejorar un perfil sobre tu persona (que podría incluir posibles intereses y aspectos personales). Tu perfil puede utilizarse (también en un momento posterior) para mostrarte publicidad que pueda parecerte más relevante en función de tus posibles intereses, ya sea por parte nuestra o de terceros.

  • En una plataforma de redes sociales has leído varios artículos sobre cómo construir una casa en un árbol Esta información podría añadirse a un perfil determinado para indicar tuinterés en el contenido relacionado con la naturaleza, así como en los tutoriales de bricolaje (con el objetivo de permitir la personalización del contenido, de modo que en el futuro, por ejemplo, se te muestren más publicaciones de blogs y artículos sobre casas en árboles y cabañas de madera).
  • Has visualizado tres vídeos sobre la exploración espacial en diferentes aplicaciones de televisión. Una plataforma de noticias sin relación con las anteriores y con la que no has tenido contacto en el pasado crea un perfil basado en esa conducta de visualización marcando la exploración del espacio como un tema de tu posible interés para para otros vídeos.

El contenido que se te presenta en este servicio puede basarse en un perfilde personalización de contenido que se haya realizado previamente sobre tu persona, lo que puede reflejar tu actividad en este u otros servicios (por ejemplo, los formularios con los que interactúas o el contenido que visualizas), tus posibles intereses y aspectos personales. Un ejemplo de lo anterior sería la adaptación del orden en el que se te presenta el contenido, para que así te resulte más sencillo encontrar el contenido (no publicitario) que coincida con tus intereses.

  • Has leído unos artículos sobre comida vegetariana en una plataforma de redes sociales. Posteriormente has usado una aplicación de cocina de una empresa sin relación con la anterior plataforma. El perfil que se ha creado sobre tu persona en la plataforma de redes sociales se utilizará para mostrarte recetas vegetarianas en la pantalla de bienvenida de la aplicación de cocina.
  • Has visualizado tres vídeos sobre remo en páginas web diferentes. Una plataforma de video, no relacionada con la página web en la que has visualizado los vídeos sobre remo, pero basandose en el perfil creado cuando visistaste dicha web, podrá recomendarte otros 5 vídeos sobre remo cuando utilices la plataforma de video a través de tu televisor .

La información sobre qué publicidad se te presenta y sobre la forma en que interactúas con ella puede utilizarse para determinar lo bien que ha funcionado un anuncio en tu caso o en el de otros usuarios y si se han alcanzado los objetivos publicitarios. Por ejemplo, si has visualizado un anuncio, si has hecho clic sobre el mismo, si eso te ha llevado posteriormente a comprar un producto o a visitar una página web, etc. Esto resulta muy útil para comprender la relevancia de las campañas publicitarias./p>

  • Has hecho clic en un anuncio en una página web/medio de comunicación sobre descuentos realizados por una tienda online con motivo del “Black Friday” online y posteriormente has comprado un producto. Ese clic que has hecho estará vinculado a esa compra. Tu interacción y la de otros usuarios se medirán para saber el número de clics en el anuncio que han terminado en compra.
  • Usted es una de las pocas personas que ha hecho clic en un anuncio que promociona un descuento por el “Día de la madre”de una tienda de regalos en Internet dentro de la aplicación de una web/medio de comunicación. El medio de comunicación quiere contar con informes para comprender con qué frecuencia usted y otros usuarios han visualizado o han hecho clic en un anuncio determinado dentro de la aplicación y, en particular, en el anuncio del “Día de la madre” para así ayudar al medio de comunicación y a sus socios (por ejemplo, las agencias de publicidad) a optimizar la ubicación de los anuncios.

La información sobre qué contenido se te presenta y sobre la forma en que interactúas con él puede utilizarse para determinar, por ejemplo, si el contenido (no publicitario) ha llegado a su público previsto y ha coincidido con sus intereses. Por ejemplo, si hasleído un artículo, si has visualizado un vídeo, si has escuchado un “pódcast” o si has consultado la descripción de un producto, cuánto tiempo has pasado en esos servicios y en las páginas web que has visitado, etc. Esto resulta muy útil para comprender la relevancia del contenido (no publicitario) que se te muestra.

  • Has leído una publicación en un blog sobre senderismo desde la aplicación móvil de un editor/medio de comunicación y has seguido un enlace a una publicación recomendada y relacionada con esa publicación. Tus interacciones se registrarán para indicar que la publicación inicial sobre senderismo te ha resultado útil y que la misma ha tenido éxito a la hora de ganarse tu interés en la publicación relacionada. Esto se medirá para saber si deben publicarse más contenidos sobre senderismo en el futuro y para saber dónde emplazarlos en la pantalla de inicio de la aplicación móvil.
  • Se te ha presentado un vídeo sobre tendencias de moda, pero tu y otros usuarios habéis dejado de visualizarlo transcurridos unos 30 segundos. Esta información se utilizará para valorar la duración óptima de los futuros vídeos sobre tendencias de moda.

Se pueden generar informes basados en la combinación de conjuntos de datos (como perfiles de usuario, estadísticas, estudios de mercado, datos analíticos) respecto a tus interacciones y las de otros usuarios con el contenido publicitario (o no publicitario) para identificar las características comunes (por ejemplo, para determinar qué público objetivo es más receptivo a una campaña publicitaria o a ciertos contenidos).

  • El propietario de una librería que opera en Internet quiere contar con informes comerciales que muestren la proporción de visitantes que han visitado su página y se han ido sin comprar nada o que han consultado y comprado la última autobiografía publicada, así como la edad media y la distribución de género para cada uno de los dos grupos de visitantes. Posteriormente, los datos relacionados con la navegación que realizas en su página y sobre tus características personales se utilizan y combinan con otros datos para crear estas estadísticas.
  • Un anunciante quiere tener una mayor comprensión del tipo de público que interactúa con sus anuncios. Por ello, acude a un instituto de investigación con el fin de comparar las características de los usuarios que han interactuado con el anuncio con los atributos típicos de usuarios de plataformas similares en diferentes dispositivos. Esta comparación revela al anunciante que su público publicitario está accediendo principalmente a los anuncios a través de dispositivos móviles y que es probable que su rango de edad se encuentre entre los 45 y los 60 años.

La información sobre tu actividad en este servicio, como tu interacción con los anuncios o con el contenido, puede resultar muy útil para mejorar productos y servicios, así como para crear otros nuevos en base a las interacciones de los usuarios, el tipo de audiencia, etc. Esta finalidad específica no incluye el desarrollo ni la mejora de los perfiles de usuario y de identificadores.

  • Una plataforma tecnológica que opera con un proveedor de redes sociales observa un crecimiento en los usuarios de aplicaciones móviles y se da cuenta de que, en funciónde sus perfiles, muchos de ellos se conectan a través de conexiones móviles. La plataforma utiliza una tecnología nueva para mostrar anuncios con un formato óptimo para los dispositivos móviles y con un ancho de banda bajo a fin de mejorar su rendimiento.
  • Un anunciante está buscando una forma de mostrar anuncios en un nuevo tipo de dispositivo. El anunciante recopila información sobre la forma en que los usuarios interactúan con este nuevo tipo de dispositivo con el fin de determinar si puede crear un nuevo mecanismo para mostrar la publicidad en ese tipo de dispositivo.

El contenido que se presenta en este servicio puede basarse en datos limitados, como por ejemplo la página web o la aplicación que esté utilizando, tu ubicación no precisa, el tipo de dispositivo o el contenido con el que estás interactuando (o con el que has interactuado) (por ejemplo, para limitar el número de veces que se te presenta un vídeo o un artículo en concreto).

  • Una revista de viajes, para mejorar las experiencias de viaje en el extranjero, ha publicado en su página web un artículo sobre nuevos cursos que ofrece una escuela de idiomas por Internet. Las publicaciones del blog de la escuela se insertan directamente en la parte inferior de la página y se seleccionan en función de la ubicación no precisa del usuario (por ejemplo, publicaciones del blog que explican el plan de estudios del curso para idiomas diferentes al del país en el que este te encuentras).
  • Una aplicación móvil de noticias deportivas ha iniciado una nueva sección de artículos sobre los últimos partidos de fútbol. Cada artículo incluye vídeos alojados por una plataforma de streaming independiente que muestra los aspectos destacados de cada partido. Si adelantas un vídeo, esta información puede utilizarse para determinar que el siguiente vídeo a reproducir sea de menor duración.

Se puede utilizar la localización geográfica precisa y la información sobre las características del dispositivo

Al contar con tu aprobación, tu ubicación exacta (dentro de un radio inferior a 500 metros) podrá utilizarse para apoyar las finalidades que se explican en este documento.

Con tu aceptación, se pueden solicitar y utilizar ciertas características específicas de tu dispositivo para distinguirlo de otros (por ejemplo, las fuentes o complementos instalados y la resolución de su pantalla) en apoyo de las finalidades que se explican en este documento.

O sin publicidad desde 1,67€ al mes

Por solo 1,67€ al mes, disfruta de una navegación sin interrupciones por toda la red del Grupo ADSLZone: adslzone.net, movilzona.es, testdevelocidad.es, lamanzanamordida.net, hardzone.es, softzone.es, redeszone.net, topesdegama.com y más. Al unirte a nuestra comunidad, no solo estarás apoyando nuestro trabajo, sino que también te beneficiarás de una experiencia online sin publicidad ni cookies de seguimiento.