Configurações avançadas de Eliminação de Duplicação de Dados

Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI versões 21H2 e 20H2

Este documento descreve como alterar configurações avançadas de Eliminação de Duplicação de Dados. Para cargas de trabalho recomendadas, as configurações padrão devem ser suficientes. O principal motivo para alterar essas configurações é melhorar o desempenho da Eliminação de Duplicação de Dados com outros tipos de cargas de trabalho.

Alterar o plano de trabalho da Eliminação de Duplicação de Dados

Os planos de trabalho de Eliminação de Duplicação de Dados padrão são projetados para funcionarem bem com cargas de trabalho recomendadas e serem o menos intrusivos possível (exceto o trabalho Otimização de Prioridade, que está habilitado para o tipo de uso Backup). Quando as cargas de trabalho têm grandes requisitos de recursos, é possível fazer com que os trabalhos sejam executados somente durante horas ociosas, ou reduzir ou aumentar a quantidade de recursos do sistema que um trabalho de Eliminação de Duplicação de Dados pode consumir.

Alterar um plano de Eliminação de Duplicação de Dados

Os trabalhos de Eliminação de Duplicação de Dados são programados pelo Agendador de Tarefas do Windows e podem ser exibidos e editados lá no caminho Microsoft\Windows\Deduplication. A Eliminação de Duplicação de Dados inclui vários cmdlets que facilitam o agendamento.

O motivo mais comum para alterar quando executar trabalhos de Eliminação de Duplicação de Dados é garantir que os trabalhos sejam executados durante fora do horário comercial. O exemplo dado em passo a passo a seguir mostra como modificar o plano de Eliminação de Duplicação de Dados para um cenário em que tudo corre bem: um host hiperconvergido do Hyper-V que fica ocioso nos fins de semana e depois das 19h durante a semana. Para alterar a agenda, execute os cmdlets do PowerShell a seguir em um contexto de Administrador.

  1. Desabilite os trabalhos de Otimizaçãoagendados por hora.

     Set-DedupSchedule -Name BackgroundOptimization -Enabled $false
     Set-DedupSchedule -Name PriorityOptimization -Enabled $false
    
  2. Remova os trabalhos de Coleta de Lixo e Anulação de Integridade agendados atualmente.

     Get-DedupSchedule -Type GarbageCollection | ForEach-Object { Remove-DedupSchedule -InputObject $_ }
     Get-DedupSchedule -Type Scrubbing | ForEach-Object { Remove-DedupSchedule -InputObject $_ }
    
  3. Crie um trabalho noturno de Otimização a ser executado às 19h com prioridade alta e todas as CPUs e memória disponíveis no sistema.

     New-DedupSchedule -Name "NightlyOptimization" -Type Optimization -DurationHours 11 -Memory 100 -Cores 100 -Priority High -Days @(1,2,3,4,5) -Start (Get-Date "2016-08-08 19:00:00")
    

    Observação

    A parte date do parâmetro System.Datetime fornecido a -Start é irrelevante (desde que esteja no passado), mas a parte time especifica quando o trabalho deve começar.

  4. Crie um trabalho de Coleta de Lixo semanal a ser executado no sábado, começando às 19h, com prioridade alta e todas as CPUs e memória disponíveis no sistema.

     New-DedupSchedule -Name "WeeklyGarbageCollection" -Type GarbageCollection -DurationHours 23 -Memory 100 -Cores 100 -Priority High -Days @(6) -Start (Get-Date "2016-08-13 07:00:00")
    
  5. Crie um trabalho de Anulação de Integridade semanal a ser executado no domingo, começando às 7h, com prioridade alta e todas as CPUs e memória disponíveis no sistema.

     New-DedupSchedule -Name "WeeklyIntegrityScrubbing" -Type Scrubbing -DurationHours 23 -Memory 100 -Cores 100 -Priority High -Days @(0) -Start (Get-Date "2016-08-14 07:00:00")
    

Configurações disponíveis para todos os trabalhos

Você pode alternar as seguintes configurações para trabalhos de Eliminação de Duplicação de Dados novos ou agendados:

Nome do parâmetro Definição Valores aceitos Por que você deseja definir esse valor?
Type O tipo do trabalho que deve ser agendado
  • Otimização
  • Coleta de Lixo
  • Anulação
Esse valor é necessário porque é o tipo de trabalho que você deseja agendar. Esse valor não pode ser alterado depois que a tarefa é agendada.
Prioridade A prioridade do sistema do trabalho agendado
  • Alto
  • Normal
  • Baixo
