Kent Overstreet publicou a versão 1.38.6 do sistema de arquivos Bcachefs e anunciou a remoção oficial da etiqueta de desenvolvimento experimental do projeto. Recentemente, o número de mensagens sobre problemas diminuiu, e os erros identificados tornaram-se menos sérios e complexos.
A versão abrange dois pacotes: bcachefs-kernel-dkms, com o módulo do kernel compilado usando o sistema DKMS (Dynamic Kernel Module Support), e bcachefs-tools, que inclui a ferramenta de espaço do usuário bcachefs, implementando comandos para criação (mkfs), montagem, recuperação e verificação do sistema de arquivos. Os pacotes estão disponíveis para Debian, Ubuntu, Arch Linux e são aguardados para Fedora, openSUSE e NixOS. O módulo DKMS é compatível com kernels Linux a partir da versão 6.16.
Apesar do número de versão discreto, devido à ausência de alterações no formato de disco, a versão 1.38.6 inclui uma série de otimizações significativas de desempenho. Cerca de 200 alterações foram feitas no código para operações com estruturas no formato btree, registro e operação do sistema de arquivos, melhorando o desempenho. A lógica de confirmação de transações foi reduzida a 4KB de código de máquina, e otimizações foram adicionadas para evitar a ocorrência de lock contention ao trabalhar com btree; o processo de descarregamento do estado do log ficou completamente livre de bloqueios.
Sobre servidor Com um CPU AMD de 48 núcleos, o Bcachefs conseguiu uma largura de banda de 16,5 GB/s ao executar 48 clientes do dbench (para comparação, o XFS obteve um resultado de 16 GB/s). Patches foram preparados, mas adiados para o próximo lançamento, elevando o desempenho em testes do dbench para 19 GB/s (esses patches necessitam de testes adicionais ou alterações no formato de disco). Ao testar com a ferramenta fio, o desempenho do Bcachefs alcançou 700 operações por segundo ao executar operações de gravação aleatória com blocos de 4 kilobytes (o XFS apresenta um milhão de operações por segundo neste teste, enquanto o XFS é limitado pelo remapeamento de blocos, o Bcachefs processa o ciclo completo de CoW (Copy-on-Write) com verificação de somas de verificação e atualização da estrutura btree).
Além das otimizações na versão Bcachefs 1.38.6, foi implementado o suporte para conectar até 255 dispositivos em um único sistema de arquivos. A formação de pacotes para Ubuntu 26.04 começou no repositório apt.bcachefs.org. A infraestrutura de integração contínua e teste automatizado foi transferida para verificar as compilações baseadas em DKMS. Nos próximos meses, haverá um foco na otimização do sistema de arquivos com múltiplos dispositivos de armazenamento.
Além disso, o trabalho na reescrita do código em Rust continua. Observou-se que o suporte para Rust no núcleo atingiu um marco significativo — todas as distribuições relevantes ativaram por padrão a configuração CONFIG_RUST ao gerar pacotes com o núcleo 7.0 para permitir a construção com suporte a Rust. No projeto Bcachefs, um conjunto de utilitários já foi reescrito em Rust.
bcachefs-tools, executado no espaço do usuário, incluindo a implementação da API para trabalhar com estruturas btree. No próximo lançamento, planeja-se integrar os wrappers preparados em Rust no módulo DKMS do núcleo e iniciar a reescrita do código base do Bcachefs. Espera-se que o uso de Rust aumente a flexibilidade, a estabilidade e a facilidade de trabalho com o código, tornando o projeto mais interessante para jovens engenheiros e permitindo a realização de verificação formal de confiabilidade no futuro.
O projeto Bcachefs está desenvolvendo um sistema de arquivos que visa combinar a funcionalidade avançada característica do Btrfs e ZFS com o nível de desempenho, confiabilidade e escalabilidade típico do XFS. O Bcachefs suporta recursos como a inclusão de vários dispositivos em uma partição, arranjos de armazenamento em camadas (camada inferior com dados de uso frequente em SSDs rápidos, e camada superior com dados menos exigidos de hard disks), replicação (RAID 1/10), cache, compressão de dados transparente (modos LZ4, gzip e ZSTD), snapshots, verificação de integridade por somas de verificação, códigos de correção de erros, e armazenamento de informações de forma criptografada (utilizando ChaCha20 e Poly1305).
Entre as principais inovações adicionadas ao Bcachefs nos últimos meses, destacam-se:
- O mecanismo "reconcile" (rebalance_v2), que ao contrário do modo "rebalance" permite realizar o rebalanceamento não apenas dos dados (por exemplo, replicação de várias cópias em diferentes dispositivos de armazenamento), mas também dos metadados no FS (por exemplo, para transferir metadados após a adição de um dispositivo de armazenamento ao pool). O reconcile é aplicável a todas as operações de entrada/saída, e não apenas a operações de cópia em segundo plano e compressão. No reconcile, as alterações nas configurações dos dispositivos são automaticamente consideradas e os dados e metadados degradados são imediatamente re-replicados.
- Suporte a códigos de correção de erros, permitindo a recuperação de dados corrompidos de forma semelhante ao RAID 5/6. A implementação é baseada na codificação de Reed-Solomon, capaz de corrigir até N erros em um stripe na presença de N blocos redundantes. A recuperação automática de stripes degradados é garantida. A possibilidade de aplicar códigos de recuperação é aplicável em configurações com dispositivos de armazenamento de diferentes tamanhos.
Fonte: opennet.ru
