O que são instantâneos no nível do arquivo, existe algum sistema de arquivos que suporte esse recurso?

0

Estou tentando entender o que são snapshosts em nível de arquivo. Qualquer um tem idéia de quais sistemas de arquivos suportam isso para que eu possa testá-lo.

link

    
por Onkar M 30.10.2018 / 20:58

2 respostas

1

Em primeiro lugar, seja bem-vindo e obrigado pelo seu interesse em contribuir para um projeto de código aberto. Não sei se você já viu o link e link mas se não, entrar em contato com o projeto Ceph é provavelmente um bom lugar para começar.

A descrição é bastante esparsa, mas dizem qual é o caso de uso: versionamento no estilo Dropbox. O Dropbox (que não é, infelizmente, software livre) mantém cópias antigas dos arquivos que você envia para ele. Portanto, se você editar um arquivo e cometer um erro, poderá recuperar a versão de pré-engano. É semelhante ao controle de versão do código fonte, exceto que o Dropbox automaticamente confirma, não é algo que você faz manualmente.

O btrfs tem um recurso semelhante, implementado ao tirar instantâneos rápidos e baratos em um nível por subvolume (um sub-volume pode ser um único diretório). Os instantâneos compartilham dados e somente os blocos modificados se tornam não compartilhados (também conhecido como copy-on-write). O Snapper , que confesso que nunca usei, é uma ferramenta de fácil utilização construída sobre isso. O Reflink (que esse bug bloqueia) é um recurso similar no btrfs que permite fazer uma cópia copy-on-write de um único arquivo.

Praticamente qualquer outro sistema de arquivos com snapshots deve fornecer um recurso similar, acredito que o ZFS também, por exemplo.

Eu não conheço nada de Cephs internamente, mas uma palavra de advertência - esse bug pode muito bem ser uma tarefa muito significativa. Há potencialmente muito trabalho não apenas em garantir que as gravações executem a cópia conforme necessário, mas também em mantê-la eficiente; você não quer, por exemplo, reescrever um arquivo de 4 GB para acabar com um milhão de blocos de 4K fragmentados em todo o dispositivo.

    
por 30.10.2018 / 22:35
1

'Versão de arquivos' é o termo mais comum para o assunto mencionado. O recurso Histórico de arquivos no Windows 10 e o recurso de versão no Dropbox são bons exemplos que você provavelmente já encontrou antes (embora nenhum deles seja feito pelo sistema de arquivos).

No que diz respeito aos sistemas de arquivos que realmente implementam isso:

  • Arquivos-11: O sistema de arquivos clássico Vax / VMS e OpenVMS. O versionamento de arquivos era uma parte integrante do design do VMS, portanto, é natural que o sistema de arquivos principal utilizado seja suportado nativamente. Quando o controle de versão estava ativado, você podia acessar versões antigas de arquivos usando uma sintaxe especial para o caminho do arquivo.
  • Fóssil: O principal sistema de arquivos do Plan 9 da Bell Labs depois dos 200. Assim como os arquivos-11, o fóssil foi projetado para versões desde o início, embora a maneira como você acessa versões antigas seja um pouco diferente de arquivos-11. A Fossil tinha o recurso adicional de poder transferir versões antigas para sistemas de armazenamento externos (geralmente executando o Venti, um sistema de arquivos do tipo WORM arquivado). O sistema de arquivos original do Plan 9 também suportava controle de versão e, da mesma forma, poderia enviar dados para o armazenamento de arquivos, mas caiu rapidamente quando o Fossil se tornou amplamente disponível.
  • GitFS: GitFS é uma interface especial baseada em FUSE para o sistema de controle de versão git. Ele permite montar um repositório git como um sistema de arquivos local e comete automaticamente todas as alterações feitas. Eu vi projetos semelhantes para outros softwares VCS também. O repositório oficial é aqui .

Esses são os únicos que eu conheço pessoalmente. Eu acho que existem alguns sistemas de arquivos distribuídos que suportam isso também, mas eu não tenho tanta experiência com isso.

Além disso, vale a pena notar que nem o BTRFS nem o ZFS realmente suportam isso. Ambos têm suporte a snapshot, mas não conseguem capturar instantaneamente arquivos individuais (os snapshots em ambos operam com granularidade mais alta). Ambos suportam o recurso "reflets", o que significa que você pode implementar essa funcionalidade em cima deles, não é algo que eles fazem nativamente (o OCFS2 e o XFS também suportam o reflinks).

    
por 31.10.2018 / 20:44