Introdução ao sistema de arquivos BTRFS – parte 1 – Elias Praciano
Neste artigo pretendo descrever algumas das capacidades básicas que descobri ao começar a usar e me familiarizar com o sistema de arquivos Btrfs, no meu laptop de trabalho, rodando o Debian 8.3 "Jessie", com o kernel Linux 4.3 (instalado via backports).
Desde que você esteja usando um sistema operacional atualizado, todas as informações dadas neste texto são universais.
Pode ser Butter FS, Better FS ou B-Tree FS — sendo que, este último, está mais próximo de ter um significado técnico.
Esta é a primeira parte de 2 artigos voltados para iniciantes no sistema de arquivos Btrfs.
Neste, pretendo explorar os aspectos teóricos básicos, que possam ajudar a decidir se a tecnologia dispõe dos recursos que a tornam ideal para você.
Na segunda parte, pretendo introduzir alguns comandos administrativos básicos, voltados a quem deseja iniciar já o uso do sistema.
Alguns dos temas tratados superficialmente aqui, são descritos com mais profundidade nos links, encontrados no decorrer do texto — clique neles.
A proposta e a história do sistema de arquivos Btrfs
Por anos, os sistemas de arquivos da série Ext predominou nas principais distribuições GNU/Linux — passando pelas gerações do Ext2, Ext3 e, mais recentemente, Ext4.
Houve uma evolução significativa no hardware de armazenamento, o que inclui o aumento da capacidade de armazenamento e o surgimento da tecnologia das unidades flash.
Embora o Ext4 ainda esteja evoluindo, não há planos, até o momento, para lançamento de uma versão Ext5.
Se quiser entender melhor as diferenças entre o Ext4 e o Btrfs, clique aqui.
Atualmente, o desenvolvimento caminha na direção de outros sistemas de arquivos, como o ZFS, o Btrfs e o F2FS.
As equipes de desenvolvimento do Btrfs procuram dar respostas às necessidades crescentes de armazenamento de arquivos cada vez maiores, a sistemas "clusterizados" entre outros.
Entre as capacidades avançadas do Btrfs, citam-se:
Suporte a sistemas e arquivos grandes.
Oferece gestão integrada de múltiplos volumes e subvolumes.
Tem funcionalidades de RAID incorporadas.
Garante a segurança dos seus dados usando técnicas copy-on-write e de verificação de soma (checksumming).
Provê snapshots alteráveis.
Criado por Chris Mason, dentro da Oracle, a proposta inicial estava ligada a uma apresentação de Ohad Rodeh, sobre implementações B-tree que facilitassem o copy-on-write (COW)
Os snapshots têm várias utilidades: se recuperar de remoção acidental de arquivos, reverter um sistema corrompido a um estado em que ele estava bom, mineração de dados, backup eficiente e muito mais.
Clones ou writeable-snapshots são uma extensão do conceito de snapshot, em que ele pode ser alterado para incluir novos dados.
Um clone pode ser usado para criar um ponto de retorno seguro para quem deseja experimentar softwares novos no sistema.
Mason tem experiência prévia com o desenvolvimento do sistema de arquivos ReiserFS — armazenamento baseado em extensão, empacotamento de pequenos arquivos, armazenamento de dados e metadados em estruturas B-tree etc.
O Btrfs foi apresentado à comunidade Linux em 2007. A partir deste momento, os engenheiros da Oracle têm continuado a manter e desenvolver os novos recursos do sistema — em estreita colaboração com outros contribuidores da comunidade Linux, o que inclui engenheiros das distribuições (Red Hat, SuSE etc.) e outras companhias, como Dreamhost, Fujitsu, HP, IBM e Intel.
Atualmente, todas as grandes distribuições Linux dão-lhe suporte.
Explorando o Btrfs
A partir do momento em que comecei a fazer uso do Btrfs, na unidade SSD do meu laptop, comecei a descobrir uma série de funcionalidades contidas no sistema, que eu ainda não conhecia.
Algumas destas funcionalidades não se aplicam ao uso em notebooks ou desktop workstations, uma vez que são desenvolvidas para uso em sistemas de armazenamento em servidores de grande porte.
Outras são ótimas opções para se ter a mão em um pequeno computador de trabalho.
Escalabilidade e gestão de volumes. É importante dizer que o Btrfs é um sistema de arquivos 64-bit, escalável e que pode abranger vários volumes para prover arquivos e sistemas de arquivos até 16 exabytes.
Incluída a possibilidade de gestão de vários dispositivos de armazenamento subjacentes — similar ao tradicional LVM.
Por exemplo, o Btrfs permite a um sistema de arquivos abarcar vários dispositivos e representados por um único endereço.
Os dispositivos do sistema podem ser adicionados ou removidos enquanto este permanece online e disponível.
Metodologia de escrita e acesso. O Btrfs armazena tipos de dados e aponta para informações dentro da unidade em uma estrutura B-tree.
Diferente de outros sistemas de arquivos, não faz journaling de transações. Como resultado, sua escrita é feita uma única vez — o que remove limitações consequentes do espaço ocupado pelo journal e reduz desgaste causado por gravações repetitivas na mesma seção do disco rígido ou do SSD.
A técnica copy-on-write garante que blocos e extensões não sejam sobrescritos.
Atributos estendidos e ACLs limitam o acesso e a manipulação do conteúdo do sistema de arquivos por usuários e aplicações.
Tunables ou possibilidades de ajustes.
O Btrfs provê ajustes mínimos para proteger o sistema de mau uso ou de erros de configuração.
Uma das opções interessantes de montagem de uma unidade Btrfs, é -o autodefrag .
Este parâmetro ativa a auto desfragmentação do volume.
Outra possibilidade é a desativação do COW, com o uso do parâmetro nocow, que pode ajudar a reduzir fragmentação dos arquivos no sistema — particularmente para arquivos que requeiram acesso sequencial, tais como os produzidos por bancos de dados e mídias para transmissão (streaming media).
No modo nocow, blocos de arquivos são sobrescritos, tal como em qualquer outro sistema de arquivos tradicional.
O Btrfs tem recursos nativos para garantir a integridade de dados no volume.
Configurações redundantes. Suporta espelhamento de dispositivos e configurações RAID para aumentar chances de sobrevivência de dados e facilitar a recuperação de informações destruídas.
Por padrão, ele espelha os metadados por entre 2 dispositivos e distribui os dados entre todos os dispositivos sob a camada do sistema de arquivos.
Mesmo dentro de uma única unidade de armazenamento, os metadados são duplicados
Verificação de somas. Gera checksums para dados e metadados para preservá-los de corrompimento.
Os checksums são verificados a cada leitura de blocos de dados do volume.
Havendo detecção de erros, o sistema tenta obter ou criar uma cópia boa do bloco defeituoso de algum outro dispositivo espelho.
Se encontrar uma cópia boa, ela será usada e o bloco ruim corrigido.
Isolamento de falhas e algoritmos de verificação de somas. O Btrfs provê isolamento de falhas através do armazenamento separado dos metadados dos dados dos usuários.
Adicionalmente, provê proteção através dos CRCs.
Os CRCs são armazenados em um B-tree, separado dos dados — para oferecer isolamento de possíveis falhas.
Tempo de reconstrução. Mason chama a atenção para o fato de que o Btrfs só reconstrói os blocos ativamente usados pelo sistema de arquivos.
À medida em que a capacidade de armazenamento dos drives aumenta, esta característica constitui uma vantagem considerável sobre sistemas de arquivos tradicionais e mecanismos RAID de proteção.
Nas abordagens tradicionais, o tempo de reconstrução de unidades de alta capacidade de armazenamento pode ser medido em dias — e durante este processo, a proteção do sistema estará suspensa.
Encriptação. Não há funcionalidade de criptografia embutida ainda.
Um sistema de arquivos Btrfs pode ser criado sobre um subsistema de encriptação de discos dm_crypt e sob uma camada LUKS (Linux Unified Key Setup) — que dá suporte a uma boa variedade de padrões de criptografia.
Esta configuração, contudo, desabilita algumas das capacidades e vantagens do sistema — tais como suporte avançado a dispositivos de bloco raw e detecção de unidades SSD.
O Btrfs suporta algoritmos de compressão, já na montagem de um dispositivo — ou seja, após a criação de um volume ou subvolume, você pode ativar facilmente a compressão de dados a qualquer momento.
Este assunto é discutido com mais profundidade no artigo Como ativar a compressão de dados no Btrfs.
No atual estágio de desenvolvimento, o sistema tem suporte aos algoritmos de compressão LZO e zlib.
Se um arquivo não consegue atingir taxas de compressão decentes, ele é marcado como "não comprimível" e gravado sem o uso do recurso.
Existe a opção de montagem force-compression que, tal como o nome indica, aplica o recurso arbitrariamente.
O Btrfs tem funcionalidades e suporte a dispositivos projetados para melhorar o desempenho do sistema de arquivos. Conheça algumas:
Suporte a unidades de estado sólido (SSDs). As memórias flash, tais como os cartões de memória que usamos nos smartphones e nas câmeras (além dos pendrives USB), têm baixo custo de aquisição.
São dispositivos não voláteis, cujo conteúdo pode ser alterado eletricamente.
O uso de drives SSD tem aumentado em desktop workstations, notebooks e servidores. Tudo indica que este movimento se intensificará.
Dispositivos de armazenamento, com tecnologia flash têm desempenho muito superior a dos drives mecânicos.
O Btrfs é SSD-aware, ou seja, reconhece nativamente o ambiente flash, evita otimizações de busca desnecessárias e envia gravações agressivamente aos clusters — mesmo que sejam de arquivos não relacionados ao contexto.
Este comportamento resulta em largas operações de escrita e taxas de transferência mais altas.
Desfragmentação online. Ao longo dos anos, temos notado que unidades que experimentam grande rotatividade de arquivos, sofrem com uma crescente fragmentação, o que resulta em desempenho inferior ao que estão capacitadas a oferecer.
O Btrfs tem a opção de montagem autodefrag, que habilita o helper de auto desfragmentação.
Quando um bloco é copiado e gravado no disco, o helper marca os fragmentos e realiza o trabalho de desfragmentação em uma thread, executada em segundo plano.
Esta capacidade pode beneficiar significantemente sistemas com cargas de trabalho de pequenos bancos de dados, caching de navegadores etc.
Como o Btrfs lida com subvolumes, snapshots e dispositivos seed
A característica de ser copy-on-write faz do Btrfs um sistema de arquivos capaz de prover recursos que facilitam replicação, migração, backup e restauração de informações.
Subvolumes. Ponto fulcral da concepção do Btrfs, os subvolumes, são chamados B-trees. É onde se guardam arquivos e diretórios.
Opcionalmente, os subvolumes podem ter quotas e são montados como se fossem discos.
Snapshots. Na essência, são clones de um subvolume.
Se deixada inalterada, uma snapshot representa uma cópia fiel do estado do subvolume no momento em que foi criada.
Do que foi dito no parágrafo anterior, entenda-se que é possível alterar uma snapshot, de forma que são como clones que evoluem em relação a seus subvolumes.
Pode ser criada quase instantaneamente e, virtualmente, não consome espaço adicional no disco, inicialmente — uma vez que se constitui de pequena quantidade de metadados.
Este recurso é útil em várias situações — como manter cópias de versões anteriores de uma hierarquia de arquivos ou movê-las para outros sistemas, como cópias de segurança.
Arquivos individuais podem também ser clonados com o comando cp -reflink, que tem o mesmo efeito sobre arquivos que os snapshots têm sobre volumes.
Seed devices ou dispositivos semente. Este tipo de dispositivo provê uma fundação (não alterável) para criar ou constituir múltiplos outros sistemas de arquivos.
Em outras palavras, um dispositivo pode ser usado como um sistema de arquivos template (um CD, contendo uma imagem, por exemplo).
A partir deste dispositivo novos sistemas de arquivos, em outros dispositivos, podem ser criados (usando o copy-on-write).
Este processo pode ser considerado uma outra forma de clonagem.
Backup e recuperação de cópias de segurança. Não há suporte incorporado ao Btrfs para criar cópias de segurança.
Neste caso, a melhor prática é criar um snapshot de um volume e usar utilitários tradicionais de backup.
Para ajudar há o recurso btrfs subvolume find-new, que identifica os arquivos que sofreram alguma mudança em um dado subvolume.
Testes mostram que ele é mais eficiente que varrer todo o sistema de arquivos com o comando find -mtime, para destacar arquivos modificados.
Ferramenta de conversão de sistemas de arquivos Ext. Há suporte à conversão local de sistemas de arquivos Ext3 e Ext4.
Os metadados originais dos sistemas antigos são mantidos em um snapshot, de forma que a conversão possa ser revertida, se necessário.
Obviamente, se o sistema tiver passado por muitas alterações as possibilidades de reversão são limitadas.
Quando tiver certeza de que não vai voltar atrás na conversão de um sistema Ext para Btrfs, remover o snapshot ajuda liberar espaço em disco.
https://wiki.debian.org/Btrfs.
https://btrfs.wiki.kernel.org/index.php/Glossary.
http://www.oracle.com/technetwork/articles/servers-storage-admin/gettingstarted-btrfs-1695246.html.
Publicado em 05/02/2016 11/02/2016 Autor Elias PracianoCategorias Análises, Linux, TutoriaisTags btrfs, ext4, sistema de arquivos, sistema operacional, SSD, zfs
2 comentários em "Introdução ao sistema de arquivos BTRFS – parte 1"
20/12/2018 às 08:16
Tema interessante Elias! Vou pesquisar mais para, quem sabe, usá-lo… Vale pelo artigo!
Caro Elias Praciano,
Me utilizo da Tecnologia do ZFS nativamente em Open Indiana, SmartOS e OpenSXCE, uma vez que não é possível instalar e configurar este file system para poder rodar nativamente no kernel Linux – e não me sinto confortável utilizando-o através do recurso extendido via DKMS para GNU/Linux – uso Debian Jessie 8.3 (arquitetura amd64).
Já tive informações de que utilizar o ZFS via dispositivo modular para Debian, pode acarretar em um crash eventual, tornando inviável o boot do sistema, já que este ficaria sempre dependente de uma funcionalidade absolutamente estável do DKMS em qualquer situação e circunstância.
Pergunto à Você: não há uma previsão por parte do Gestor Principal do Projeto BTRFS acerca de QUANDO teremos o release Estável desta Tecnologia ?
Até onde me é possível analisar, o BTRFS possui recursos (exceto a encriptação de dados, algo já seguro e consolidado há tempos no ZFS) e características que o tornariam superior ao ZFS, desde que esta fase de releases Beta seja superada, e seja lançada finalmente, a versão estável.
Usar o BTRFS hoje, no estágio de desenvolvimento em que ele atualmente se encontra, seria um sacrilégio em Produção de Missão Crítica, tendo como um cenário hipotético para fins de exemplificação, por exemplo, um Storage Data Server com Debian Linux, ou CentOS estáveis ?