Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon ¿Qué es ZFS? ¿Qué ventajas tiene sobre otros sistemas de archivos?


ZFS (Zettabyte File System) es un sistema de archivos escalable y de alto rendimiento desarrollado por Sun Microsystems. Además, ofrece características como integridad de datos, instantáneas, agrupación y separación dinámica de datos, etc. Se utiliza habitualmente en entornos empresariales y es popular en sistemas que requieren una sólida protección de datos y una gestión eficaz del almacenamiento.

 


 

Almacenamiento en agrupaciones de ZFS

ZFS se basa en el concepto de grupos de almacenamiento para administrar el almacenamiento físico. Desde siempre, los sistemas de archivos se estructuran a partir de un solo dispositivo físico. Para poder ocuparse de varios dispositivos y ofrecer redundancia de datos, se incorporó el concepto del administrador de volúmenes, con el fin de ofrecer una representación de un único dispositivo y evitar que los sistemas de archivos tuvieran que modificarse para aprovechar las ventajas de varios dispositivos. Este diseño significaba otro nivel de complejidad y obstaculizaba determinados avances en los sistemas de archivos, al carecer de control sobre la ubicación física de los datos en los volúmenes virtualizados

ZFS elimina del todo la administración de volúmenes. En vez de tener que crear volúmenes virtualizados, ZFS agrega dispositivos a una agrupación de almacenamiento. La agrupación de almacenamiento describe las características físicas del almacenamiento (organización del dispositivo, redundancia de datos, etc.) y actúa como almacén de datos arbitrario en el que se pueden crear sistemas de archivos. Los sistemas de archivos ya se limitan a dispositivos individuales y les permite compartir espacio en el disco con todos los sistemas de archivos de la agrupación. Ya no es necesario predeterminar el tamaño de un sistema de archivos, ya que el tamaño de los sistemas de archivos crece automáticamente en el espacio asignado a la agrupación de almacenamiento. Al incorporar un nuevo almacenamiento, todos los sistemas de archivos de la agrupación pueden usar de inmediato el espacio en el disco adicional sin procesos complementarios. En muchos sentidos, la agrupación de almacenamiento funciona del mismo modo que un sistema de memoria virtual: si se agrega al sistema un módulo de memoria DIMM, el sistema operativo no obliga a ejecutar comandos para configurar la memoria y asignarla a los procesos individuales. Todos los procesos del sistema utilizan automáticamente la memoria adicional.

Semántica transaccional

ZFS es un sistema de archivos transaccional. Ello significa que el estado del sistema de archivos siempre es coherente en el disco. Los sistemas de archivos tradicionales sobrescriben datos in situ. Esto significa que, si el equipo se queda sin alimentación (por ejemplo, entre el momento en que un bloque de datos se asigna y cuando se vincula a un directorio), el sistema de archivos se queda en un estado incoherente. En el pasado, este problema se solucionaba mediante el comando fsck. Este comando verificaba el estado del sistema de archivos e intentaba reparar cualquier incoherencia durante el proceso. Este problema de sistemas de archivos incoherentes daba muchos quebraderos de cabeza a los administradores y el comando fsck nunca garantizaba la solución a todos los problemas. Posteriormente, los sistemas de archivos han incorporado el concepto de registro de diario. El registro de diario guarda las acciones en un diario aparte, el cual se puede volver a reproducir con seguridad si el sistema se bloquea. Este proceso supone cargas innecesarias, porque los datos se deben escribir dos veces y a menudo provoca una nueva fuente de problemas (como no poder volver a reproducir correctamente el registro de diario).

Con un sistema de archivos transaccional, los datos se administran mediante la semántica copy on write. Los datos nunca se sobrescriben y ninguna secuencia de operaciones se confirma o ignora por completo. Este mecanismo hace que el sistema de archivos nunca pueda dañarse por una interrupción imprevista de la alimentación o un bloqueo del sistema. Aunque pueden perderse fragmentos de datos escritos más recientemente, el propio sistema de archivos siempre será coherente. Asimismo, siempre se garantiza que los datos sincrónicos (escritos mediante el indicador O_DSYNC) se escriban antes de la devolución, por lo que nunca se pierden.

Datos de reparación automática y sumas de comprobación

