Cache usando Spring Cache e EhCache
junho 24, 2017
Exercism.io
julho 16, 2017

Introdução ao BTRFS

O BTRFS, criado em 2007, é um dos filesystems mais avançados atualmente disponíveis para uso. Chris Mason, seu principal desenvolvedor, começou a trabalhar no BTRFS enquanto trabalhava na Oracle e continuou o trabalho no projeto mesmo depois de virar funcionário do Facebook. Atualmente o BTRFS é mantido por uma grande comunidade de desenvolvedores incluindo representantes de empresas como Fujitsu, SUSE, Oracle e Facebook.

Principais características

Uma das funcionalidades mais importantes do BTRFS é a capacidade de gerar snapshots de subvolumes (que por sua vez são diretórios “especiais”). Um snapshot é uma “foto” instantânea de um diretório. A criação de um snapshot é praticamente imediata pois efetivamente não corre nenhum tipo de cópia de dados nesse momento. Isso é possível em virtude de outra funcionalidade importante: o copy-on-write. Com o “COW” os dados só são replicados quando eles efetivamente mudam no subvolume original. Isso quer dizer que quando um dado muda o BTRFS vai manter uma cópia dos blocos originais (prévios à mudança) e o snapshot apontará para essa cópia.

Além dessas funcionalidades o BTRFS ainda é capaz de endereçar até 16-exabytes de dados, possui funcionalidade de RAID e tem a capacidade de crescer/diminuir o filesystem de forma online (adicionando ou removendo novos discos).

Na seção a seguir vamos fazer uma pequena introdução ao BTRFS.

Demonstração

Para essa demonstração vamos usar a distribuição CentOS (3.10.0-514.el7.x86_64) rodando no VirtualBox.

Vamos começar criando um diretório para servir de ponto de montagem para nosso filesystem. A seguir vamos formatar o /dev/sdc como BTRFS e depois montaremos o filesystem.

mkdir /btrfs
mkfs.btrfs -f /dev/sdc
mount /dev/sdc /btrfs

Agora vamos checar os detalhes do filesystem recém criado:

btrfs filesystem show /btrfs
Criação do filesystem

Criação do filesystem

Agora vamos testar os snapshots. Primeiro precisamos criar um subvolume já que não é possível gerar snapshots de diretórios “normais”:

cd /btrfs
btrfs subvolume create testeVol

Em seguida criaremos 2 snapshots em momentos diferentes mostrando como os dados do subvolume se comportam durante o processo:

echo "um" > testeVol/dados.txt
btrfs subvolume snapshot testeVol testeVol.snap1

echo "dois" >> testeVol/dados.txt
more testeVol/dados.txt

btrfs subvolume snapshot testeVol testeVol.snap2

echo "tres" >> testeVol/dados.txt

Vamos agora checar o conteúdo do arquivo datos.txt no subvolume original e nos snaphots que tiramos:

 
more testeVol/dados.txt
more testeVol.snap1/dados.txt
more testeVol.snap2/dados.txt

Na sequencia “desistiremos” de um dos snapshots e do próprio subvolume original fazendo o snapshot que sobrou tomar o lugar do subvolume original:

btrfs subvolume delete testeVol
btrfs subvolume delete testeVol.snap2
mv testeVol.snap1 testeVol

more testeVol/dados.txt

Conclusão

O BTRFS é o filesystem padrão da distribuição SUSE Linux e é oficialmente suportado por outras distribuições como o Oracle Linux.

Em um próximo post vamos abordar outras funcionalidades do BTRFS como as capacidades de RAID via software e também a remoção e adição online de novos discos.

 

Comments are closed.