Acionador do ZFS dedup one-off scan / rededup

5

Eu tenho um sistema de arquivos ZFS que está sendo executado há algum tempo e recentemente tive a oportunidade de atualizá-lo (finalmente!) para a versão mais recente do ZFS. Nossos dados não gritam dedup, mas acredito firmemente, com base em pequenos testes, que poderíamos obter de 5 a 10% de nosso espaço gratuitamente, utilizando-o. Eu habilitei a dedução no sistema de arquivos e novos arquivos estão sendo lentamente dedupificados, mas a maioria (95% +) dos nossos dados já existe no sistema de arquivos.

Sem mover os dados fora do pool e copiando-os novamente, há alguma maneira de acionar uma varredura de dados existentes? Não precisa ser assíncrono ou ao vivo.

(E FYI não há espaço suficiente no pool para copiar o sistema de arquivos inteiro para outro e, em seguida, basta mudar as montagens.)

    
por Jake Wharton 15.06.2010 / 05:14

4 respostas

5

Não, você não pode deduzir os dados existentes sem copiá-los. Rember, você só vai beneficiar de dedup se toda a Dedup-Table se encaixar na RAM / L2ARC.

Você pode estimar os benefícios da dedução com zds -S poolname sem afetar a dedução:

pfexec zdb -S rpool Histograma DDT simulado:

bucket              allocated                       referenced          
______   ______________________________   ______________________________
refcnt   blocks   LSIZE   PSIZE   DSIZE   blocks   LSIZE   PSIZE   DSIZE
------   ------   -----   -----   -----   ------   -----   -----   -----
     1     313K   13.4G   13.4G   13.4G     313K   13.4G   13.4G   13.4G
     2     111K   5.27G   5.27G   5.27G     233K   10.7G   10.7G   10.7G
     4    5.15K   96.2M   96.2M   96.2M    22.4K    403M    403M    403M
     8    1.03K   12.2M   12.2M   12.2M    10.3K    111M    111M    111M
    16      384   16.3M   16.3M   16.3M    8.10K    350M    350M    350M
    32      157   6.17M   6.17M   6.17M    6.47K    250M    250M    250M
    64       83   6.52M   6.52M   6.52M    6.37K    511M    511M    511M
   128       17    395K    395K    395K    2.61K   62.5M   62.5M   62.5M
   256        2      5K      5K      5K      802   2.24M   2.24M   2.24M
    2K        1     512     512     512    2.66K   1.33M   1.33M   1.33M
    8K        1    128K    128K    128K    8.21K   1.03G   1.03G   1.03G
 Total     431K   18.8G   18.8G   18.8G     613K   26.8G   26.8G   26.8G

dedup = 1.43, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.43
    
por 15.06.2010 / 08:51
3

Tenha em atenção que a implementação de dedupção atual (compilação 134) requer RAM e tem um problema pendente quando são eliminadas grandes quantidades de dados , mais ou menos colocando o seu conjunto ZFS por um período de tempo significativo. link

Sobre deduzir os dados existentes, copiar / mover arquivos um por um enquanto estiver no mesmo pool deve resolver o problema.

    
por 15.06.2010 / 08:30
1

Grande resposta do blasafer, eu acabei de acrescentar que Reescrever o Block Pointer é um recurso planejado que vai permitir a re-compactação de dados já armazenados, talvez ele possa ser usado para re-dedup também. Mas é no futuro e estou apenas supondo de qualquer maneira.

    
por 16.06.2010 / 01:20
-2

Aguardando a dedupe aparecer no ZFS do FreeNAS ... Os requisitos de RAM podem se tornar mais razoáveis quando isso ocorrer. Espero que também resolva ou alivie o bug de 3+ anos com o ZFS ARC que ainda persiste!

link

(Este é desagradável, pois também vai sair dos limites da VM de um hipervisor!)

    
por 26.07.2010 / 02:32