Apresentando o Btrfs
Um pouco da história e o objetivo do projeto Btrfs.
Btrfs é um sistema de arquivos cujo desenvolvimento foi iniciado em 2007 na Oracle Corporation. Seu principal desenvolvedor é Chris Mason. Chris Mason, é um engenheiro que trabalhava em ReiserFS para SUSE, e juntou-se à Oracle em 2007 para desenvolver um novo sistema de arquivos com recursos não existentes em muitos sistemas de arquivos.
Atualmente Btrfs está sendo desenvolvido com muito esforço, não só pela Oracle, mas com participação de empresas de nomes impactantes, como Intel, SUSE, Red Hat e Fujitsu. O mesmo é considerado o sistema de arquivos da próxima geração para sistemas GNU/Linux.
Btrfs na versão 1.0, foi originalmente programado para lançamento em finais de 2008, e foi finalmente aceito no kernel Linuxpadrão, a partir de 2.6.29, em 2009. Várias distribuições GNU/Linux começaram a oferecer o Btrfs, como um experimental, na escolha do sistema de arquivos raiz durante a instalação, incluindo as seguintes distros:
- Arch Linux
- openSUSE 11.3
- SLES 11 SP1
- Ubuntu 10.10
- Linux Sabayon
- Red Hat Enterprise Linux 6
- Fedora 15
- Oracle Enterprise Linux 6.1
- MeeGo
- Debian
- Slackware 13.37
Alguns dos principais objetivos deste novo sistema de arquivos é torná-lo 100% eficaz em tolerância de falhas e erros, inibindo perda de dados por problemas que podem vir acontecer, assim, como fazer um gerenciamento dos volumes criados com Btrfs, permitindo aumentar e diminuir seu tamanho com o sistema de arquivo montado, e ainda fazer com que o mesmo seja o mais veloz e tenha um poder de armazenamento muito grande.
Com estes recursos, entre outros, com certeza será um sistema de arquivos do futuro, não acham?
Tais recursos que os desenvolvedores desejam implantar já existem no sistema de arquivos ZFS da Sun Microsystem, proprietária dos SO Solaris e OpenSolaris. Por isso que muitos consideram o Btrfs, o ZFS para GNU/Linux.
Em 2011, características de desfragmentação foram anunciadas para a versão do kernel Linux 3.0. Além de Mason da Oracle, um desenvolvedor da Fujitsu contribuiu com mudanças de desempenho.
– Mas por que desenvolver um novo sistema de arquivos e não aperfeiçoar os sistemas de arquivos já existentes?
De acordo com o site do projeto, apesar do GNU/Linux ter uma grande variedade de sistemas de arquivos que podem ser usados, existem uma série de desafios com escala para os subsistemas de armazenamento de grande porte, que estão se tornando comum em centros de dados atuais.
Sistema de arquivos precisa de escala na sua capacidade de enfrentar e gerenciar o armazenamento de grande porte, e também na sua capacidade de detectar, reparar e tolerar erros nos dados armazenados no disco.
Estas necessidades em si dariam muito trabalho em implantar em um sistema de arquivos que foi desenvolvido com estes recursos, por isso que os desenvolvedores estão tentando ‘reinventar a roda’.
Em 2008, o principal desenvolvedor do ext3 e ext4, sistemas de arquivos, Theodore , afirmou que, embora houvesse melhoras das características de ‘ext4’ , não teve um grande avanço, pois o mesmo utiliza tecnologia obsoleta, e é um tapa-buracos; Theodore acredita que Btrfs é a melhor direção de avanço porque “ele oferece melhorias em confiabilidade, escalabilidade e facilidade de gerenciamento”. Btrfs também tem “um mesmo número das ideias que o projeto Reiser3 / 4 teve”.
Notem que o sistema de arquivos padrão para instalação em uma série de distros corporativas e livres, usa ‘ext4’ como padrão e outras ainda usam ‘ext3’, no entanto, estes sistemas de arquivos, entre outros, não contém uma série de recursos que são de grande necessidade, como por exemplo, grande capacidade de armazenamento e a tolerância de falhas não são tão eficazes em todos os sistemas de arquivos, apesar de usarem journaling.
Justamente estes recursos que faltam nos sistemas de arquivos serão implementados no novo sistema de arquivos de acordo com os desenvolvedores.
Principais recursos do sistema de arquivos Btrfs:
- Conversão do sistemas de arquivos ext3 e ext4 para Btrfs;
- Desfragmentação com o sistema de arquivos montado;
- Gerenciamento de volumes lógicos integrados no sistema de arquivos permitindo o aumento e diminuição do espaço total;
- Suporte a RAID 0, RAID 1 e RAID 10;
- Snapshots com sistema de arquivos montados, imagine que um ‘snapshot’ é uma imagem do volume lógico, fazer uma duplicata de um sistema congelando uma delas, ou seja, um backup em tempo real;
- Backup incremental eficiente e espelhamento de FS;
- Verificação do sistema de arquivos montado ‘on-line’ e desmontado ‘off-line’, ambas de forma muita rápida;
- Checksums sobre os dados e metadados, isso é uma das garantias de manter a integridade dos dados armazenados;
- Alocação dinâmica de inodes: com esse recurso (lembre-se o que inodes são estruturas que contém informações sobre os arquivos) haverá uma diminuição de desperdício de espaço. Outros sistemas de arquivos têm blocos de tamanho fixo para alocação, no Btrfs o tamanho do bloco (lembre-se que os dados no disco fica armazenado em blocos) será justamente do tamanho do arquivo a ser alocado;
- Compressão com zlib e LZO;
- Eficiência de organização de diretórios e arquivos;
- Tamanho máximo de um arquivo é 16 Exabytes.
Existem outros recursos que não mencionei, mas nem todos os recursos mencionados e planejados pelo projeto Btrfs ainda foram implantados.
Como todo usuário, vem no mínimo um pouco de curiosidade de testar e ver como o sistema se comporta com Btrfs, fazendo inicialmente testes de desempenho.
Então deixo um link que mostra um benchmark feito pela Phoronix comparando ext4 com Btrfs usando um kernel Linux na versão 3.3:
Considerações
O desenvolvedores não aconselham que use o Btrfs em seus sistemas de armazenamento em produção, pois ele é considerado como instável, seu uso é recomendado pelos desenvolvedores apenas para benchmarks e análises, mesmo com os kernels mais atuais oferecendo suporte para o mesmo.
Mas, quando o mesmo ficar estável e ter implantando todos os recursos desejados (algo que vai levar um tempo), vai ficar um sistema de arquivos bem completo e, como citado antes, de outra geração.