Esse valor ajuda o sistema a determinar como alocar tempo da CPU. Alta usará mais tempo de CPU; Baixa usará menos.
Dias Os dias em que o trabalho foi agendado Uma matriz de números inteiros de 0 a 6 que representa os dias da semana:
  • 0 = Domingo
  • 1 = Segunda-feira
  • 2 = Terça-feira
  • 3 = Quarta-feira
  • 4 = Quinta-feira
  • 5 = Sexta-feira
  • 6 = Sábado
Tarefas agendadas devem ser executadas em pelo menos um dia.
Núcleos O percentual de núcleos no sistema que um trabalho deve usar Números inteiros de 0 a 100 (indica uma porcentagem) Para controlar o nível de impacto que um trabalho terá nos recursos de computação no sistema
DurationHours O número máximo de horas que um trabalho deve ter permissão de execução Números inteiros positivos Para impedir que um trabalho seja executado em horas não ociosas de uma carga de trabalho
habilitado Se o trabalho será executado ou não Verdadeiro/Falso Para desabilitar um trabalho sem removê-lo
Completo Para agendar um trabalho de Coleta de Lixo completo Alternar (verdadeiro/falso) Por padrão, o quarto trabalho sempre é um trabalho de Coleta de Lixo. Com essa opção, você pode agendar a coleta de lixo completa para ser executada com maior frequência.
InputOutputThrottle Especifica a quantidade de limitação de entrada/saída aplicada ao trabalho Números inteiros de 0 a 100 (indica uma porcentagem) A limitação faz com que os trabalhos não interfiram com outros processos intensos de E/S.
Memória A porcentagem de memória do sistema que um trabalho deve usar Números inteiros de 0 a 100 (indica uma porcentagem) Para controlar o nível de impacto que o trabalho terá sobre os recursos de memória do sistema
Nome O nome do trabalho agendado String Um trabalho deve ter um nome de identificação exclusivo.
ReadOnly Indica que o trabalho de anulação processa e relata as corrupções encontradas, mas não executa ações de reparo Alternar (verdadeiro/falso) Você deseja restaurar manualmente os arquivos que ficam em seções inválidas do disco.
Iniciar Especifica a hora em que um trabalho deve ser iniciado System.DateTime A parte date do parâmetro System.Datetime fornecido a Start é irrelevante (desde que esteja no passado), mas a parte time especifica quando o trabalho deve começar.
StopWhenSystemBusy Especifica se a Eliminação de Duplicação de Dados deve parar quando o sistema está ocupado Alternar (Verdadeiro/Falso) Essa opção oferece a capacidade de controlar o comportamento da Eliminação de Duplicação de Dados. Isso é particularmente importante se você deseja executar a Eliminação de Duplicação de Dados enquanto sua carga de trabalho não está ociosa.

Alterar configurações de Eliminação de Duplicação de Dados em todo o volume

Alternar configurações de volume

Você pode definir as configurações padrão para Eliminação de Duplicação de Dados de todo o volume por meio do tipo de uso que você seleciona quando habilita a eliminação de duplicação de um volume. A Eliminação de Duplicação de Dados inclui cmdlets que facilitam a edição das configurações de todo o volume:

As principais razões para modificar as configurações de volume do tipo de uso selecionado são para melhorar o desempenho de leitura de arquivos específicos (como multimídia ou outros tipos de arquivos já compactados) ou para ajustar a Eliminação de Duplicação de Dados e ter uma otimização melhor da sua carga de trabalho específica. O exemplo a seguir mostra como alterar as configurações de Eliminação de Duplicação de Dados do volume para uma carga de trabalho que se parece mais com uma carga de trabalho do servidor de arquivos para uso geral, mas utiliza arquivos grandes que mudam com frequência.

  1. confira as configurações de volume atuais para o Volume Compartilhado Clusterizado 1.

     Get-DedupVolume -Volume C:\ClusterStorage\Volume1 | Select *
    
  2. Habilite OptimizePartialFiles no Volume Compartilhado Clusterizado 1 para que a política MinimumFileAge se aplique a seções do arquivo em vez de se aplicar a todo o arquivo. Isso faz com que a maior parte do arquivo seja otimizada, mesmo que as seções do arquivo sejam alteradas regularmente.

     Set-DedupVolume -Volume C:\ClusterStorage\Volume1 -OptimizePartialFiles
    

Configurações de todo o volume disponíveis

