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:
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.
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.
export LC_ALL=C
no 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"
.
--
) "mais complicado". Isso é tão importante quanto evitar a injeção de SQL, por exemplo.