btrfs logo

Introdução ao sistema de arquivos BTRFS – parte 2

Este post tem intenção de mostrar, na prática, como lidar com o sistema de arquivos Btrfs, no Linux.
Basicamente, vou cobrir algumas tarefas administrativas, o que inclui criar um sistema de arquivos Btrfs, montá-lo, alterar seu tamanho, usar compressão e auto desfragmentação.
É importante que se diga que o Btrfs, anunciado em 2007, ainda está em fase beta — neste momento, esta é a posição oficial dos desenvolvedores.
Sistema de arquivos Btrfs - logo
Contudo, há grandes empresas que usam o Btrfs em produção, mas ninguém, em sã consciência, abre mão de fazer seus backups. Problemas sempre podem aparecer.

Notas preliminares

Eu venho usando este sistema na minha máquina de trabalho há aproximadamente 6 meses e sem incidentes.
Atualmente, uso o Debian 8.3 “Jessie”, com o kernel 4.3.
Tudo o que descrevo, neste texto, funciona para mim. Não há qualquer garantia de que funcione para você, contudo.
Os comandos, descritos aqui, foram executados em alguns drives USB (vulgo, pendrives…) — o que está longe de ser o ideal para testar um sistema de arquivos tão robusto, mas serve para ilustrar o texto.
Debian 8 GNU/Linux terminal
Usuários Ubuntu, opcionalmente, podem usar o apt-get em vez do aptitude para instalar aplicativos — se isto os fizer sentir mais confortáveis.
Se quiser saber melhor as diferenças entre os dois, leia este artigo.
Outro ponto importante é que a maioria dos comandos, são usados com privilégios administrativos (com todos os perigos que isto implica).
Portanto, não esqueça de usar o ‘sudo’ no início da linha de comando ou logar como ‘root’ (que foi o que eu fiz).
Se você tiver curiosidade, leia Diferenças entre SU e SUDO.

Como instalar o suporte a Btrfs

Se você já instalou o Btrfs, pode pular esta parte.

Uma palavrinha sobre os backports…

Depois que instalei suporte aos backports no Debian, adquiri o hábito de checar se há pacotes mais atuais naqueles repositórios antes de instalar alguma coisa.
No meu caso, não há versão mais atual disponível nos backports, como é possível observar abaixo:

aptitude show btrfs-tools | grep -i vers
Versão: 3.17-1.1

aptitude -t jessie-backports show btrfs-tools | grep -i vers
Versão: 3.17-1.1

Sigamos em frente… 😉

Como ele já está incluído no kernel principal desde a versão 2.6.29-rc1, tudo o que você precisa é instalar as ferramentas para lidar com o sistema de arquivos Btrfs no espaço do usuário ou user space. Veja como:

aptitude update
aptitude install btrfs-tools

Isto é tudo.
Baixar o código fonte e compilá-lo, também é uma opção e pode te dar uma versão bleeding edge, ou seja, a última disponibilizada pelos desenvolvedores — mas vai impor alguns sacrifícios à estabilidade do seu sistema.

Como criar um sistema de arquivos Btrfs

Uma das várias boas notícias, aqui, é que você não precisa usar ferramentas de particionamento, como o fdisk, para preparar o dispositivo antes de formatá-lo com o Btrfs.
O sistema pode ser criado direto, com um único comando:

mkfs.btrfs /dev/sdc

Você pode usar um comando assim, para criar um volume novo até em mídias ainda não formatadas.
Se já houver algum sistema de arquivos (mesmo que seja Btrfs), o utilitário irá avisar:

/dev/sdc appears to contain an existing filesystem (iso9660).
Error: Use the -f option to force overwrite.
See http://btrfs.wiki.kernel.org for more information.

Se você tiver certeza do que está fazendo, pode “forçar” a criação do novo sistema de arquivos no dispositivo:

mkfs.btrfs -f /dev/sdc

Ao formatar a unidade, o mkfs irá aplicar as opções mais adequadas, automaticamente, para o tipo de mídia em questão. Veja o meu resultado, abaixo:

Btrfs v3.17

Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
fs created label (null) on /dev/sdc
	nodesize 16384 leafsize 16384 sectorsize 4096 size 7.50GiB

