Introdução ao sistema de arquivos BTRFS

Introdução ao sistema de arquivos BTRFS
O BTRFS (B-Tree FileSystem) é um sistema de arquivos de cópia em escritos (Cow) moderno para Linux. O BTRFS visa implementar muitos recursos avançados do sistema de arquivos enquanto se concentra na tolerância, reparo e administração fácil de falhas. O sistema de arquivos BTRFS foi projetado para suportar o requisito de alto desempenho e grandes servidores de armazenamento. É adequado para data centers de escala de petabyte, bem como smartphones celulares.Neste artigo, vou discutir o sistema de arquivos BTRFS e seus recursos. Então vamos começar.

Copie em Write - Cow FileSystem:

BTRFS é um sistema de arquivos de cópia sobre write (vaca). Em um sistema de arquivos de vaca, quando você tenta modificar os dados no sistema de arquivos, o sistema de arquivos copia os dados, modifica os dados e depois grava os dados modificados em um local livre diferente do sistema de arquivos.

A principal vantagem do sistema de arquivos Copy-on-Write (Cow) é que a extensão dos dados que deseja modificar é copiada para um local diferente, modificado e armazenado em uma extensão diferente do sistema de arquivos. A extensão dos dados originais não é modificada. Portanto, o sistema de arquivos BTRFS pode eliminar o risco de corrupção de dados ou atualização parcial em caso de falha de energia durante a modificação dos dados, pois os dados originais são mantidos inalterados.

A principal desvantagem do sistema de arquivos de cópia sobre gravação (vaca) é que os grandes arquivos tendem a ser fragmentados à medida que são modificados. Então, a desfragmentação é necessária de vez em quando. Felizmente, o sistema de arquivos BTRFS suporta desfragmentação on -line. Então, você não precisa desmontar o sistema de arquivos para desfragitar um sistema de arquivos BTRFS.

Principais recursos do sistema de arquivos BTRFS:

Os principais recursos do sistema de arquivos BTRFS são:

i) armazenamento de arquivos baseado em extensão: Em um sistema de arquivos baseado em extensão, a unidade de armazenamento é chamada de extensão. Uma extensão é uma área de armazenamento contígua que é reservada para um arquivo. Um arquivo requer uma extensão, por menor que seja o arquivo. Para arquivos maiores (tamanho do arquivo maior que o tamanho da extensão), serão necessárias múltiplas extensões. Para arquivos maiores, os metadados serão usados ​​para acompanhar as extensões que o arquivo está usando. No sistema de arquivos BTRFS, os metadados são significativamente menores em tamanho. Metadados menores melhora a eficiência de armazenamento e o desempenho do sistema de arquivos.

ii) Suporte enorme do tamanho do arquivo: Em um sistema de arquivos BTRFS, um único arquivo pode ser cerca de 264 bytes ou 16 eib (Exbibytes) em tamanho. Não importa o tamanho do seu arquivo, os btrfs podem apoiá -lo.

iii) embalagem com eficiência de espaço de arquivos pequenos: Normalmente, não importa o quão pequeno seja, será necessário um bloco ou uma extensão para armazenar o arquivo. Isso desperdiça muito espaço em disco. Para resolver esse problema, o sistema de arquivos BTRFS incorpora arquivos menores nos metadados para armazenar arquivos menores com eficiência.

iv) Diretórios indexados com eficiência espacial: Os diretórios do sistema de arquivos BTRFS são indexados de duas maneiras diferentes. Para pesquisa de nome do arquivo, a indexação baseada em chave é usada. Para referência de dados, a indexação de chave baseada em inode é usada. A indexação de dois níveis melhora o desempenho da pesquisa de diretório/arquivo e reduz os requisitos de armazenamento para os índices.

v) Alocação dinâmica de inode: Você precisa de 1 inode para referir 1 arquivo. Muitos sistemas de arquivos (eu.e., Ext4) tem um número fixo de inodos. Portanto, se você criar muitos arquivos pequenos, poderá ter muito espaço no seu disco, mas não poderá criar novos arquivos. Você também não pode aumentar o número máximo de inodos depois que o sistema de arquivos for criado.

O BTRFS resolve esse problema alocando os inodos dinamicamente como são necessários. Então, você pode criar quantos arquivos quiser, desde que tenha espaço livre em disco.

vi) Instantâneos graváveis ​​e instantâneos somente leitura: O sistema de arquivos BTRFS suporta instantâneos. Você pode tirar um instantâneo do sistema de arquivos atual, que você pode usar para restaurar seus dados se tiver removido acidentalmente alguns arquivos ou corrompeu alguns dados.

