Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016
Introdução
Este artigo descreve os métodos que você pode usar para mesclar pontos de verificação em uma VM (máquina virtual) se o Hyper-V tiver gerado muitos discos diferenciais. O método que você usa depende dos detalhes da situação.
Mesclando pontos de verificação que você pode exibir no Gerenciador do Hyper-V
Os pontos de verificação que você pode exibir no Gerenciador do Hyper-V são os mais simples de manipular. Normalmente, você pode usar o comando Excluir Ponto de Verificação no menu de contexto para excluir esses pontos de verificação.
Em alguns casos, Excluir ponto de verificação e Excluir subárvore de ponto de verificação não aparecem no menu de contexto. Isso pode ocorrer se o software de backup de terceiros gerar pontos de verificação, mas não os excluir após uma operação de backup.
Nesses casos, você ainda pode usar a tecla Delete para excluir o ponto de verificação.
Em resumo, para excluir pontos de verificação no Gerenciador do Hyper-V (e mesclar os arquivos de disco diferenciais), siga estas etapas:
- Em Hyper-V Manager, selecione a máquina virtual.
- Na lista Pontos de verificação, clique com o botão direito do mouse no ponto de verificação que você deseja excluir e execute uma das seguintes ações:
- Selecione Excluir ponto de verificação.
- Se Excluir Ponto de Verificação não estiver disponível, selecione o ponto de verificação e, em seguida, selecione Del.
Mesclando pontos de verificação que você não pode exibir no Gerenciador do Hyper-V
Você pode encontrar uma situação em que o Gerenciador do Hyper-V não mostra pontos de verificação para uma VM específica. Ao mesmo tempo, a pasta do sistema de arquivos correspondente mostra muitos arquivos de disco diferenciais. Isso pode ocorrer se o software de backup de terceiros gerar pontos de verificação, mas não os excluir após uma operação de backup.
Você pode mesclar os arquivos de disco diferenciais de duas maneiras, dependendo se você pode desligar a VM.
Quando você pode desligar a VM
Para mesclar os arquivos de disco diferenciais, desligue a VM. Normalmente, os arquivos de disco diferenciais são mesclados como parte do processo de desligamento da VM.
Quando você não pode desligar a VM
Você pode mesclar discos diferenciais em uma VM online. No entanto, esse é um processo de várias etapas que envolve scripts do Windows PowerShell. Para fazer isso, siga estas etapas gerais:
- Faça backup de todos os arquivos de disco diferenciais (arquivos VHD).
- Crie e execute a
Get-VHDChain
função. Esta etapa é descrita em detalhes mais adiante nesta seção. - Crie e execute comandos de mesclagem. Esta etapa é descrita em detalhes mais adiante nesta seção.
- Altere as configurações da VM para apontar para o VHD pai mesclado.
- Inicie a VM. Uma inicialização bem-sucedida significa que a mesclagem foi concluída com êxito.
Criar e executar a função Get-VHDChain
No servidor host Hyper-V, abra uma janela administrativa do Prompt de Comando do PowerShell.
Copie o script a seguir e cole-o na janela do PowerShell:
function Get-VHDChain { [CmdletBinding()] param( [string]$ComputerName = $env:COMPUTERNAME, [string[]]$Name = '*' ) try { $VMs = Get-VM -ComputerName $ComputerName -Name $Name -ErrorAction Stop } catch { Write-Warning $_.Exception.Message } foreach ($vm in $VMs){ $VHDs = ($vm).harddrives.path foreach ($vhd in $VHDs){ Clear-Variable VHDType -ErrorAction SilentlyContinue try { $VHDInfo = $vhd | Get-VHD -ComputerName $ComputerName -ErrorAction Stop } catch { $VHDType = 'Error' $VHDPath = $vhd Write-Verbose $_.Exception.Message } $i = 1 $problem = $false while (($VHDInfo.parentpath -or $i -eq 1) -and (-not($problem))){ If ($VHDType -ne 'Error' -and $i -gt 1){ try { $VHDInfo = $VHDInfo.ParentPath | Get-VHD -ComputerName $ComputerName -ErrorAction Stop } catch { $VHDType = 'Error' $VHDPath = $VHDInfo.parentpath Write-Verbose $_.Exception.Message } } if ($VHDType -ne 'Error'){ $VHDType = $VHDInfo.VhdType $VHDPath = $VHDInfo.path } else { $problem = $true } [pscustomobject]@{ Name = $vm.name VHDNumber = $i VHDType = $VHDType VHD = $VHDPath } $i++ } } } } ==================================
Esse script define uma
Get-VHDChain
função que identifica a cadeia VHD (o conjunto de discos diferenciais para a VM).Execute o comando a seguir:
Get-vhdchain -name <virtual machine name>
Observação
Nesse comando, <o nome> da máquina virtual representa o nome da máquina virtual.
Quando o script é executado, você deve ver uma saída semelhante à saída a seguir.
Certifique-se de que
Get-VHDChain
seja executado sem erros.Importante
Se a
Get-VHDChain
saída contiver erros, você precisará remover os discos diferenciais afetados da pasta. No exemplo a seguir, o Disco 24 gerou um erro e deve ser removido da pasta de disco diferencial.
Criar e executar comandos de mesclagem
As instruções a seguir criam um script em C:\temp\merge.txt para mesclar os discos. Siga estas etapas:
Na unidade C: local, crie uma pasta chamada temp.
Abra uma janela do PowerShell Administrativo e execute o seguinte comando:
$vm = Read-Host("please enter the VMname")
No prompt de comando, insira o nome da máquina virtual.
Copie o script a seguir e cole-o no prompt de comando.
$vhds=Get-VM $vm | Select-Object -Property VMId | Get-VHD if (Test-Path '.\merge.txt'){Remove-Item -Path '.\merge.txt'} foreach($vhd in $vhds){ $chain=[ordered]@{} while ($vhd.ParentPath){ $chain.add($vhd.Path,$vhd.ParentPath) $vhd=Get-VHD -Path $vhd.ParentPath } $chain.GetEnumerator() | ForEach-Object { $line='Merge-VHD -Path "{0}" -Destination "{1}"' -f $_.key, $_.value $line | Out-File -FilePath .\merge.txt -Append } }
O script deve ser semelhante ao seguinte script:
Abra C:\temp\merge.txt. Esse arquivo contém uma lista de comandos de linha de comando agrupados em pares. Cada par de comandos define as operações de mesclagem para um único disco diferencial.
Copie o primeiro comando do primeiro par, cole-o no prompt de comando e execute-o. Em seguida, faça o mesmo para o segundo comando do primeiro par. Essas operações mesclam o disco diferencial que os comandos endereçam.
Depois que o disco for mesclado, repita as etapas anteriores para o próximo disco diferencial na lista. Continue para todos os discos diferenciais que o arquivo merge.txt endereça.