En ZFS se verifican todos los datos y metadatos mediante un algoritmo de suma de comprobación seleccionable por el usuario. Los sistemas de archivos tradicionales con suma de comprobación la efectúan por bloques obligatoriamente debido a la capa de administración de volúmenes y la disposición del sistema de archivos tradicional. El diseño tradicional significa que algunos errores, como la escritura de un bloque completo en una ubicación incorrecta, pueden hacer que los datos no sean correctos, pero no producen errores de suma de comprobación. Las sumas de comprobación de ZFS se almacenan de forma que estos errores se detecten y haya una recuperación eficaz. La suma de comprobación y recuperación de datos se efectúan en la capa del sistema de archivos, y son transparentes para las aplicaciones.

Asimismo, ZFS ofrece soluciones para la reparación automática de datos. ZFS admite agrupaciones de almacenamiento con diversos niveles de redundancia de datos. Si se detecta un bloque de datos incorrectos, ZFS recupera los datos correctos de otra copia redundante y repara los datos incorrectos al sustituirlos por una copia correcta.

Escalabilidad incomparable

Un elemento de diseño clave en el sistema de archivos ZFS es la escalabilidad. El sistema de archivos es de 128 bits y permite 256 trillones de zettabytes de almacenamiento. Todos los metadatos se asignan de forma dinámica, con lo que no hace falta asignar previamente inodos ni limitar la escalabilidad del sistema de archivos cuando se crea. Todos los algoritmos se han escrito teniendo en cuenta la escalabilidad. Los directorios pueden tener hasta 248 (256 billones) de entradas; no existe un límite para el número de sistemas de archivos o de archivos que puede haber en un sistema de archivos.

Instantáneas de ZFS

Una instantánea es una copia de sólo lectura de un sistema de archivos o volumen. Las instantáneas se crean rápida y fácilmente. Inicialmente, las instantáneas no consumen espacio adicional en el disco dentro de la agrupación.

Como los datos de un conjunto de datos activo cambian, la instantánea consume espacio en el disco al seguir haciendo referencia a los datos antiguos. Como resultado, la instantánea impide que los datos vuelvan a pasar a la agrupación.

Administración simplificada

Uno de los aspectos más destacados de ZFS es su modelo de administración muy simplificado. Mediante un sistema de archivos con distribución jerárquica, herencia de propiedades y administración automática de puntos de montaje y semántica share de NFS, ZFS facilita la creación y administración de sistemas de archivos sin tener que usar varios comandos ni editar archivos de configuración. Con un solo comando puede establecer fácilmente cuotas o reservas, activar o desactivar la compresión, o administrar puntos de montaje para diversos sistemas de archivos. Puede examinar o sustituir dispositivos sin aprender un conjunto independiente de comandos de administrador de volúmenes. Puede enviar y recibir flujos de instantáneas del sistema de archivos .

ZFS administra los sistemas de archivos a través de una jerarquía que permite la administración simplificada de propiedades como cuotas, reservas, compresión y puntos de montaje. En este modelo, los sistemas de archivos se convierten en el punto central de control. Los sistemas de archivos son muy sencillos (equivalen a un nuevo directorio), por lo que se recomienda crear un sistema de archivos para cada usuario, proyecto, espacio de trabajo, etc. Este diseño permite definir los puntos de administración de forma detallada.

Historia de ZFS

Z File System (ZFS) fue creado por Matthew Ahrens y Jeff Bonwick en 2001. ZFS fue diseñado para ser un sistema de archivos de nueva generación para OpenSolaris de Sun Microsystems. En 2008, ZFS fue portado a FreeBSD. Ese mismo año se inició un proyecto para portar ZFS a Linux.

Sin embargo, como ZFS está licenciado bajo la Common Development and Distribution License, que es incompatible con la GNU General Public License, no puede incluirse en el núcleo de Linux. Para sortear este problema, la mayoría de las distribuciones Linux ofrecen métodos para instalar ZFS.

Poco después de que Oracle comprara Sun Microsystems, OpenSolaris pasó a ser de código cerrado. Todo el desarrollo posterior de ZFS también se convirtió en código cerrado. Muchos de los desarrolladores de ZFS no estaban contentos con este giro de los acontecimientos. Dos tercios de los principales desarrolladores de ZFS, incluidos Ahrens y Bonwick, abandonaron Oracle debido a esta decisión. Se unieron a otras empresas y crearon el proyecto OpenZFS en septiembre de 2013. El proyecto ha encabezado el desarrollo de código abierto de ZFS.

