Os tars são deduplicáveis no nível do bloco?

5

Muito simplesmente, quando um arquivo tar é feito em disco, as extensões seriam deduplicáveis com extensões dentro e / ou fora do tar? Eu estou perguntando no sentido teórico, então se as extensões de dados são idênticas dentro do tar (sem deslocamento, ou dividindo dentro das extensões para compactar) então teoricamente, as extensões irão igualar aquelas que estão fora do tar igualmente e então seriam deduplicáveis .

Por exemplo, se eu tivesse que tar um diretório, use a desduplicação em nível de bloco, o tamanho efetivo do tar, o tamanho dos cabeçalhos adicionais, metadados e o marcador de final de archive.

Obviamente, estou falando de tar descompactado, especificamente o tar GNU. Eu olhei para o padrão GNU tar e parece manter os dados do bloco original pelo que li, mas talvez tenha interpretado mal o que li.

    
por flungo 10.06.2015 / 13:43

1 resposta

5

Geralmente, não. Seria possível projetar um sistema de arquivos que fornecesse esse tipo de desduplicação, mas seria muito caro, por muito pouco benefício prático, então duvido que isso tenha sido feito. A questão é que a deduplicação só olha para as extensões alinhadas .

Os sistemas de arquivos de desduplicação geralmente funcionam em um nível de bloco. Quando o driver do sistema de arquivos está prestes a armazenar um bloco, ele calcula uma soma de verificação para o conteúdo do bloco e pesquisa esta soma de verificação em uma tabela. Se a tabela disser que nenhum bloco com esta soma de verificação existe, o bloco é armazenado e a soma de verificação é adicionada à tabela. Se a soma de verificação estiver presente na tabela, o driver verifica se algum dos blocos com essa soma de verificação é idêntico ao bloco que está prestes a ser armazenado; se houver, uma nova referência a esse bloco será criada e, se não forem, o bloco será adicionado.

Como você pode ver, há um custo a ser pago sempre que se escreve um bloco. Mas pelo menos esse custo só é pago uma vez por cada bloco. Se o arquivo 1 contiver aaaabbbbcccc , o arquivo 2 contiver aabbbbcccc e o tamanho do bloco for 4, os arquivos não conterão nenhum bloco idêntico, portanto, não ocorrerá deduplicação. A detecção de que o arquivo 2 está incluído no arquivo 1 exigiria somas de verificação de computação para blocos em qualquer alinhamento, a um custo proibitivo.

Em geral, os blocos de um arquivo em um arquivo tar não estão alinhados com os blocos do sistema de arquivos. Um arquivo em um arquivo TAR pode iniciar em qualquer deslocamento que seja um múltiplo de 512 (o tamanho do bloco de tar), mas a maioria dos sistemas de arquivos usa um tamanho de bloco maior. Se o início de um arquivo dentro do arquivo estiver alinhado com o início de um bloco de sistema de arquivos, esse arquivo será desduplicado se a oportunidade se apresentar. Tamanhos de bloco de sistema de arquivos típicos são maiores do que isso, embora, como eles são um múltiplo de 512, a desduplicação ocorrerá ocasionalmente, por exemplo, cerca de 1 em 8 para blocos de 4096 bytes, assumindo uma distribuição uniforme de tamanhos de arquivo modulo 4096 (o que não é bem verdade, então a probabilidade é de fato um pouco menor).

O caso típico de uso para a desduplicação são arquivos idênticos ou praticamente idênticos: cópias de backup, versões antigas de um arquivo, etc. Os arquivos transformados não são comuns. Arquivos não compactados, especialmente, não são típicos.

    
por 11.06.2015 / 01:58