O sistema de arquivos BTRFS (B-Tree File System) foi desenvolvido para ser grande, rápido, prático e seguro. Começou a ser desenvolvido em 2007, foi introduzido ao kernel
Linux em 2009 na versão 2.6.29 e desde 2014 foi marcado como "estável", tendo ainda alguns recursos novos implementados e outros planejados.
O salto evolutivo em relação ao ext4 foi bastante grande, já que o BTRFS introduziu novas possibilidades e tecnologias que atualmente existem apenas no ZFS ou no F2FS, porém o ZFS não é nativo do kernel Linux, e o F2FS é voltado exclusivamente para memórias nand, sendo então o BTRFS uma opção bastante óbvia.
Entre as várias características do BTRFS, destacam-se:
- Capacidade de conversão de sistemas ext3/4 para BTRFS, com possibilidade de reversão;
- Suporte a raid (algumas funções requerem atenção e cuidados especiais);
- Suporte a desfragmentação automática;
- Sistema de arquivos baseado no princípio de cópia em gravação (copy-on-write);
- Subvolumes;
- Imagem instantânea do sistema de arquivos (snapshot);
- Compactação instantânea e com diferentes níveis de compressão;
- Suporte a checksums em dados e metadados (ext4 possui apenas para metadados);
- Detecção automática de SSF e suporte a Trim;
- Ótimo desempenho em SSD e discos mecânicos, tanto para arquivos, grandes quanto pequenos; e com grande velocidade de leitura e escrita. Entre vários outros.
Daqui para frente, todos os comandos que tiverem na frente a cerquilha (# - também conhecido como Hashtag), significa que devem ser executados como root, ou sudo.
O comando para criação de partições em BTRFS, é:
# mkfs.btrfs /dev/sdXX
Onde "XX", se refere ao disco e partição.
O BTRFS já foi usado como sistema de arquivos recomendado pela Red Hat em seu sistema homônimo e ainda é usado como padrão nos sistemas SUSE Linux, além de ser suportado na maioria das distribuições. Várias empresas usam o BTRFS devido ao seu desempenho e grande variedade de ferramentas e recursos disponíveis.
Neste artigo, iremos falar um pouco sobre cópia em gravação (cow), subvolumes, imagem instantânea do sistema de arquivos (snapshot) e compactação. Usarei como base o
Arch Linux, explicações e exemplos na maioria serão os disponíveis na WIKI do Arch e do próprio BTRFS.