Respecto a la licencia, dado que el proyecto OpenZFS está separado de Oracle, algunos probablemente se preguntan por qué no cambian la licencia a algo que sea compatible con la GPL para que pueda incluirse en el núcleo de Linux. Sin embargo, cambiar la licencia implicaría contactar a cualquiera que haya contribuido con código a la implementación actual de OpenZFS (incluyendo el código ZFS inicial y común hasta OpenSolaris) y obtener su permiso para cambiar la licencia. Dado que este trabajo es casi imposible (porque algunos contribuyentes pueden estar muertos o ser difíciles de encontrar), han decidido mantener la licencia que tienen.
  

Ventajas

Como tal, tiene muchas características interesantes:

  • Almacenamiento agrupado: a diferencia de la mayoría de los sistemas de archivos, ZFS combina las características de un sistema de archivos y un gestor de volúmenes. Esto significa que, a diferencia de otros sistemas de archivos, ZFS puede crear un sistema de archivos que abarque una serie de unidades o un pool. No sólo eso, sino que puedes añadir almacenamiento a un pool añadiendo otra unidad. ZFS se encargará de las particiones y el formateo.
  • Copia en escritura: en la mayoría de los sistemas de archivos, cuando los datos se sobrescriben, se pierden para siempre. En ZFS, la nueva información se escribe en un bloque diferente. Una vez completada la escritura, los metadatos del sistema de archivos se actualizan para apuntar a la nueva información. Esto garantiza que si el sistema se bloquea (o sucede cualquier otra cosa) mientras se realiza la escritura, se conservarán los datos antiguos. También significa que el sistema no necesita ejecutar fsck después de un fallo del sistema.
  • Instantáneas o snapshots: ZFS utiliza instantáneas para realizar un seguimiento de los cambios en el sistema de archivos. “La instantánea contiene la versión original del sistema de archivos, y el sistema de archivos en vivo contiene cualquier cambio realizado desde que se tomó la instantánea. No se utiliza espacio adicional. A medida que se escriben nuevos datos en el sistema de ficheros activo, se asignan nuevos bloques para almacenar estos datos”. Si se elimina un archivo, también se elimina la referencia de la instantánea. Por lo tanto, las instantáneas están diseñadas principalmente para realizar un seguimiento de los cambios en los archivos, pero no de la adición y creación de archivos. Las instantáneas pueden montarse como sólo lectura para recuperar una versión pasada de un archivo. También es posible revertir el sistema activo a una instantánea anterior. Todos los cambios realizados desde la instantánea se perderán.
  • Verificación de la integridad de los datos y reparación automática: cada vez que se escriben nuevos datos en ZFS, se crea una suma de comprobación para esos datos. Cuando se leen esos datos, se verifica la suma de comprobación. Si la suma de comprobación no coincide, ZFS sabe que se ha detectado un error. ZFS intentará corregir el error automáticamente.
  • RAID-Z: ZFS puede gestionar RAID sin necesidad de software o hardware adicional. Como era de esperar, ZFS tiene su propia implementación de RAID: RAID-Z. RAID-Z es en realidad una variación de RAID-5. Sin embargo, está diseñado para superar el error de agujero de escritura de RAID-5, “en el que los datos y la información de paridad se vuelven inconsistentes tras un reinicio inesperado”. Para utilizar el nivel básico de RAID-Z (RAID-Z1) se necesitan al menos dos discos para almacenamiento y uno para paridad. RAID-Z2 requiere al menos dos discos para almacenamiento y dos para paridad. RAID-Z3 requiere al menos dos unidades de almacenamiento y tres unidades para la paridad. Cuando se añaden unidades a los pools RAID-Z, tienen que añadirse en múltiplos de dos.
  • Tamaño máximo de archivo de 16 Exabytes: en una época en la que la mayoría de los sistemas de archivos eran de 64 bits, los creadores de ZFS decidieron saltar directamente a los 128 bits para garantizar su futuro. Esto significa que ZFS un almacenamiento máximo de 256 Cuatrillones de Zettabytes unos 16 billones de billones de veces la capacidad de los sistemas de 32 o 64 bits.

¿Cómo instalar ZFS?

Si quieres usar ZFS desde el principio, tendrás que instalar FreeBSD o un sistema operativo que use el kernel illumos (un fork o bifurcación del kernel OpenSolaris). De hecho, el soporte para ZFS es una de las principales razones por las que algunos usuarios experimentados de Linux optan por BSD.

Aun así, algunas distribuciones como Ubuntu ya permiten instalarlo bastante facilidad.

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

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?

 ctualmente, 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.

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. 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.


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.

Ventajas

  • 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

  • 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.


Fuentes:

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.