O btrfs compartilha partes de arquivos em instantâneos?

3

Eu sei que os instantâneos modernos do sistema de arquivos ocupam muito pouco espaço até que eles começam a divergir pelas alterações nos arquivos. No entanto, não consegui identificar em qual granularidade o btrfs gerencia as alterações. Em outras palavras, uma pequena alteração em um arquivo causará toda a realocação do arquivo no instantâneo alterado ou apenas um subconjunto do arquivo será realocado?

O motivo é saber o que esperar ao trabalhar com instantâneos de arquivos muito grandes.

    
por Álex 25.03.2015 / 13:01

1 resposta

2

Sim, o btrfs compartilha partes de arquivos em instantâneos. Não realoca todo o arquivo.

Os instantâneos funcionam da mesma forma que as outras operações COW, de acordo com o wiki oficial . Os blocos originais são apontados no instantâneo e, se o arquivo for alterado no instantâneo, o COW faz uma nova extensão. O COW faz isso se não há nenhum, um ou cem instantâneos anteriores com o arquivo.

O Btrfs controla os dados do arquivo em listas de blocos chamados de extensões. Quando um bloco é atualizado, o btrfs pode copiar toda a extensão se for pequena, ou pode dividir a extensão em partes, mantendo seções inalteradas do arquivo como extensões menores chamadas "bookends", além da nova seção alterada. Essas novas extensões de bookend menores são apenas novos ponteiros para os blocos de dados originais, portanto, os dados inalterados não são copiados. Veja descrição da extensão da Wikipedia .

Portanto, os instantâneos compartilharão os blocos inalterados em um arquivo grande.

(Note que você pode desligar a COW em um arquivo grande, mas você não pode tirar uma foto instantânea do que eu li.)

    
por 09.04.2015 / 02:28