ZFS: compactar novamente os arquivos existentes após a alteração no algoritmo de compactação


14

Eu tenho um pool criado em 2011, usando lzjb compression, e somente alguns anos depois uma atualização me permitiu definir a compactação lz4. Estimo que pelo menos 20% do conteúdo (por espaço) na matriz foi criado antes de 2013, o que significa que ainda é compactado usando lzjb.

Eu posso pensar em algumas opções para corrigir isso e recuperar (alguns) espaço:

  1. Faça backup e restaure em um novo pool. Não é realmente prático, pois não tenho armazenamento redundante suficiente para armazenar a cópia temporária. A restauração também exigiria que o pool estivesse offline por várias horas.

  2. Escreva um script para copiar novamente qualquer arquivo com um carimbo de data / hora anterior a 2013. Potencialmente arriscado, especialmente se ele engasgar com espaços ou outros caracteres especiais e acabar distorcendo o nome original.

Existe alguma maneira de fazer com que o ZFS recompacte os blocos herdados usando o algoritmo de compactação atual? Como uma esfoliação, mas curando a compressão.

Uma questão relacionada: existe alguma maneira de ver o uso de cada tipo de algoritmo de compressão? O zdb mostra apenas as estatísticas gerais de compactação, em vez de dividi-las em algoritmos individuais.


2
Tenho certeza que você nomeou as duas únicas opções. Consulte também a discussão na edição 3013 para saber por que essa funcionalidade não existe e talvez você não queira fazer isso.
Michael Hampton

2
O lz4 é supostamente no máximo 10% melhor na compactação do que o lzjb. Se 20% dos seus dados puderem ser compactados 10% melhor, você terá no máximo 2% mais espaço livre. Vale a pena?
pipe

1
Se você escrever um script de shell para fazer a cópia, adicione export LC_ALL=Cno início do script e todos os caracteres especiais não ASCII nos nomes de arquivos serão mantidos intactos. Manter o espaço em branco e o traço intactos é mais complicado, use aspas duplas e --, por exemplo cp -- "$SOURCE" "$TARGET".
pts

4
O @pipe Space é uma (muito) pequena vantagem, mas estou mais interessado na velocidade de descompressão. Na página de manual do zpool-features do FreeBSD: "Normalmente, a compactação lz4 é aproximadamente 50% mais rápida em dados compactáveis ​​e 200% mais rápida em dados incompressíveis que lzjb. Também é aproximadamente 80% mais rápida em descompactação, oferecendo aproximadamente 10% de taxa de compactação melhor. "
rowan194

@pts Eu não chamaria de obedecer às regras fundamentais de programação de shell (aspas duplas em torno de variáveis ​​ou uso --) "mais complicado". Isso é tão importante quanto evitar a injeção de SQL, por exemplo.
glglgl

Respostas:


14

Você precisa copiar novamente os dados (total ou parcial) ou o zfs envia / recebe os dados para um novo pool ou sistema de arquivos ZFS.

Não há outras opções.

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.