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.
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.
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!
One reply on “Introdução ao sistema de arquivos BTRFS – parte 2”
Ola, muito bom o post… mas gostaria que se possível falasse nos snapshots , no meu caso pretendo fazer apenas de 1 HD de aquivos para o samba buscar os arquivos alterados com o shadow copy.