Manual

do

Maker

.

com

Filesystem - apresentando o Btrfs

Filesystem - apresentando o Btrfs

Esse é um artigo que mantive como histórico, mas decidi atualizar seu início para mostrar que de 2012 até 2023 o BTRFS teve modesta introdução como sistema de arquivos base. Hoje, nativo no OpenSuSE, com snapshot pronto pra uso no último estágio, disponível diretamente no GrUB. O sistema de arquivos passou por bastante ajustes e parece ser o melhor sistema de arquivos para desktops e servidores de aplicação que não dependem de altíssima velocidade de acesso, como banco de dados.

Entre os mais diversos sistemas de arquivos do Linux, eis um que é de impressionar! ) BTRFS tem as mãos da Oracle, RedHat, Fujitsu, Intel SUSE, STRATO e diversas outras empresas.

O sistema de arquivos se encontra em constante desenvolvimento, mas já é suportado nativamente pelo kernel do Linux. Instalando a última versão do Linux Mint, pude experimentá-lo na raiz do disco.

A simplicidade de uso é impressionante e ele possui operações online. Entre as principais característica está a capacidade de armazenamento de arquivos gigantescos, eficiência de organização de diretórios e arquivos, alocação dinâmica, snapshots de escrita e read-only.

Algumas coisas são realmente diferentes da tradicional manipulação de discos e sintaxes, como pode se ver no fstab. O btrfs trabalha com sub-volumes, descrito como um arquivo de sistemas raiz separado internamente. Somatórias de dados e metadados, compressão com zlib e LZO e suporte à integração de múltiplos dispositivos.

Entre muitas outras características, ele faz backup incremental e desfragmentação a quente!

Muitas outras características estão previstas para implementação, mas uma coisa realmente marcante é a simplicidade de utilização desse sistema de arquivos através das ferramentas encontradas no pacote btrfs-progs.

Criação do filesystem

A criação de um volume é tão simples quanto qualquer outro sistema de arquivos. Simplesmente utilize mkfs.btrfs no dispositivo pretendido. Desse modo, o sistema de arquivos será criado com o tamanho máximo do volume, mas isso pode ser menor, bastando utilizar a flag -b e indicar o tamanho. O resize do sistema de arquivos pode ser feito a quente também!

Criando RAID

QUem já fez isso manualmente no Linux sabe que não é uma tarefa trivial; aliás, não era! Agora basta fazer a criação do sistema de arquivos seguido pelos volumes que compõe o RAID, por exemplo:
mkfs.btrfs dev1 dev2 devN
E é isso mesmo; apenas passa-se os dispositivos de bloco em um único comando e o btrfs faz o resto. É possível fazer RAID0, RAID1, RAID10 ou criar os volumes sem RAID. Para tal, utiliza-se a flag -m.

Montagem do sistema de arquivos

Para montar o sistema de arquivos o processo é o mesmo dos demais. Por exemplo:
mount -t btrfs /dev/device /mount/point
No caso de RAID, basta indicar um dos dispositivos envolvidos no array. Por exemplo, um RAID com sda e sdb:
mount -t btrfs /dev/sda /mount/point

Se quiser adicionar um disco no array, basta rodar btrfs dispositivo add /dev/device, isso tudo com o sistema de arquivos montado. Seguidamente pode-se solicitar ao btrfs que faça a redistribuição dos dados através do discos (com o array montado em /mount/point, no exemplo), com um simples comando:
btrfs filesystem balance /mount/point
Isso deve levar algum tempo, dependendo do tamanho do array.

Se algum disco do array estiver corrompido, é possível montá-lo com supressão das mensagens de erro utilizando o comando:
mount -t btrfs -o degraded /dev/device /mount/point
Então, para remover o dispositivo do array utilize:
btrfs device delete /dev/dispositivo /mount/point

Subvolumes, Snapshots e conversão

Sub-volumes no Btrfs são sub-árvores do sistema de arquivos primário - são árvores criadas sobre o sistema raiz primário e que podem ser tratadas como um sistema de arquivos separado, com seu próprio ponto de montagem, opções e políticas, diferente da criação de múltiplas partições de disco, sub-volumes não requerem alocação adicional no disco. Eles são apenas diretórios vazios até que você comece adicionar arquivos a eles.

No fstab a mudança não é drástica. No exemplo, o home e a raiz:
`UUID=... / btrfs defaults,subvol=@ 0 1

UUID=.... /home btrfs defaults,subvol=@home 0 2`
No caso do home, não me foi um opcional.

O snapshot é uma ferramenta interessantíssima. Montando uma partição em outro ponto como snapshot, os arquivos não serão duplicados e nem haverá ocupação de espaço em disco exceto seja feita alguma alteração no arquivo original. Nesse caso, as mudanças são escritas no arquivos original, precendendo a operação pela cópia do arquivo no snapshot antes da mudança. A sintaxe para criar um snapshot é tão simples quanto a montagem de um volume:
btrfs subvolume snapshot /mnt/origem /mnt/backups/destino

Sistemas de arquivos Ext3 e Ext4 podem ser convertidos para btrfs. Por fim, a compressão transparente no sistema de arquivos pode ser feita com as opções de montagem compress e compress-force.

Não costumo transcrever textos, mas como gostaria de ter uma referência fácil dessas características, utilizei algumas referências, que as cito logo abaixo:
Tutorial (link quebrado).
A página do sistema de arquivos.

Se chegou a esse artigo por causa do Linux, dê uma conferida nesses outros artigos sobre o sistema, certamente outros lhe agradarão.

Conforme tiver novidades, atualizo o post.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.