Por padrão, os instantâneos do BTRFS são somente leitura. Depois de tirar um instantâneo somente leitura, você não pode alterar arquivos/diretórios naquele instantâneo. De qualquer forma, se você deseja alterar quaisquer arquivos/diretórios depois de tirar um instantâneo do seu sistema de arquivos BTRFS existente, você pode alterar o instantâneo somente leitura para um instantâneo gravável e modificar quaisquer arquivos/diretórios naquele instantâneo.

vii) subvolumes: Um sistema de arquivos BTRFS pode ter muitos subvolumes. Um subvolume é uma árvore binária nomeada (árvore B) (ou raiz interna/lógica do sistema de arquivos) do sistema de arquivos existente (principal) do sistema de arquivos BTRFS. Um subvolume não é um dispositivo de bloco próprio. Mas você pode montar subvolumes de BTRFs individualmente. Você pode pensar em subvolumes como espaços para nome.

VIII) SUPORTE DE CONGULAÇÃO DO SUBVOLUME CONSELHO: Você pode alocar cotas para subvolumes também. Depois que a cota for excedida, você não poderá adicionar novos dados ao subvolume. Você não precisará de programas separados para criar cotas de subvolume BTRFS.

ix) SOMS DE CHECHES em dados e metadados: Para evitar a corrupção de dados, o BTRFS usa algoritmos de soma de verificação CRC32C para os dados e os metadados do sistema de arquivos por padrão. As somas de verificação são armazenadas no sistema de arquivos para verificar automaticamente erros do sistema de arquivos e corrupções de dados em segundo plano.

O BTRFS tem suporte para muitos outros algoritmos de soma de verificação: xxhash, sha256 e blake2b.

x) Compressão: O sistema de arquivos BTRFS suporta compactação de arquivo transparente. A compactação e descompressão dos arquivos em um sistema de arquivos BTRFS são feitos em segundo plano automaticamente.

BTRFS suporta 3 algoritmos de compressão: Zlib, LZO e Zstd.

Zlib é o método de compactação padrão do sistema de arquivos BTRFS.

xi) Suporte de múltiplos dispositivos integrados: Os sistemas de arquivos BTRFS possuem suporte integrado ao gerenciador de volume lógico (LVM). Você pode adicionar vários dispositivos de armazenamento em um único sistema de arquivos BTRFS. Você também pode configurar matrizes de RAID no sistema de arquivos BTRFS sem precisar de nenhum software extra.

O sistema de arquivos BTRFS suporta a faixa de dados, o espelhamento de dados, a faixa de dados+espelhamento e implementações de paridade única e dupla.

Retiragem de dados: Se você adicionou vários dispositivos de armazenamento no mesmo sistema de arquivos BTRFS, o BTRFS pode armazenar o mesmo arquivo em diferentes dispositivos/partições físicas. Isso é chamado de tira de dados. A Striping de dados melhora o desempenho de leitura/gravação do sistema de arquivos. RAID-0 usa o recurso de striping de dados extensivamente.

Espelhamento de dados: Se você adicionou vários dispositivos de armazenamento no mesmo sistema de arquivos BTRFS, todos os dados gravados em um dispositivo de armazenamento serão gravados para todos os outros dispositivos de armazenamento. Isso é chamado de espelhamento de dados. RAID-1 usa o recurso de espelhamento de dados extensivamente.

Data Striping+Paridade única: O RAID-5 usa tira de dados e paridade distribuída única. Se você adicionou vários dispositivos de armazenamento em um sistema de arquivos BTRFS, o RAID-5 retirará os dados em vários dispositivos de armazenamento e calculará e armazenará blocos de paridade nos dispositivos de armazenamento. RAID-5 pode sustentar uma única falha na unidade.

Data Striping+Double Parity: O RAID-6 usa tira de dados e paridade distribuída dupla. Se você adicionou vários dispositivos de armazenamento em um sistema de arquivos BTRFS, o RAID-6 retirará os dados em vários dispositivos de armazenamento e calculará e armazenará blocos de dupla paridade nos dispositivos de armazenamento. RAID-6 pode sustentar duas falhas de acionamento. Fora isso, é o mesmo que RAID-5 (Data Striping+Single Parity).

Data Striping+espelhamento: O RAID-10 usa a listra de dados e o espelhamento de dados ao mesmo tempo. RAID-10 requer um número par de dispositivos de armazenamento do mesmo tamanho a ser adicionado a um único sistema de arquivos BTRFS. O número mínimo de dispositivos de armazenamento que você pode adicionar em um sistema de arquivos RAID-10 BTRFS é 4. Metade do dispositivo de armazenamento será usada para a faixa de dados e a outra metade será usada para espelhar os dados da primeira metade dos dispositivos de armazenamento (onde os dados são listrados).