Nome da configuração Definição Valores aceitos Por que você deseja alterar esse valor?
ChunkRedundancyThreshold O número de vezes que uma parte é referenciada antes de ser duplicada na seção do ponto de acesso do Repositório de partes. O valor da seção de ponto de acesso é que as partes ditas "populares" referenciadas com frequência têm vários caminhos de acesso para melhorar o tempo de acesso. Números inteiros positivos O principal motivo para alterar esse número é o aumento da taxa de economia de volumes com eliminação de duplicação alta. Em geral, o valor padrão (100) é a configuração recomendada e você não precisa modificá-lo.
ExcludeFileType Tipos de arquivos que são excluídos da otimização Matriz de extensões de arquivo Alguns tipos de arquivo, especialmente multimídia ou arquivos já compactados, não se beneficiam muito da otimização. Essa configuração permite que você configure quais tipos são excluídos.
ExcludeFolder Especifica caminhos de pasta que não devem ser considerados para otimização Matriz de caminhos de pasta Se você quer melhorar o desempenho ou evitar que o conteúdo de determinados caminhos sejam otimizados, pode excluir determinados caminhos do volume na consideração para otimização.
InputOutputScale Especifica o nível da paralelização de E/S (filas E/S) que a Eliminação de Duplicação de Dados usa em um volume durante um trabalho de pós-processamento Números inteiros positivos no intervalo de 1 a 36 O principal motivo para modificar esse valor é a diminuição do impacto no desempenho de uma carga de trabalho alta de E/S restringindo o número de filas de E/S que a Eliminação de Duplicação de Dados pode usar em um volume. Observe que a modificação dessa configuração padrão pode fazer com que os trabalhos de pós-processamento da Eliminação de Duplicação de Dados fiquem lentos.
MinimumFileAgeDays Número de dias após a criação do arquivo antes que o arquivo seja considerado na política para otimização. Números inteiros positivos (incluindo zero) Os tipos de uso Padrão e HyperV definem esse valor como 3 para maximizar o desempenho em arquivos populares ou recém-criados. Convém modificar isso se você quer que a Eliminação de Duplicação de Dados seja mais agressiva ou se não se importa com a latência extra associada à eliminação de duplicação.
MinimumFileSize Tamanho mínimo que um arquivo precisa ter para ser considerado na política de otimização Números inteiros positivos (bytes) maiores que 32 KB O principal motivo para alterar esse valor é a exclusão de arquivos pequenos que podem ter limitado o valor de otimização para economizar tempo de computação.
NoCompress Se os fragmentos devem ser compactados antes de serem colocados no Repositório de Partes ou não Verdadeiro/Falso Alguns tipos de arquivos, especialmente arquivos multimídia e tipos de arquivos já compactados, não podem ser compactados direito. Essa configuração permite que você desative a compactação para todos os arquivos no volume. Isso é ideal se você está otimizando um conjunto de dados que tem muitos arquivos já compactados.
NoCompressionFileType Tipos de arquivo cujas partes não devem ser comprimidas antes de irem para o Repositório de partes Matriz de extensões de arquivo Alguns tipos de arquivos, especialmente arquivos multimídia e tipos de arquivos já compactados, não podem ser compactados direito. Essa configuração permite que a compactação seja desligada para esses arquivos, poupando recursos da CPU.
OptimizeInUseFiles Quando habilitado, os arquivos que têm identificadores ativos serão considerados na política de otimização. Verdadeiro/Falso Habilite essa configuração se sua carga de trabalho mantém os arquivos abertos por longos períodos de tempo. Se essa configuração não está habilitada, um arquivo nunca é otimizado se a carga de trabalho tem um identificador aberto, mesmo que ele apenas acrescente dados no final de vez em quando.
OptimizePartialFiles Quando habilitado, o valor de MinimumFileAge se aplica a segmentos de um arquivo em vez se aplicar a todo ele. Verdadeiro/Falso Habilite essa configuração se sua carga de trabalho funciona com arquivos grandes e editados frequentemente, quando a maior parte do conteúdo do arquivo permanece inalterada. Se essa configuração não está habilitada, esses arquivos nunca são otimizados porque são sempre alterados, mesmo quando a maior parte do conteúdo do arquivo está pronta para ser otimizada.
Verificar Quando habilitada, se o hash de uma parte corresponde a uma parte que já temos em nosso Repositório de Partes, os fragmentos são comparados byte a byte para garantir que são idênticos. Verdadeiro/Falso Esse é um recurso de integridade que não permite que o algoritmo de hash que compara partes cometa um erro comparando dois blocos de dados que são diferentes, mas têm o mesmo hash. Na prática, é extremamente improvável que isso aconteça. A habilitação do recurso de verificação adiciona sobrecarga significativa ao trabalho de otimização.

Alterar configurações de Eliminação de Duplicação de Dados em todo o sistema

A Eliminação de Duplicação de Dados tem configurações adicionais em todo o sistema que podem ser definidas no registro. Essas configurações se aplicam a todos os trabalhos e aos volumes que são executados no sistema. Redobre os cuidados ao editar o registro.

