OpenZFS 2.0 llega con soporte para FreeBSD, zstd y más

Iniciado por Dragora, Diciembre 03, 2020, 04:21:52 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.


Después de un año y medio de desarrollo, se lanzó el proyecto OpenZFS 2.0 que desarrolla la implementación del sistema de archivos ZFS para Linux y FreeBSD.

El proyecto se conoció como «ZFS on Linux» y anteriormente se limitaba a desarrollar un módulo para el kernel de Linux, pero después de la transferencia del soporte para FreeBSD, se reconoció como la implementación principal de OpenZFS y se eliminó de la mención de Linux en el nombre. Toda la actividad de desarrollo de ZFS para sistemas Linux y BSD ahora se concentra en un proyecto y se desarrolla en un repositorio común.

OpenZFS ya se usa en el upstream de FreeBSD (HEAD) y se incluye con las distribuciones Debian, Ubuntu, Gentoo, Sabayon Linux y ALT Linux. Los paquetes con la nueva versión pronto estarán preparados para las principales distribuciones de Linux, incluidas Debian, Ubuntu, Fedora, RHEL / CentOS.

En FreeBSD, el código está sincronizado con la base de código OpenZFS actual. OpenZFS se ha probado con los kernels de Linux 3.10 a 5.9 (kernels compatibles con la última versión de 2.6.32) y las ramas FreeBSD 12.2, stable / 12 y 13.0 (HEAD).

Sobre OpenZFS

OpenZFS proporciona una implementación de los componentes de ZFS relacionados tanto con el sistema de archivos como con el administrador de volumen. En particular, se implementan los siguientes componentes: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) y ZPL (ZFS POSIX Layer).

Además, el proyecto ofrece la posibilidad de utilizar ZFS como backend para el sistema de archivos agrupado Lustre. El trabajo del proyecto se basa en el código ZFS original importado del proyecto OpenSolaris y mejorado con mejoras y correcciones de la comunidad Illumos. El proyecto se está desarrollando con la participación del personal del Laboratorio Nacional de Livermore bajo contrato con el Departamento de Energía de Estados Unidos.

El código se distribuye bajo la licencia CDDL gratuita, que es incompatible con GPLv2, que no permite integrar OpenZFS en el kernel de Linux ascendente, ya que no se permite mezclar código bajo las licencias GPLv2 y CDDL. Para solucionar esta incompatibilidad de licencias, se decidió distribuir todo el producto bajo la licencia CDDL como un módulo descargable por separado que se envía por separado del kernel. La estabilidad de la base de código OpenZFS se considera comparable a la de otros FS para Linux.

Principales novedades de OpenZFS 2.0

De los principales cambios el que mas se destaca es el soporte para la plataforma FreeBSD y la base de código está unificada para soportar diferentes sistemas operativos. Todos los cambios relacionados con FreeBSD se están desarrollando ahora en el repositorio principal de OpenZFS y este proyecto se considera la implementación principal de ZFS para futuras versiones de FreeBSD.

Ademas de que mover FreeBSD a OpenZFS eliminó muchas de las race conditions y problemas de bloqueo, y trajo nuevas características a FreeBSD, como un sistema de cuotas extendido, cifrado de conjuntos de datos, clases de asignación separadas, uso de instrucciones de procesador vectorial para acelerar implementación de RAIDZ y cálculos de suma de comprobación, compatibilidad con el algoritmo de compresión ZSTD, modo de host múltiple (MMP, Protección de modificador múltiple) y herramientas de línea de comando mejoradas.

Otro cambio importante, es que se implementó el modo de ejecución secuencial del comando «resilver» (resilver secuencial), que reconstruye la distribución de datos teniendo en cuenta los cambios en la configuración de la unidad.

El nuevo modo permite reconstruir un espejo vdev fallido mucho más rápido que un recuperador tradicional: primero, la redundancia perdida en el arreglo se restaura lo más rápido posible, y solo entonces se inicia automáticamente la operación de «limpieza» para verificar todas las sumas de verificación de datos. El nuevo modo comienza cuando agrega o reemplaza una unidad con los comandos «zpool replace | attach» con la opción «-s».

Se implementó un caché de segundo nivel persistente (L2ARC), en el que los datos de un dispositivo conectado para el almacenamiento en caché se guardan entre reinicios del sistema, es decir, la caché después del inicio permanece «caliente» y el rendimiento alcanza inmediatamente los valores nominales, sin pasar por la fase de llenado de la caché inicial.

Se agregó soporte para el algoritmo de compresión zstd (Zstandard), que demuestra una velocidad de compresión 3-5 veces más rápida en comparación con zlib/Deflate y una descompresión dos veces más rápida, al tiempo que mejora el nivel de compresión en un 10-15%.

Ademas de que proporcionan varios niveles de compresión, que ofrecen un equilibrio diferente entre la eficiencia y el rendimiento de la compresión.

Fuente: Github