xii) Consciência e otimizações do SSD: O sistema de arquivos BTRFS está ciente do SSD e possui alguns recursos de otimização do SSD. O sistema de arquivos BTRFS também possui suporte de acabamento/descarte para dispositivos de armazenamento SSD.

O recurso de acabamento pode detectar e marcar extensões de dados que não são mais usadas. Depois que as extensas são marcadas, o sistema de arquivos BTRFS pode limpá -los automaticamente para que os outros arquivos possam usar essas extensões de dados.

O recurso de descarte removerá todos os dados do SSD. Se você quiser vender seu SSD, esse recurso pode ser útil.

xiii) backup incremental eficiente: BTRFS suporta backup incremental. Na primeira vez em que você backup de um sistema de arquivos BTRFS, é necessário um instantâneo do sistema de arquivos atual. Em seguida, qualquer backup subsequente será comparado com o primeiro instantâneo, e apenas as alterações serão armazenadas no disco. Portanto, quaisquer backups subsequentes terão menos espaço em disco e os backups serão mais rápidos.

XIV) Scrub de fundo: É um processo do sistema de arquivos BTRFS usado para encontrar e corrigir erros nos arquivos que possuem cópias redundantes (múltiplas cópias) armazenadas no sistema de arquivos BTRFS.

xv) Desafiração de sistema de arquivos on -line: Eu expliquei anterior. Os arquivos larges são armazenados em múltiplas extensões do sistema de arquivos BTRFS. Ao modificar arquivos grandes, as extensões que devem ser modificadas são copiadas para diferentes extensões livres do sistema de arquivos e modificadas lá. Portanto, as extensões de dados não modificadas também são mantidas caso seja necessário para a recuperação do sistema de arquivos. Isso causa a fragmentação (as extensões de dados de um arquivo grande não serão contínuas e serão espalhadas por todo o dispositivo de armazenamento) no sistema de arquivos, à medida que os arquivos grandes são modificados. Muita fragmentação afeta negativamente o sistema de arquivos (torna o sistema de arquivos Operação de leitura/gravação mais lentamente).

Para resolver esse problema, o sistema de arquivos BTRFS suporta desfragmentação do sistema de arquivos on -line. Com a desfragmentação on -line, você não precisa desmontar o sistema de arquivos para desfragitar o sistema de arquivos. Você pode manter o sistema de arquivos em funcionamento e ainda a desfragmentar. A desfragmentação moverá extensões de arquivo em torno do sistema de arquivos para manter as extensões do mesmo arquivo grande que o contínuo possível. A desfragmentação melhora o desempenho do sistema de arquivos.

XVI) Verificação offline do sistema de arquivos: O sistema de arquivos BTRFS possui muitas ferramentas internas que você pode usar para verificar erros do sistema de arquivos e corrigi-los. Você também pode corrigir um sistema de arquivos BTRFS quebrado (que não pode ser montado) com essas ferramentas.

XVII) Conversão no local dos sistemas de arquivos existentes EXT2/3/4 e Reiserfs: O sistema de arquivos BTRFS possui um utilitário interno BTRFS-CONVERT, que você pode usar para converter um sistema de arquivos Ext2/3/4 e Reiserfs existente em um sistema de arquivos BTRFS.

O programa de conversão do sistema de arquivos BTRFS lê os metadados de um sistema de arquivos existente EXT2/3/4 (ou reiserfs), cria metadados btrfs e os armazena no sistema de arquivos. O sistema de arquivos mantém os metadados BTRFs e o ext2/3/4 (ou reiserfs). O sistema de arquivos BTRFS aponta para os mesmos blocos de arquivos usados ​​pelos arquivos do sistema de arquivos ext2/3/4 (ou reiserfs). O sistema de arquivos e os blocos de dados existentes são mantidos intocados, pois o BTRFS é um sistema de arquivos de cópia sobre gravação (Cow). Quando um arquivo é modificado, o sistema de arquivos BTRFS copia os blocos de dados originais para novas extensões livres e as modifica lá.

XVIII) Dispositivos de sementes: O sistema de arquivos BTRFS suporta dispositivos de sementes. Você pode criar um sistema de arquivos somente leitura e usá-lo como modelo (dispositivo semente) para criar outros sistemas de arquivos BTRFS. O benefício de fazer isso é que apenas os dados modificados serão gravados no novo sistema de arquivos. Os dados originais (nos dispositivos sementes) serão mantidos como são. Esse recurso pode ser usado para economizar muito espaço em disco e redundância de dados.

xix) Enviar/receber alterações no subvolume: O sistema de arquivos BTRFS pode enviar/receber alterações no subvolume. O sistema de arquivos BTRFS pode enviar as alterações incrementais de um subvolume para outro sistema de arquivos BTRFS (também pode residir em outro computador) que pode receber as alterações do subvolume. Esse recurso é usado para fazer backups incrementais do sistema de arquivos BTRFS, localmente ou remotamente. Este método é mais rápido e mais eficiente que o rsync.

