Después de más de un año de desarrollo, se ha publicado la versión del proyecto OpenZFS 2.3.0, que desarrolla la implementación del sistema de archivos ZFS para Linux y FreeBSD. El proyecto se ha hecho conocido como «ZFS en Linux» y anteriormente se limitaba al desarrollo de un módulo para el núcleo de Linux, pero tras la fusión con el código de FreeBSD fue reconocido como la implementación principal de OpenZFS y renombrado.
El trabajo de OpenZFS ha sido probado con núcleos de Linux desde 4.18 hasta 6.12 y con todas las ramas de FreeBSD, comenzando desde 13.3. El código se distribuye bajo la licencia libre CDDL. OpenZFS ya está siendo utilizado en FreeBSD y forma parte de las distribuciones Debian, Ubuntu, Gentoo, NixOS y ALT Linux. Los paquetes con la nueva versión serán preparados pronto para las principales distribuciones de Linux, incluyendo Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS proporciona una implementación de componentes ZFS, relacionados tanto con el funcionamiento del sistema de archivos como con el funcionamiento del gestor de volúmenes. Se han implementado los componentes: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) y ZPL (ZFS POSIX Layer). El proyecto también permite utilizar ZFS como backend para el sistema de archivos en clúster Lustre. Los desarrollos de OpenZFS se basan en el código original de ZFS, importado del proyecto OpenSolaris y ampliado con mejoras y correcciones de la comunidad Illumos. El proyecto se desarrolla con la participación de empleados del Laboratorio Nacional de Livermore bajo un contrato con el Departamento de Energía de EE. UU.
El código se distribuye bajo la licencia libre CDDL, que no es compatible con GPLv2, lo que impide la integración de OpenZFS en la rama principal del núcleo de Linux, ya que mezclar código bajo las licencias GPLv2 y CDDL no es permitido. Para evitar la incompatibilidad de licencias, se decidió distribuir el producto para Linux completamente bajo la licencia CDDL en forma de un módulo descargable por separado, entregado aparte del núcleo. La estabilidad de la base de código de OpenZFS se evalúa como comparable a otros sistemas de archivos para Linux.
Principales cambios:
- Se ha implementado la posibilidad de agregar discos nuevos en caliente a un grupo RAIDZ existente para aumentar el tamaño del almacenamiento sin detener su funcionamiento y sin necesidad de crear un nuevo grupo de dispositivos. La redistribución de datos redundantes teniendo en cuenta los nuevos discos se realiza automáticamente. Para agregar un disco a un grupo existente, se puede usar el comando «zpool attach POOL raidzP-N NEW_DEVICE», y para rastrear la finalización del proceso en segundo plano de expansión del grupo, se utiliza «zpool status».
- Se ha acelerado significativamente la ejecución de operaciones relacionadas con la deduplicación de bloques de datos. Las optimizaciones, entre otras cosas, han afectado el formato de las tablas de deduplicación; por lo tanto, para aprovechar las optimizaciones propuestas en los grupos existentes, es necesario habilitar la opción «fast_dedup», después de lo cual se crearán nuevas tablas de deduplicación que se usarán simultáneamente con las tablas antiguas.
- Se ha añadido el modo de entrada/salida directa (Direct IO), que permite realizar operaciones de lectura y escritura omitiendo la caché ARC (Caché de Reemplazo Adaptativo). Este modo mejora la eficiencia en situaciones donde la caché puede afectar negativamente el rendimiento debido a operaciones adicionales de copia en memoria, por ejemplo, al usar dispositivos NVMe.
- Se ha añadido la opción «-j» a la mayoría de los comandos (zfs list|get|mount|version, zpool status|list|get|version) para la salida en formato JSON.
- El tamaño permitido de los nombres de archivos y directorios se ha incrementado de 255 a 1023 caracteres (el nuevo tamaño se ha elegido teniendo en cuenta la colocación de 255 caracteres de 4 bytes).
- Se han realizado optimizaciones de rendimiento que abarcan diversas partes de la base de código.
- Se han agregado opciones al módulo del núcleo:
- dmu_ddt_copies
- raidz_expand_max_copy_bytes
- raidz_expand_max_reflow_bytes
- raidz_io_aggregate_rows
- spa_cpus_per_allocator
- spa_num_allocators
- zap_shrink_enabled
- zfetch_max_idistance
- zfs_active_allocator
- zfs_arc_shrinker_seeks
- zfs_dedup_log_flush_entries_min
- .zfs_dedup_log_flush_flow_rate_txgs
- zfs_dedup_log_flush_min_time_ms
- zfs_dedup_log_flush_passes_max
- zfs_dedup_log_mem_max
- zfs_dedup_log_mem_max_percent
- zfs_dedup_log_txg_max
- zfs_dio_enabled
- zfs_dio_write_verify_events_per_second
- zfs_resilver_defer_percent
- zfs_scrub_after_expand
- zfs_snapshot_no_setuid
- zfs_vdev_direct_write_verify
- zio_taskq_write_tpq
Fuente: opennet.ru