Antes de concluir o tema, acho interessante falar destas duas opções de criação de um sistema de arquivos: --label e --mixed.
Ambas podem ser abreviadas, respectivamente, para ‘-L’ e ‘-M’.
A primeira serve para dar um nome (até 256 caracteres) ao seu volume e a segunda, mistura (mixa) partes de dados e metadados para obter um uso mais eficiente de espaço.
A aplicação deste recurso penaliza a performance em sistemas de arquivos maiores. Por isto, é recomendado apenas em pequenos sistemas de arquivos com 1 GiB de espaço ou menos.
Veja um exemplo de sua aplicação:

mkfs.btrfs --force --mixed --label "Justin Case" /dev/sdc

Para obter informações sobre o sistema de arquivos criado use o seguinte comando:

btrfs filesystem show /dev/sdc

Como montar um sistema de arquivos Btrfs

Se você conectar um dispositivo de armazenamento com um sistema de arquivos Btrfs, o Linux irá montá-lo automaticamente.
As opções, descritas a seguir, podem ser usadas por quem deseja fazer uso de algum recurso no momento da montagem ou configurar o fstab para obter resultados específicos.
A sintaxe do comando para montar uma unidade Btrfs não é muito diferente da usada para outros sistemas de arquivos. Veja um exemplo simples:

mount -t auto /dev/sdc /mnt

Como você pode ver, usei o parâmetro ‘auto’, por que sei que o kernel irá identificar corretamente o sistema de arquivos do dispositivo.
Mas eu o poderia indicar também, como pode ser observado no exemplo abaixo:

mount -t btrfs /dev/sdc /mnt

Ambas opções detectam e automatizam a escolha das opções de montagem mais adequadas para o seu dispositivo.
Veja alguns exemplos de outros parâmetros de montagem que podem ser usados.
Para montar o dispositivo com a compressão ativada, use a opção ‘compress’:

mount -t btrfs -o compress /dev/sdc /mnt

O algoritmo padrão de compressão é o zlib. Mas você pode usar também o LZO.
Entenda a diferença entre os dois e obtenha mais detalhes da aplicação no artigo Como ativar compressão no Btrfs.
Caso o sistema de arquivos já esteja montado, use o parâmetro ‘remount’:

mount -t btrfs -o remount,compress /dev/sdc /mnt

Assim, não será necessário desmontar e montar manualmente.
Se quiser ver as opções de montagem atuais da sua unidade Btrfs, use o mount combinado com o comando grep.

mount | grep btrfs

O meu resultado é o que segue:

/dev/sdc on /mnt type btrfs (rw,relatime,compress=zlib,space_cache,subvolid=5,subvol=/)

Pode ser interessante fazer testes, montando o sistema manualmente.
Quando tudo estiver funcionando do jeito que você quer, inclua estas opções de montagem no arquivo fstab.
Ao usar ‘autodefrag’, na montagem, o sistema irá executar o processo de desfragmentação em background ou nos bastidores, sem atrapalhar o uso da máquina, sempre que detectar alguma gravação aleatória.
Segue um exemplo de uso:

mount -t btrfs -o remount,compress,autodefrag /dev/sdc /mnt

Se você estiver tendo algum problema grave com a sua unidade de armazenamento, pode tentar recuperá-la durante a montagem, com ‘recovery’:

mount -o recovery /dev/sdc /mnt 

Como alterar o tamanho de um volume Btrfs

Não há necessidade de desmontar o volume para alterar o seu tamanho. Esta operação pode ser feita online.
Para reduzir o tamanho da unidade em 5 GiB, use o seguinte comando:

btrfs filesystem resize -5g /mnt

Para aumentar o tamanho em 500 MiB, use o seguinte comando:

btrfs filesystem resize +500m /mnt

Se isto não for possível, o sistema retornará o erro:

Resize '/mnt/' of '+500m'
ERROR: unable to resize '/mnt/' - File too large

Para ver o novo tamanho do volume, use o comando df:

df -h /mnt/
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
/dev/sdc        4,1G   32M  3,3G   1% /mnt

Simples, não é?
Este artigo, dá uma ideia inicial das possibilidades do sistema de arquivos Brtfs e lhe permite começar a explorar toda a sua robustez.
Não esqueça de se aprofundar mais no assunto, lendo os textos linkados.
Divirta-se!

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *