Lançamento do OpenZFS 2.3.0, implementações ZFS para Linux e FreeBSD

Após mais de um ano de desenvolvimento, foi publicado o lançamento do projeto OpenZFS 2.3.0, desenvolvendo a implementação do sistema de arquivos ZFS para Linux e FreeBSD. O projeto ficou conhecido como "ZFS on Linux" e anteriormente se limitava ao desenvolvimento de um módulo para o kernel Linux, mas após a fusão com o código do FreeBSD foi reconhecido como a principal implementação do OpenZFS e renomeado.

OpenZFS foi testado com kernels Linux de 4.18 a 6.12 e todas as ramificações do FreeBSD a partir de 13.3. O código é distribuído sob a licença CDDL gratuita. OpenZFS já é usado no FreeBSD e está incluído nas distribuições Debian, Ubuntu, Gentoo, NixOS e ALT Linux. Os pacotes com a nova versão serão preparados em breve para as principais distribuições Linux, incluindo Debian, Ubuntu, Fedora, RHEL/CentOS.

OpenZFS fornece uma implementação de componentes ZFS relacionados ao sistema de arquivos e ao gerenciador de volume. Componentes implementados: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) e ZPL (ZFS POSIX Layer). O projeto também permite que o ZFS seja usado como back-end para o sistema de arquivos em cluster Lustre. O trabalho do OpenZFS é baseado no código ZFS original, importado do projeto OpenSolaris e ampliado com melhorias e correções da comunidade Illumos. O projeto está sendo desenvolvido com a participação de funcionários do Laboratório Nacional Livermore sob contrato com o Departamento de Energia dos Estados Unidos.

O código é distribuído sob a licença CDDL gratuita, que é incompatível com GPLv2, que não permite a integração do OpenZFS no ramo principal do kernel Linux, uma vez que misturar código sob as licenças GPLv2 e CDDL é inaceitável. Para contornar a incompatibilidade de licenciamento, decidiu-se distribuir todo o produto para Linux sob a licença CDDL como um módulo carregado separadamente, fornecido separadamente do kernel. A estabilidade da base de código OpenZFS é avaliada como comparável a outros FS para Linux.

Grandes mudanças:

  • Foi implementada a capacidade de adicionar novos discos dinamicamente a um array RAIDZ existente para aumentar o tamanho do armazenamento sem interromper o trabalho e sem a necessidade de criar um novo grupo de unidades. A redistribuição de dados redundantes levando em consideração novos discos é realizada automaticamente. Para adicionar um disco a um grupo existente, você pode usar o comando “zpool attachment POOL raidzP-N NEW_DEVICE” e para monitorar a conclusão do processo de expansão da matriz em segundo plano, você pode usar “zpool status”.
  • A execução de operações relacionadas à desduplicação de blocos de dados foi significativamente acelerada. As otimizações, entre outras coisas, afetaram o formato das tabelas de desduplicação, portanto para habilitar as otimizações propostas nos pools existentes, é necessário habilitar a opção “fast_dedup”, após a qual serão criadas novas tabelas de desduplicação, que serão utilizadas em paralelo com as mesas antigas.
  • Adicionado modo Direct IO, que permite realizar operações de leitura e gravação ignorando o cache ARC (Adaptive Replacement Cache). Este modo melhora o desempenho em situações em que o cache pode impactar negativamente o desempenho devido a operações adicionais de cópia de memória, como ao usar dispositivos NVMe.
  • A maioria dos comandos (zfs list|get|mount|version, zpool status|list|get|version) adicionou a opção “-j” para saída no formato JSON.
  • O tamanho permitido para nomes de arquivos e diretórios foi aumentado de 255 para 1023 caracteres (o novo tamanho foi escolhido para acomodar 255 caracteres de 4 bytes).
  • Otimizações de desempenho foram feitas em várias partes da base de código.
  • Opções foram adicionadas ao módulo do kernel:
    • dmu_ddt_copies
    • raidz_expand_max_copy_bytes
    • raidz_expand_max_reflow_bytes
    • raidz_io_agregado_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

Fonte: opennet.ru

Adicionar um comentário