xx) lote/desduplicação de banda: O sistema de arquivos BTRFS suporta lote ou desduplicação fora da banda. A duplicação ocorre depois que um arquivo é escrito no sistema de arquivos. O sistema de arquivos BTRFS digitaliza ativamente todo o sistema de arquivos em busca de extensões idênticas e mantém apenas uma cópia de cada extensão (remove extensões redundantes/duplicadas). O mesmo princípio de cópia sobre gravação (vaca) é usado para esta tarefa. A desduplicação economiza muitos espaços de disco.

xxi) Suporte de swapfile: Se você está usando o kernel Linux 5.0 ou mais recente, você pode criar swapfiles no sistema de arquivos BTRFS.

Existem algumas limitações de swapfile em um sistema de arquivos BTRFS:

- O swapfile deve ser alocado como nocow (não cópia em redação)

- O swapfile não deve ter nenhuma compressão habilitada.

Estabilidade do sistema de arquivos BTRFS:

O sistema de arquivos BTRFS é desenvolvido ativamente pela equipe BTRFS. A maioria dos recursos do sistema de arquivos é estável no momento da redação deste artigo. Alguns dos recursos avançados ainda não estão estáveis ​​o suficiente para um ambiente de produção. A equipe do BTRFS está trabalhando duro para resolver esses problemas de estabilidade.

Se você deseja usar o sistema de arquivos BTRFS em seu servidor de produção, verifique o status oficial - página wiki btrfs para descobrir se os recursos do sistema de arquivos necessários são estáveis ​​o suficiente para você ou não. Além disso, certifique -se de executar alguns testes antes da implantação final do seu sistema de arquivos BTRFS e lembre -se de manter backups de seus dados importantes. Manter o backup é sempre importante para ambientes de produção.

Substituição futura do sistema de arquivos ext4:

O sistema de arquivos BTRFS está sendo desenvolvido rapidamente. A equipe de desenvolvimento do BTRFS também se importa com a estabilidade do sistema de arquivos. Então, eles tentam o seu melhor para torná -lo o mais estável possível durante o desenvolvimento do sistema de arquivos BTRFS. Depois que o sistema de arquivos BTRFS estiver totalmente desenvolvido e todos os recursos são estáveis ​​o suficiente, ele pode substituir o sistema de arquivos ext4.

Referências:

[1] BTRFS Wiki - https: // btrfs.Wiki.núcleo.org/índice.php/main_page
[2] BTRFS - A documentação da árvore do kernel - https: // www.núcleo.org/doc/html/mais recente/filesystems/btrfs.html
[3] BTRFS - Glossário - https: // btrfs.Wiki.núcleo.org/índice.PHP/Glossário
[4] Recursos do sistema de arquivos “BTRFS” - https: // www.ThegeekDiary.com/recursos do BTRFS-Filesystem/
[5] Comparação de sistemas de arquivos - https: // pt.Wikipedia.org/wiki/comparação_of_file_systems
[6] BTRFS Design - BTRFS Wiki - https: // btrfs.Wiki.núcleo.org/índice.php/btrfs_design
[7] Talvez ficar sem inodos pudesse ser levado "mais a sério"? - https: // LWN.net/artigos/724522/
[8] Fazendo instantâneos de leitura BTRFS apenas com gravidade - https: // markandruth.co.Reino Unido/2016/29/29/Making-A-BTRFS-Read-som
[9] Data Striping - https: // pt.Wikipedia.org/wiki/data_striping
[10] FAQ - BTRFS Wiki - https: // btrfs.Wiki.núcleo.org/índice.PHP/FAQ
[11] Níveis padrão de RAID - https: // pt.Wikipedia.org/wiki/standard_raid_levels
[12] Trim (computação) - https: // pt.Wikipedia.org/wiki/trim_ (computação)
[13] Solid State Drive - Archwiki - https: // wiki.Archlinux.org/índice.php/solid_state_drive#TRIM
[14] BTRFSCK - BTRFS Wiki - https: // btrfs.Wiki.núcleo.org/índice.php/btrfsck
[15] Conversão de ext3/4 e reiserfs - btrfs wiki - https: // btrfs.Wiki.núcleo.org/índice.php/conversion_from_ext3
[16] Backup incremental - BTRFS Wiki - https: // btrfs.Wiki.núcleo.org/índice.php/incremental_backup
[17] Deduplicação - BTRFS Wiki - https: // btrfs.Wiki.núcleo.org/índice.PHP/desduplicação
[18] Status - BTRFS Wiki - https: // btrfs.Wiki.núcleo.org/índice.php/status