O Btrfs adquire novos recursos para o kernel Linux 6.7 que começa a ser desenvolvido. Enquanto esperamos para ver se o Bcachefs será mesclado para Linux 6.7, há outras melhorias interessantes chegando aos sistemas de arquivos Linux existentes. Com o Btrfs no Linux 6.7 vêm três novos recursos, além de algumas otimizações de desempenho e outras melhorias.
Os três novos recursos do Btrfs para Linux 6.7 são uma árvore de distribuição RAID, contabilidade de cotas simples e suporte ao ID do sistema de arquivos temporário “FSID”. O suporte ao ID do sistema de arquivos temporário para Btrfs em particular é bastante notável e é um dos recursos desejados pela Valve para Btrfs com seu Steam Deck . Igalia realizou o trabalho do recurso Btrfs em nome da Valve.
Btrfs ganha novos recursos para Linux 6.7
Quanto a esses novos recursos, a solicitação pull do Btrfs enviada resume tudo de forma simples:
- raid-stripe-tree
Nova árvore para mapeamento de extensão de arquivo lógico onde o mapeamento físico pode não corresponder em vários dispositivos. Agora isso é usado no modo zoneado para implementar perfis RAID0/RAID1*, mas também pode ser usado no modo não zoneado. O suporte para RAID56 está em desenvolvimento e eventualmente resolverá os problemas com a implementação atual. Este é um recurso incompatível com versões anteriores e deve ser ativado no momento do mkfs. - contabilidade de cota simples (squota)
Um modo simplificado de qgroup que contabiliza todo o espaço nos proprietários de extensão iniciais (um subvolume); os instantâneos são então baratos para criar e excluir. A exclusão de snapshots em qgroups totalmente contabilizados é um gargalo conhecido de desempenho de CPU/IO. A squota não é adequada para o caso de uso geral, mas funciona bem para contêineres onde o subvolume original existe o tempo todo. Este é um recurso incompatível com versões anteriores, pois precisa estender algumas estruturas, mas pode ser habilitado em um sistema de arquivos existente. - fsid do sistema de arquivos temporário (temp_fsid)
O fsid identifica um sistema de arquivos e é codificado nas estruturas, o que não permite a montagem do mesmo fsid encontrado em dispositivos diferentes. Para um sistema de arquivos de dispositivo único isso não é estritamente necessário, um novo fsid temporário pode ser gerado na montagem, por exemplo, após um dispositivo ser clonado. Isso será usado pelo Steam Deck para testes A/B de partição raiz ou pode ser usado para imagens raiz de VM.
Também significativo é o trabalho de desempenho para reduzir as reservas para exclusões de somas de verificação, o que em uma carga de trabalho de amostra para um arquivo com muitas extensões levou à redução do tempo de exclusão em 12%. Também há trabalho para tornar as fusões de estados mais eficientes durante as inserções, o que levou à redução do tempo de execução de funções críticas em 5%.
O Btrfs no Linux 6.7 também elimina sua funcionalidade de verificação de integridade e possui várias outras melhorias de código de baixo nível.
Mais novidades
Na fila do driver do sistema de arquivos Btrfs “for-next” antes do ciclo Linux 6.7 está o recurso Temp-FSID (Same-FSID) que está sendo buscado para uso pelo console de jogos Steam Deck da Valve. A funcionalidade é superar uma limitação de permitir que o Btrfs monte dois dispositivos diferentes contendo a mesma imagem do sistema de arquivos e, portanto, o mesmo ID do sistema de arquivos. Assim, o Linux 6.7 adiciona novo recurso ao Btrfs para o Steam Deck.
Esta funcionalidade foi trabalhada por Igalia como parte de seu trabalho com a Valve no aprimoramento do Linux para Steam Deck/SteamOS. Conforme explicado por Guilherme Piccoli da Igalia na série de patches anterior:
“Atualmente, não podemos montar com segurança os mesmos sistemas de arquivos fsid, mesmo um de cada vez, no btrfs, mas se os usuários quiserem montá-los ao mesmo tempo, é praticamente impossível. Outros sistemas de arquivos como o ext4 são capazes disso. O objetivo é permitir que os
sistemas com esquema de particionamento A/B (como o console Steam Deck ou vários dispositivos móveis) para poder manter a mesma imagem do sistema de arquivos em ambas as partições; também permite que o nível do dispositivo de bloco verifique a integridade do sistema de arquivos – isso é usado no Steam Deck instalação da imagem, para verificar se a imagem somente leitura atual está intacta.”