Después de más de un año de desarrollo, se ha lanzado el proyecto OpenZFS 2.3.0, que desarrolla la implementación del sistema de archivos ZFS para Linux y FreeBSD. El proyecto se conoció como "ZFS en Linux" y anteriormente se limitaba a desarrollar un módulo para el kernel LinuxPero después de fusionarse con el código de FreeBSD, fue reconocida como la implementación principal de OpenZFS y renombrada.
El funcionamiento de OpenZFS ha sido verificado con kernels Linux Compatible con las versiones 4.18 a 6.12 y todas las ramas de FreeBSD a partir de la 13.3. El código se distribuye bajo la licencia libre CDDL. OpenZFS ya se utiliza en FreeBSD y está incluido en las distribuciones. Debian, Ubuntu, Gentoo, NixOS y ALT LinuxLos paquetes con la nueva versión estarán listos próximamente para las principales distribuciones. LinuxIncluso Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS proporciona una implementación de componentes ZFS relacionados tanto con el sistema de archivos como con el administrador de volúmenes. Componentes implementados: SPA (Storage Pool Allocator), DMU (Unidad de gestión de datos), ZVOL (Volumen emulado ZFS) y ZPL (Capa ZFS POSIX). El proyecto también permite utilizar ZFS como backend para el sistema de archivos en clúster Lustre. El trabajo de OpenZFS se basa en el código ZFS original, importado del proyecto OpenSolaris y ampliado con mejoras y correcciones de la comunidad Illumos. El proyecto se está desarrollando con la participación de empleados del Laboratorio Nacional Livermore en virtud de un contrato con el Departamento de Energía de Estados Unidos.
El código se distribuye bajo la licencia libre CDDL, que es incompatible con la GPLv2, lo que impide que OpenZFS se integre en el núcleo principal del sistema operativo. Linux, ya que mezclar código bajo las licencias GPLv2 y CDDL es inaceptable. Para sortear la incompatibilidad de licencias, se decidió distribuir el producto para Linux Con licencia completa bajo CDDL como módulo de carga independiente, distribuido por separado del kernel. La estabilidad del código fuente de OpenZFS se considera comparable a la de otros sistemas de archivos. Linux.
Cambios importantes:
- Se ha implementado la capacidad de agregar nuevos discos sobre la marcha a una matriz RAIDZ existente para aumentar el tamaño de almacenamiento sin detener el trabajo y sin la necesidad de crear un nuevo grupo de unidades. La redistribución de datos redundantes teniendo en cuenta los discos nuevos se realiza de forma automática. Para agregar un disco a un grupo existente, puede usar el comando “zpool adjunto POOL raidzP-N NEW_DEVICE” y para monitorear la finalización del proceso de expansión de la matriz en segundo plano, puede usar “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, afectaron el formato de las tablas de deduplicación, por lo que para habilitar las optimizaciones propuestas en los pools existentes, se debe habilitar la opción “fast_dedup”, luego de lo cual se crearán nuevas tablas de deduplicación, que se utilizarán en paralelo con las viejas mesas.
- Se agregó el modo Direct IO, que le permite realizar operaciones de lectura y escritura sin pasar por la caché ARC (Caché de reemplazo adaptativa). Este modo mejora el rendimiento en situaciones en las que el almacenamiento en caché puede afectar negativamente al rendimiento debido a operaciones de copia de memoria adicionales, como cuando se utilizan dispositivos NVMe.
- La mayoría de los comandos (zfs list|get|mount|version, zpool status|list|get|version) han agregado la opción “-j” para la salida en formato JSON.
- El tamaño permitido de los nombres de archivos y directorios se incrementó de 255 a 1023 caracteres (el nuevo tamaño se eligió para acomodar 255 caracteres de 4 bytes).
- Se han realizado optimizaciones de rendimiento en varias partes del código base.
- Se han agregado opciones al módulo del kernel:
- dmu_ddt_copias
- 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_segundo
- zfs_resilver_defer_percent
- zfs_scrub_after_expand
- zfs_snapshot_no_setuid
- zfs_vdev_direct_write_verify
- zio_taskq_write_tpq
Fuente: opennet.ru
