Lançado o ZFS 2.3, com suporte a expansão de RAIDZ
(github.com/openzfs)- O OpenZFS 2.3.0 traz como principal recurso o RAIDZ Expansion, que permite adicionar novos dispositivos a um pool RAIDZ existente para aumentar a capacidade sem downtime
- O Fast Dedup melhora significativamente o desempenho do recurso de desduplicação existente, junto com outras melhorias de performance em toda a base de código
- O Direct IO permite ignorar o ARC em operações de leitura/gravação, mirando cenários como dispositivos NVMe, em que o cache pode prejudicar a eficiência
- Foram adicionados saída JSON opcional para comandos mais usados, suporte a nomes de arquivos e diretórios de até 1023 caracteres e correções importantes de bugs que tratam problemas de versões anteriores
- O suporte abrange kernels Linux 4.18~6.12 e FreeBSD 13.3, 14.0~14.2, e 134 pessoas participaram deste ciclo de lançamento
O que mudou no OpenZFS 2.3.0
- O OpenZFS 2.3.0 foi atualizado com foco em expansão de armazenamento, desempenho de desduplicação, caminho de entrada/saída, formato de saída de comandos e suporte ao comprimento de nomes de arquivos
- A tag de lançamento é zfs-2.3.0 e inclui as mudanças desde o OpenZFS 2.2.0
Expansão de armazenamento e melhorias de desempenho
- RAIDZ Expansion permite adicionar novos dispositivos a um pool RAIDZ existente para aumentar a capacidade de armazenamento sem downtime
- Fast Dedup é uma grande atualização de desempenho do recurso de desduplicação existente no OpenZFS
- Direct IO permite ignorar o ARC em operações de leitura/gravação
- O objetivo é melhorar o desempenho em situações como dispositivos NVMe, em que o cache pode atrapalhar a eficiência
- Também foram incluídas várias melhorias de desempenho em toda a base de código
Saída de comandos e comprimento de nomes
- JSON adiciona saída JSON opcional aos comandos mais usados
- Long names oferece suporte a nomes de arquivos e diretórios de até 1023 caracteres
Estabilidade, plataformas e contribuições
- Inclui correções importantes de bugs que tratam problemas relatados em versões anteriores
- Plataformas suportadas:
- kernels Linux 4.18~6.12
- FreeBSD 13.3, 14.0~14.2
- 134 contribuidores participaram deste ciclo de lançamento
Documentação e changelog
- A documentação do OpenZFS pode ser consultada para Linux e FreeBSD
- O changelog completo v2.2.0 - v2.3.0 fornece o histórico completo de mudanças do OpenZFS 2.2.0 ao 2.3.0
Mudanças nas opções de módulo
- Todas as opções e seus alvos de controle estão organizados na documentação de module parameters
- As novas opções de módulo incluem itens relacionados a expansão de RAIDZ, log de desduplicação, Direct IO, allocator, scrub e resilver
- Ex.:
raidz_expand_max_copy_bytes,raidz_expand_max_reflow_bytes,zfs_dio_enabled,zfs_dedup_log_mem_max,zfs_scrub_after_expand
- Ex.:
- Opção de módulo removida:
zfetch_array_rd_sz
- Opções de módulo alteradas:
zfs_arc_shrinker_limitzfs_bclone_enabledzfs_vdev_disk_classiczio_taskq_write
1 comentários
Opiniões no Hacker News
A expansão de RAIDZ no ZFS, preparada há anos, finalmente entrou
Os principais recursos são: expansão de RAIDZ, que permite adicionar dispositivos a um pool RAIDZ existente para aumentar a capacidade sem interrupção; deduplicação rápida, que aumenta bastante o desempenho da deduplicação no OpenZFS; E/S direta, que contorna o ARC para melhorar o desempenho em ambientes onde cache pode ser ineficiente, como NVMe; saída JSON opcional para comandos usados com frequência; e suporte a nomes de arquivos e diretórios de até 1023 caracteres
Queria entender para que tipo de uso esse recurso é indicado
Também me pergunto se a equipe do ZFS realmente trata criptografia como prioridade de primeira classe
O ZFS no Linux herdou muito da reputação do ZFS no Solaris, mas quem o usa em produção precisa olhar com bastante atenção o rastreador de issues para enxergar a realidade
Não entendo como o Windows, de longe a maior plataforma de PC em número de usuários, ainda não tem uma resposta ao ZFS
A Microsoft teve o WinFS e depois o ReFS, mas eles foram ficando em segundo plano; o desenvolvimento continua e algumas partes aparecem ocasionalmente no Win11, mas não se vê um lançamento oficial
Alguns indivíduos estão tentando o grande trabalho de criar uma camada de compatibilidade com ZFS, mas isso ainda está longe de ser maduro ou utilizável na prática
Não sei como o Windows ainda usa um sistema de arquivos de 32 anos
O ZFS tem problemas de licença com o Linux, o que impede uma integração completa, e o Btrfs está em desenvolvimento há 15 anos, mas ainda não alcança o ZFS em recursos e estabilidade
A maioria das distribuições Linux ainda usa por padrão o ext4, de 19 anos, e o ext4 na verdade está mais para extensões sobre o ext2, que tem a mesma idade do NTFS
Para ser justo, poucos componentes de um sistema operacional são tão importantes quanto o sistema de arquivos, e muita gente prefere não tocar em um sistema de arquivos que não tenha sido comprovado por mais de 10 anos em ambientes de produção
Recursos necessários como snapshots, deduplicação em nível de bloco, tecnologia de armazenamento de objetos, RAID/resiliência e redimensionamento são responsabilidade dos equipamentos de storage
Appliances modernos de armazenamento são quase magia negra, então o NTFS não precisa necessariamente de mais recursos
Basta acessá-los de forma transparente via NAS/SAN ou armazenar volumes NTFS sobre uma caixa de discos competente
No mundo Linux, nas áreas avançadas, há Lustre e GPFS, e o ZFS em geral se encaixa em usos em que desempenho não é o ponto central, mas resiliência é necessária
Acho que é porque é difícil e arriscado, enquanto a recompensa geralmente se limita a respeito técnico
Não são graves, mas por enquanto é melhor evitar criptografia, e o ritmo de desenvolvimento é rápido, com novos release candidates saindo a cada poucas semanas para corrigir os problemas restantes
Se você combinar isso com Storage Spaces para agrupar discos de tipos ou tamanhos diferentes e definir localização, redundância e tiering por Space, o Windows agora se torna uma plataforma avançada de armazenamento
Usando Windows Server, por exemplo as edições baratas 2022/2025 Essentials, também é possível usar SMB Direct/RDMA com desempenho de até 10 Gbyte/s na LAN e sobre discos rígidos virtuais .vhdx, tornando-se uma alternativa mais rápida e sem configuração em relação ao iSCSI
Por isso portei o napp-it cs, uma GUI web para ZFS, do Solaris para o Windows, para gerenciar Storage Spaces, ZFS e servidores OpenZFS remotos como o Proxmox; o uso não comercial é gratuito
Gosto do fato de terem feito o recurso de expansão de forma bem conservadora
A expansão não só é totalmente transparente e pode ser retomada, como também mantém a redundância durante todo o processo
Mas há uma pequena ressalva que as pessoas precisam saber
Mesmo depois que a expansão termina, os blocos existentes mantêm a proporção antiga entre dados e paridade. Por exemplo, um RAIDZ2 de 5 discos fica distribuído em um conjunto maior de discos mantendo 3 dados para 2 paridades
Novos blocos são gravados com a nova proporção entre dados e paridade. Por exemplo, se um RAIDZ2 de 5 discos for expandido uma vez para 6 discos, passa a ser 4 dados para 2 paridades
Ainda assim, os benefícios do RAIDZ N continuam os mesmos: mesmo que até N discos falhem completamente, o pool continua funcionando
Por exemplo, mudanças de configuração também se aplicam apenas aos dados novos
Da1 Db1 Dc1 Pa1 Pb1Da2 Db2 Dc2 Pa2 Pb2Da3 Db3 Dc3 Pa3 Pb3___ ___ ___ Pa4 Pb4Aqui,
___é espaço vazio. Se você adicionar um disco e expandir, logicamente poderia esperar algo assimDa1 Db1 Dc1 Da2 Pa1 Pb1Db2 Dc2 Da3 Db3 Pa2 Pb2Dc3 ___ ___ ___ Pa3 Pb3___ ___ ___ ___ Pa4 Pb4Mas, pelo que entendi, na prática a expansão fica assim
Da1 Db1 Dc1 Dd1 Pa1 Pb1Da2 Db2 Dc2 Dd2 Pa2 Pb2Da3 Db3 Dc3 Dd3 Pa3 Pb3___ ___ ___ ___ Pa4 Pb4Aqui, os blocos Dd1~3 são simplesmente desperdiçados. Ou seja, mesmo adicionando um disco novo ao array, o espaço livre aumenta só 25%
Por exemplo, se você originalmente tinha 24 TB de espaço utilizável com discos de 8 TB e 4 TB livres antes da expansão, depois da expansão o espaço livre passa a 5 TB
Gostaria que alguém me dissesse que entendi errado. Se não for um mal-entendido, parece uma implementação bastante inútil
É uma grande notícia para usuários de ZFS. Talvez especialmente para usuários entusiastas e domésticos, mas ainda assim é grande
Expansão de RAIDZ era um dos recursos mais pedidos há anos
Gostaria de saber se é possível adicionar um disco maior ou menor, ou se todos os discos precisam ter o mesmo tamanho
Isto é expansão online. A expansão em si já era possível antes, mas era preciso derrubar o array
Também era possível migrar para unidades maiores, mas era necessário substituí-las uma por vez e, naturalmente, a nova capacidade só ficava disponível depois que todas as unidades fossem atualizadas
Até onde sei, reduzir um pool ainda não é possível. Então, se você adicionar um sexto disco a um pool de 5 discos, não dá para voltar para 5, mesmo que haja pouquíssimos dados
Finalmente!
Agora também dá para fazer uma configuração de vdev único meio insana, no limite, como RAID-Z3 com 4 dos discos rígidos mais caros e de maior densidade que você consegue comprar hoje
No começo, como há redundância equivalente a 3 discos, a taxa de uso efetivo do espaço é de apenas 25%, mas, à medida que a necessidade de espaço cresce, você pode comprar um disco por vez e expandir até algo em torno de 12 discos
Com o tempo, os preços dos discos caem e, como os discos são adicionados em momentos diferentes, a probabilidade de falha também fica distribuída
Expandir o array não faz com que os dados existentes sejam armazenados de forma mais eficiente
Para obter a nova proporção de paridade/dados, é preciso forçar a cópia dos dados e apagar a versão antiga ineficiente. Por exemplo, seria necessária uma ferramenta como esta [1]
Pessoalmente, acho muito melhor comprar configurações RAID-Z completas separadamente e adicionar a nova configuração, ou substituir uma configuração antiga disco por disco
[1] https://github.com/markusressel/zfs-inplace-rebalancing
Fico curioso para saber como o ZFS se compara ao btrfs
Estou usando btrfs no meu home server agora, mas já passei por alguns problemas estranhos
Estou pensando em migrar para ZFS, mas não quero cair na mesma situação
Em 3 dias apareceu um arquivo que eu não conseguia apagar, então parei de usar e depois encontrei o ZFS
O ZFS também tinha alguns problemas menos graves, mas eu era estudante de ciência da computação na época e, comparados ao que enfrentei no btrfs, eles pareciam pequenos, então achei que conseguiria corrigi-los
Nos 18 meses seguintes, resolvi todos os problemas que me incomodavam e enviei patches para o repositório ZFSOnLinux da época; esse esforço ajudou a tornar o ZFS utilizável em produção no Linux
Desde então continuei usando ZFS, e ele tem funcionado bem
Se o estado do btrfs fosse melhor, eu teria me tornado contribuidor do btrfs. Mas, além de o estado dele ser ruim na época, depois disso, sempre que tentei usá-lo para algo sério, continuei esbarrando em problemas, como erros ENOSPC frequentes mesmo ainda havendo espaço disponível
Já o ZFS simplesmente funciona. Eu e muitas outras pessoas trabalhamos bastante para fazê-lo funcionar bem
A maior diferença é que o ZFS tinha uma base muito sólida, graças a uma excelente infraestrutura de testes de regressão
A versão em espaço de usuário executa o código de forma aleatória para encontrar bugs antes que eles estourem em produção, e um conjunto de testes é rodado para cada alteração proposta para filtrar bugs
O ZFS também tem mais pessoas revisando mudanças propostas do que outros sistemas de arquivos. Os desenvolvedores do Btrfs também costumam dizer que há uma grande diferença de pessoal entre os dois sistemas de arquivos; lembro que falavam em algo como 6 vezes
De todo modo, é raro alguém se arrepender de usar ZFS, então você provavelmente vai gostar
Segundo a documentação do BTRFS, o BTRFS ainda não é totalmente adequado para produção: https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid5...
Alguns casos de uso simples podem ser considerados bons o suficiente para produção com BTRFS, mas os resultados variam conforme o ambiente
Usei-o na partição raiz porque não precisava de DKMS, mas tive muitos problemas
Eu o usava de forma bem simples, apenas em espelho, mas um dia, quando um dos drives do array teve problema, o btrfs não aguentou direito
Pelo que lembro, ele remontou tudo como somente leitura e, por padrão, não operava em modo degradado
Até mesmo mdraid, que não tem recursos como checksum, teria sido melhor
O ZFS também marca o array como com falha, mas obviamente permite continuar usando
Perdi a confiança porque o comportamento padrão não era de RAID; ou seja, a parte R, de reler os dados, basicamente estava ausente
Desde que migrei para ZFS não tive problemas, e a comunidade e as boas ferramentas também são muito maiores
Também tive uma ou duas coisas estranhas no Btrfs, mas no fim consegui recuperar tudo
No geral, a flexibilidade do Btrfs era boa, mas na maioria dos casos eu o achava lento demais
Agora uso ZFS no Arch Linux e, até aqui, no geral não tive problemas
Há também mais ajustes e formas de otimizar o desempenho
Um conselho: com ZFS, vale a pena pesquisar e testar bastante. Há uma pequena curva de aprendizado, mas para mim a migração valeu a pena
É bom ver que agora existe bypass do ARC para desempenho em NVMe
O ZFS tende a não aproveitar bem todo o potencial do NVMe
A expansão online também pode ser interessante
Tentei usar ZFS em um banco de dados muito movimentado e fui bastante afetado por um bug de fragmentação
A única forma de recuperar o desempenho parecia ser copiar os dados para fora do volume, destruir o volume e copiá-los de volta
Agora talvez seja possível expandir o zpool e depois copiar o tablespace dentro do mesmo volume para reduzir a fragmentação
Também vale notar que o TrueNAS já oferece suporte a esse recurso[0]
Parece que provavelmente usa a 2.3.0rc3; não sei quanto à estabilidade, mas estou bem animado
https://www.truenas.com/blog/electric-eel-openzfs-23/
Alguém consegue explicar por que usar algo como ZFS em casa?
Checksums: em uso doméstico, a qualidade do hardware costuma ser menor, então isso é ainda mais importante. Há muitos motivos para dados incorretos serem gravados — controladores com defeito, cabos ruins, HDs mantidos em temperaturas acima do recomendado etc. — e, se houver redundância, o ZFS lida bem com isso automaticamente
Snapshots: muito úteis para fazer backups e voltar rapidamente a versões antigas de arquivos quando você comete algum erro
Tranquilidade: em comparação com as alternativas, sinto que o ZFS é fácil de usar e dificulta cometer erros que levem à perda de dados. Por exemplo, se você estiver substituindo um drive com defeito e acidentalmente remover o drive errado, deixando o pool inutilizável, basta colocá-lo de volta e tudo volta como se nada tivesse acontecido
Hoje o mdadm talvez também seja diferente, mas quando usei alguns anos atrás eu vivia preocupado em cometer algum erro destrutivo
Ao configurar
recordsize=1Mecompression=zstd, muitas vezes dá para armazenar cerca de 33% mais jogos no mesmo espaçoUm amigo usa ZFS para armazenar jogos da Steam em alguns HDs. E deu ao ZFS um SSD como L2ARC
O ZFS coloca automaticamente em cache no SSD os jogos executados com frequência, para que carreguem mais rápido
Quando seus jogos favoritos mudam, o ZFS se adapta automaticamente e passa a colocar esses jogos em cache no SSD
Isso já me ajudou muito uma vez quando um WD_BLACK SN850 morreu de repente [1]
Também recuperou código que eu perdi por um erro clássico de git
Perder dados por erro do usuário ou falha de um único dispositivo não deveria mais ser possível. Nós temos a tecnologia para isso
[1]: https://chromakode.com/post/zfs-recovery-with-zrepl/
Não existe outro sistema de arquivos moderno com checksums e autorrecuperação que possa ser lido e escrito em Linux, FreeBSD, Windows e macOS
Snapshots, isto é, ambientes de boot, o Btrfs também suporta. Minha instalação Linux usa isso para não precisar me preocupar com módulos de kernel de terceiros para ler o sistema de arquivos raiz
O desempenho também não é excelente; se desempenho for sua principal preocupação no Linux, XFS é uma escolha melhor
Antes eu usava MDADM + LVM + dm-crypt + ext4, e aquilo também funcionava, mas eram camadas demais e dava dor de cabeça
Snapshots automáticos são muito fáceis e rápidos
Também é fácil acessá-los quando você apaga um arquivo: sem precisar restaurar o snapshot inteiro, basta fazer
cpa partir da pasta oculta.zfs/Estou rodando isso há anos com 6 discos de 8 TB. Como é RAIDZ2, até 2 discos podem morrer
Se eu usaria isso em um único disco no desktop? Provavelmente não