Filesystem – apresentando o Btrfs

Entre os mais diversos sistemas de arquivos do Linux, eis um que é de impressionar!
O 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çãoo 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 subvolumes, 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 montadá-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
Subvolumes no Btrfs são sub-árvores do sistema de arquivos primário – são árvores criadas sobre o sistema raíz 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, subvolumes 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:
http://www.linux.com/learn/tutorials/37623-weekend-project-get-started-with-btrfs
https://btrfs.wiki.kernel.org/index.php/Main_Page

Conforme tiver novidades, atualizo o post.

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta