Promovendo Bcachefs para o Kernel do Linux

Kent Overstreet, autor do sistema de cache de dispositivo de bloco BCache SSD, que faz parte do kernel do Linux, resumiu os resultados do trabalho de promoção do sistema de arquivos Bcachefs em seu discurso na conferência LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) na composição principal do kernel do Linux e falou sobre os planos para o desenvolvimento deste FS. Em maio, um conjunto atualizado de patches com a implementação do Bcachefs FS foi proposto para revisão e inclusão na composição principal do kernel do Linux. FS Bcachefs vem desenvolvendo há cerca de 10 anos. A prontidão para revisão da implementação dos Bcachefs antes da inclusão no núcleo foi anunciada no final de 2020, e a versão atual dos patches leva em consideração os comentários e deficiências identificados durante a revisão anterior.

O objetivo de desenvolvimento do Bcachefs é atingir o nível XFS em desempenho, confiabilidade e escalabilidade, enquanto fornece recursos adicionais inerentes ao Btrfs e ZFS, como incluir vários dispositivos em uma partição, layouts de armazenamento multicamada, replicação (RAID 1/10), cache, compressão de dados transparente (modos LZ4, gzip e ZSTD), fatias de estado (instantâneos), verificação de integridade por somas de verificação, capacidade de armazenar códigos de correção de erros Reed-Solomon (RAID 5/6), armazenamento criptografado de informações (ChaCha20 e Poly1305 são usados). Em termos de desempenho, o Bcachefs está à frente do Btrfs e de outros sistemas de arquivos baseados no mecanismo Copy-on-Write e demonstra desempenho próximo ao Ext4 e XFS.

Das últimas conquistas no desenvolvimento do Bcachefs, destaca-se a estabilização da implementação de instantâneos disponíveis para gravação. Em comparação com o Btrfs, os instantâneos no Bcachefs agora são muito mais escaláveis ​​e livres dos problemas inerentes ao Btrfs. Na prática, o trabalho dos instantâneos foi testado ao organizar os backups do MySQL. O Bcachefs também trabalhou muito para melhorar a escalabilidade - o sistema de arquivos teve um bom desempenho em testes em armazenamento de 100 TB, e espera-se que o Bcachefs seja implementado em armazenamento de 1 PB em um futuro próximo. Um novo modo nocow foi adicionado para desabilitar o mecanismo "copy-on-write" (nocow). Durante o verão, eles planejam trazer a implementação de códigos de correção de erros e RAIDZ para um estado estável, bem como resolver problemas com alto consumo de memória ao restaurar e verificar sistemas de arquivos com o utilitário fsck.

Dos planos para o futuro, menciona-se a vontade de utilizar a linguagem Rust no desenvolvimento de Bcachefs. Segundo o autor do Bcachefs, ele gosta de codificar, não de depurar código, e agora é uma loucura escrever código em C quando há uma opção melhor. Rust já está envolvido no Bcachefs na implementação de alguns dos utilitários de espaço do usuário. Além disso, está surgindo a ideia de reescrever completamente Bcachefs gradualmente em Rust, pois o uso dessa linguagem economiza significativamente o tempo de depuração.

Quanto a mover Bcachefs para o mainstream do kernel Linux, o processo de adoção pode ser atrasado devido ao grande tamanho das mudanças (2500 patches e cerca de 90 mil linhas de código), o que é difícil de revisar. Para acelerar a revisão, alguns desenvolvedores sugeriram dividir a série de patches em partes menores e separadas de forma mais lógica. Durante a discussão, alguns participantes também chamaram a atenção para o desenvolvimento do projeto por um desenvolvedor e o perigo de o código ficar sem manutenção caso algo acontecesse com seu desenvolvedor (dois funcionários da Red Hat estão interessados ​​no projeto, mas seu trabalho ainda é correções limitadas de bugs).

O Bcachefs é desenvolvido usando tecnologias já testadas no desenvolvimento do dispositivo de bloco Bcache, projetado para armazenar em cache o acesso a discos rígidos lentos em unidades SSD rápidas (incluído no kernel desde a versão 3.10). O Bcachefs usa o mecanismo Copy-on-Write (COW), no qual as alterações não levam à substituição de dados - o novo estado é gravado em um novo local, após o qual o indicador do estado atual é alterado.

Um recurso do Bcachefs é o suporte para conexão multicamada de unidades, na qual o armazenamento é composto por várias camadas - as unidades mais rápidas (SSD) são conectadas à camada inferior, que são usadas para armazenar em cache os dados usados ​​com frequência, e as formas da camada superior discos mais espaçosos e baratos que armazenam menos dados exigidos. O cache de write-back pode ser usado entre as camadas. As unidades podem ser adicionadas e desconectadas dinamicamente de uma partição sem interromper o uso do sistema de arquivos (os dados migram automaticamente).

Fonte: opennet.ru

Adicionar um comentário