O ZFS esfrega a compactação e as cópias de atualização nos dados existentes?

3

Eu sei que as propriedades do ZFS, como cópias e compactação, afetam apenas os dados recém-gravados.

No entanto, gostaria de saber se um scrub atualizaria isso?

Digamos que eu criei um pool e configure compression = lz4 e copies = 2 antes de escrever 1TB de arquivos.

Então decidi não precisar manter os blocos idem, mas também gostaria de usar outro tipo de compactação.

Se eu agora definir cópias = 1 e compression = gzip-9, existe uma maneira de aplicar isso aos dados que já estão gravados no pool?

Um scrub faria isso por mim?

    
por unfa 17.02.2018 / 23:24

1 resposta

4

Não.

A alteração das propriedades do conjunto de dados, como compression e copies , afeta apenas os arquivos gravados após a alteração. Para aplicar alterações como esta nos arquivos existentes, você precisa copiá-los e transformá-los no original. Isso, é claro, quebrará qualquer conexão com quaisquer snapshots anteriores do mesmo nome de arquivo (e também em quaisquer hard links para o arquivo, já que o inode será diferente).

Como alternativa, para aplicar essas alterações a um pool ou conjunto de dados inteiro, você poderia zfs send um instantâneo para um pool diferente (por exemplo, um pool de backup), destruir o conjunto de dados do pool original (ou destruir o pool e recriar it) e, em seguida, zfs send de volta. Nota: você não pode fazer isso com a opção zfs send -R ( --replicate ) porque isso também ativa a opção -p ( --props ) do envio. Veja man zfs e procure por zfs send para mais detalhes.

zfs scrub verifica os dados existentes em um pool e reescreve quaisquer cópias corrompidas se houver redundância suficiente para ter uma boa cópia que corresponda à soma de verificação ... se não, ele apenas avisa sobre o erro não corrigível.

    
por 18.02.2018 / 02:48

Tags