Sistema de arquivos com desduplicação em nível de bloco


8

Estou procurando uma solução de sistema de arquivos de cópia na gravação com desduplicação para dados gerais do usuário, como /homebackups. Ele deve usar a desduplicação online / em linha / síncrona no nível do bloco usando hash seguro (para chances insignificantes de colisões) como SHA256 ou TTH . Blocos duplicados nem precisam tocar no disco.

A idéia é que eu possa copiar apenas /home/<user>para um disco rígido externo com o mesmo sistema de arquivos para fazer um backup. Simples. Sem mexer nos backups incrementais, onde a corrupção em qualquer um dos instantâneos quase sempre interrompe todos os instantâneos posteriores, e não é necessário usar uma ferramenta específica para excluir ou 'retirar' um instantâneo. Tudo deve ser feito simplesmente no navegador de arquivos, sem preocupações. Você pode imaginar como isso seria fácil? Eu nunca precisaria pensar duas vezes em fazer backup novamente!

Não me importo com um impacto no desempenho, a confiabilidade é a principal preocupação. Embora, com implementações específicas de cp, mve scp, e um plug-in de navegador de arquivos, essas operações sejam muito rápidas, especialmente quando há muita duplicação, pois elas precisam apenas transferir os blocos ausentes. Acidentalmente, usar ferramentas de cópia convencionais que não se integram ao FS levaria apenas mais tempo, desperdiçaria alguma largura de banda ao copiar remotamente e desperdiçaria alguma CPU, pois os dados duplicados seriam relidos, transferidos e re-hash (embora nada seja reescrita), mas absolutamente não corromperia nada. (Alguns softwares de compartilhamento de arquivos também podem se beneficiar da integração com o FS.)

Então, qual é a melhor maneira de fazer isso?

Eu olhei para algumas opções:

  • lessfs - Parece sem manutenção. Bom?
  • Opendedup / SDFS - Java? Eu poderia usar isso no Android ?! O que SDFS representa?
  • Btrfs - Alguns patches flutuando nos arquivos da lista de discussão, mas sem suporte real.
  • ZFS - Esperamos que um dia eles voltem a licenciar sob uma licença compatível com GPL Free / Opensource.

Além disso, há dois anos, tentei em Python usar o Fuse no nível do arquivo para ser usado sobre um FS sólido típico como o EXT4, mas achei o Fuse for Python sub-documentado e não consegui implementar todas as chamadas do sistema.


Não é um sistema de arquivos, mas talvez você queira dar uma olhada na ferramenta de backup Obnam, lançada recentemente .
janc

@ JanC: Obrigado, definitivamente parece um software de backup feito corretamente! Isso evita o seguinte: "Nenhuma brincadeira com backups incrementais em que a corrupção em qualquer um dos instantâneos quase sempre interrompe todos os instantâneos posteriores", ... mas não isso: "e não é necessário usar uma ferramenta específica para excluir ou 'retirar' um instantâneo.". Definitivamente, uma boa descoberta! Talvez eu consiga trabalhar com parte do código Python. :-)
James Haigh

@ JamesHaigh Você também pode postar essa ideia no Ubuntu BrainStorm ; se você ainda não o fez.
Samik 11/11/12

@JamesHaigh Uma das coisas no roteiro de Obnam é um sistema de arquivos baseado em fusíveis (mas não acho que exista uma linha do tempo mostrando quando esperar isso). Isso traria "nenhuma ferramenta adicional" para mais perto.
janc

Se você deseja evitar a corrupção de um backup que quebra os últimos, basta fazer um backup incremental de várias gerações. Em vez de fazer um total no domingo e um diferencial diário que é sempre relativo ao dia anterior, por exemplo, na quarta-feira, faça um backup incremental em relação ao completo no domingo (e não na terça-feira). Então, se a terça-feira estiver corrompida, você não se importa, pois se você tiver o backup de quarta-feira, pule segunda e terça-feira ao restaurar.
Psusi

Respostas:


1

Isso soa muito corporativo (como no caro).

datadomain oferece deduplicação de dados e talvez netapp com seu sistema de arquivos wafl. Mas a um custo alto.

Uma alternativa "livre" pode ser o zfs.

De acordo comigo, a alternativa "melhor" e mais Linux, embora em nível de arquivo, e não em "nível de bloco", seria o rsnapshot. Ele usa rsync e hardlinks para gerenciar o controle de versão.

Eu prefiro confiar em ferramentas antigas e comprovadas do que usar um novo sistema de arquivos como o Btrfs, que não existe há tempo suficiente para as pessoas descobrirem todos os tipos de bugs desagradáveis.


Empreendimento? Não, é mais o tipo de coisa que eu esperaria ver por padrão no Ubuntu no futuro devido à sua facilidade de uso. Eu mencionei o ZFS, mas é CDDL, portanto, não é gratuito com letra maiúscula F. rsnapshotnão é um sistema de arquivos, é mais um truque para trazer funcionalidades semelhantes a instantâneos para sistemas de arquivos legados, não cria instantâneos 'reais' (os instantâneos devem ser atômicos ) e é incremental (consulte o segundo parágrafo). Prefiro usar um FS relativamente novo do que algo que usa incrementais.
James Haigh

Eu acho que 'nível de arquivo' é um pouco ambíguo, mas vi o termo usado no contexto de sistemas de arquivos junto com o nível de bloco, byte e bit. Este foi o contexto em que eu quis dizer isso.
James Haigh

1
@JamesHaigh De acordo com a Free Software Foundation , o CDDL é uma licença gratuita (como em liberdade), mas não é compatível com a GPL . Isso significa que o código do CDDL (como a implementação oficial do ZFS) e o código da GPL (como o kernel do Linux) não podem ser vinculados legalmente , e como os drivers no Linux geralmente são vinculados como módulos, isso dificulta o suporte do CDDL nos sistemas operacionais baseados em Linux.
Eliah Kagan

2
O ZFS no Linux possivelmente (depende de quem você pergunta) contorna isso sendo distribuído separadamente . Como alternativa, o FUSE permite que os "drivers" do sistema de arquivos operem no espaço do usuário, onde eles próprios não precisam se vincular ao kernel, e também existe uma versão do ZFS do FUSE . Portanto, você tem várias opções para usar sistemas de arquivos ZFS em sistemas operacionais como o Ubuntu que usam Linux como seu kernel. (Alguns sistemas operacionais, como Debian, permitem que você use um kernel diferente.)
Elias Kagan

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.