Por exemplo, convém desabilitar a coleta de lixo completa. Para saber mais sobre a utilidade disso em seu cenário, confira as Perguntas frequentes. Para editar o registro com o PowerShell:

  • Se a Eliminação de Duplicação de Dados está em execução em um cluster:

      Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\ddpsvc\Settings -Name DeepGCInterval -Type DWord -Value 0xFFFFFFFF
      Set-ItemProperty -Path HKLM:\CLUSTER\Dedup -Name DeepGCInterval -Type DWord -Value 0xFFFFFFFF
    
  • Se a Eliminação de Duplicação de Dados não está em execução em um cluster:

      Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\ddpsvc\Settings -Name DeepGCInterval -Type DWord -Value 0xFFFFFFFF
    

Configurações de todo o sistema disponíveis

Nome da configuração Definição Valores aceitos Por que você deseja alterar isso?
WlmMemoryOverPercentThreshold Essa configuração permite que os trabalhos usem mais memória do que os juízes da Eliminação de Duplicação de Dados para realmente estarem disponíveis. Por exemplo, uma configuração de 300 significaria que o trabalho precisa usar três vezes mais a memória atribuída para ser cancelada. Números inteiros positivos (um valor 300 significa 300% ou 3 vezes) Se você tem outra tarefa, ela será interrompida se a Eliminação de Duplicação de Dados usar mais memória
DeepGCInterval Essa configuração define o intervalo no qual os trabalhos de Coleta de Lixo regulares se tornam Coleta de Lixo completa. Uma configuração de X significa que a cada X trabalhos, um era trabalho de Coleta de Lixo completa. Observe que a Coleta de Lixo completa sempre está desabilitada (independentemente do valor do registro) para volumes com o tipo de uso Backup. Start-DedupJob -Type GarbageCollection -FullPode ser usada se for desejada a Coleta de Lixo completa em um volume de Backup. Números inteiros (-1 indica desabilitada) Confira esta pergunta frequente

Perguntas frequentes

Alterei uma configuração de Eliminação de Duplicação de Dados e agora os trabalhos estão lentos ou não são concluídos ou meu desempenho de carga de trabalho diminuiu. Porque? Essas configurações oferecem muito poder para controlar como a Eliminação de Duplicação de Dados é executada. Use-as com responsabilidade e monitore o desempenho.

Quero executar um trabalho de Eliminação de Duplicação de Dados no momento, mas não quero criar uma nova agenda. Posso fazer isso? Sim, todos os trabalhos podem ser executados manualmente.

Qual é a diferença entre a Coleta de Lixo completa e a regular? Existem dois tipos de Coleta de Lixo:

  • A Coleta de Lixo regular usa um algoritmo estatístico para encontrar as partes grandes não referenciadas que atendem a certos critérios (memória e IOPs baixos). A Coleta de Lixo regular compacta um contêiner de repositório de partes somente se uma porcentagem mínima das partes não for referenciada. Esse tipo de Coleta de Lixo é executado muito mais rapidamente e usa menos recursos do que a Coleta de Lixo completa. O agendamento padrão de trabalho de Coleta de Lixo regular é a execução uma vez por semana.
  • A Coleta de Lixo completa faz um trabalho muito mais completo de localizar partes não referenciadas e liberar mais espaço em disco. A Coleta de Lixo completa compacta cada contêiner, mesmo que só haja uma única parte no contêiner sem referência. A Coleta de Lixo completa também libera espaço que pode estar em uso quando há uma falha ou queda de energia durante um trabalho de Otimização. Os trabalhos de Coleta de Lixo completa recuperarão 100% do espaço disponível que pode ser recuperado em um volume com eliminação de duplicação com o custo de exigir mais tempo e recursos do sistema em comparação com um trabalho de Coleta de Lixo regular. O trabalho de Coleta de Lixo completa normalmente encontra e libera até 5% mais dados não referenciados do que um trabalho de Coleta de Lixo regular. O agendamento padrão do trabalho de Coleta de Lixo completa é a execução na quarta vez em que uma Coleta de Lixo está agendada.

Por que eu desejaria desabilitar a coleta de lixo completa?

  • A Coleta de Lixo pode prejudicar o tempo de vida da cópia de sombra de vida útil do volume e o tamanho do backup incremental. Variação alta ou cargas de trabalho com E/S intensivas podem ver uma degradação no desempenho por causa dos trabalhos de Coleta de Lixo completa.
  • Você pode executar um trabalho de Coleta de Lixo completa no PowerShell manualmente para limpar vazamentos se você sabe que o seu sistema falhou.