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 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.