Do not speak Portuguese? Translate this site with Google or Bing Translator

DwarFS, um sistema de arquivos criado para reduzir dados redundantes

Conheça os detalhes, o criador e tudo mais sobre o DwarFS, um incrível sistema de arquivos criado para reduzir dados redundantes.

Marcus Holland-Moritz (um engenheiro de software do Facebook) lançou as primeiras versões do DwarFS, um sistema de arquivos somente leitura projetado para maximizar a compactação e reduzir dados redundantes.

Este sistema de arquivos usa o mecanismo FUSE e é executado no espaço do usuário, o código é escrito em C++ e é distribuído sob a licença GPLv3.

DwarFS, um sistema de arquivos criado para reduzir dados redundantes

DwarFS, um sistema de arquivos criado para reduzir dados redundantes
DwarFS, um sistema de arquivos criado para reduzir dados redundantes

DwarFS se assemelha a sistemas de arquivos como SquashFS, cramfs e CromFS em suas tarefas e pode ser usado para criar imagens live e reduzir o tamanho dos arquivos com um grande número de duplicatas e dados duplicados (por exemplo, armazenamento de imagens de máquinas virtuais ou coleções de diferentes versões de programas).

Em termos de velocidade de acesso a dados, o DwarFS está quase no mesmo nível que o SquashFS, mas várias vezes à frente deste FS em termos de eficiência de compressão e velocidade de imagem.

O projeto foi desenvolvido para resolver o problema de otimização de armazenamento com diferentes versões do Perl (o autor do DwarFS participa da manutenção do arquivo CPAN).

Inicialmente foi feita uma tentativa de usar o Cromfs para compressão, mas demorou muito para construir a imagem e a estabilidade deixou muito a desejar. O SquashFS rodou de forma estável e renderizou imagens notavelmente mais rápido, mas o nível de compressão era inaceitável.

A maior parte do código DwarFS foi escrito em 2013. Este ano, o autor encontrou tempo para trazer o código ao público e escrever documentação. DwarFS usa as bibliotecas Boost e Folly.

A biblioteca congelada da filial do Facebook Thrift é usada para armazenar metadados. Outras dependências incluem FUSE3 e as bibliotecas de compactação lz4, zstd e liblzma.

O DwarFS superou o SquashFS em termos de taxa de compressão em 8 vezes e em termos de velocidade de criação de imagem em 4 vezes ao criar uma imagem que inclui 1139 instalações Perl diferentes, das quais existem 284 versões de Perl.

O DwarFS foi capaz de reduzir o conjunto de testes de 47 GB para 582 MB (1,1% do tamanho original), enquanto o tamanho da imagem SquashFS resultante era de 4,7 GB. O SquashFS levou 69 minutos para criar a imagem, enquanto o DwarFS concluiu o trabalho em 15 minutos.

Ambos os sistemas de arquivos usaram o algoritmo ZSTD para compressão. Usando o LZMA, o tamanho da imagem DwarFS foi reduzido em outros 18% (aprox. 479 MB), mas a velocidade de acesso a essa imagem foi significativamente reduzida.

Testes com dados com menos duplicatas mostraram uma vantagem não tão significativa, mas ainda notável, do DwarFS.

Por exemplo, o tamanho da imagem para Paspberry Pi OS root FS foi de 298 MB para DwarFS e 364 MB para SquashFS, e o tempo de construção foi de 1 minuto 36 segundos e 1 minuto 54 segundos, respectivamente.

Dos principais recursos do DwarFS, os seguintes se destacam:

  • A capacidade de energia elimina a redundância agrupando dados semelhantes (independentemente dos limites do arquivo) usando funções hash LSH para identificar objetos semelhantes.
  • Análise de segmentação de bloco do sistema de arquivos para reduzir o tamanho do sistema de arquivos descompactado e aumentar a eficiência do uso do cache do processador devido ao fato de que mais dados necessários entram.
  • Implementação multithread do utilitário de imagem e do módulo FUSE, que pode usar todos os núcleos de CPU disponíveis durante a execução.
  • Suporte experimental para a capacidade de conectar controladores Lua que podem ser usados ​​para filtrar e classificar conteúdo.
  • Modo de reembalagem que permite alterar o algoritmo de compactação de uma imagem já criada (por exemplo, você pode reembalar usando LZMA ou LZ4 em vez de ZSTD).
  • As imagens são criadas usando o utilitário mkdwarfs e montadas usando o utilitário dwarfs.

Finalmente, se você deseja saber mais sobre este sistema de arquivos ou está interessado em poder compilar seu código-fonte, pode consultar as informações ou obter o código-fonte no seguinte endereço.

Compartilhe:
Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.