Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Windows Server 2022, Windows Server 2019, Windows Server 2016
Introducción
En este artículo se describen los métodos que puede usar para combinar puntos de control en una máquina virtual (VM) si Hyper-V ha generado muchos discos de diferenciación. El método que usa depende de los detalles de la situación.
Combinación de puntos de control que puede ver en el Administrador de Hyper-V
Los puntos de control que puede ver en el Administrador de Hyper-V son los más sencillos de controlar. Normalmente, puede usar el comando Eliminar punto de control en el menú contextual para eliminar estos puntos de control.
En algunos casos, el subárbol Delete Checkpoint y Delete Checkpoint no aparecen en el menú contextual. Esto puede ocurrir si el software de copia de seguridad de terceros genera puntos de comprobación, pero no los elimina después de una operación de copia de seguridad.
En estos casos, todavía puede usar la clave Eliminar para eliminar el punto de control.
En resumen, para eliminar puntos de control en el Administrador de Hyper-V (y combinar los archivos de disco de diferenciación), siga estos pasos:
- En Administrador de Hyper-V, seleccione la máquina virtual.
- En la lista Puntos de control , haga clic con el botón derecho en el punto de control que desea eliminar y, a continuación, realice una de las siguientes acciones:
- Seleccione Eliminar punto de control.
- Si Eliminar punto de control no está disponible, seleccione el punto de control y, a continuación, seleccione Del.
Combinación de puntos de control que no se pueden ver en el Administrador de Hyper-V
Es posible que encuentre una situación en la que el Administrador de Hyper-V no muestre puntos de control para una máquina virtual específica. Al mismo tiempo, la carpeta del sistema de archivos correspondiente muestra muchos archivos de disco de diferenciación. Esto puede ocurrir si el software de copia de seguridad de terceros genera puntos de comprobación, pero no los elimina después de una operación de copia de seguridad.
Puede combinar los archivos de disco de diferenciación de una de estas dos maneras, en función de si puede apagar la máquina virtual.
Cuando se puede apagar la máquina virtual
Para combinar los archivos de disco de diferenciación, apague la máquina virtual. Normalmente, los archivos de disco de diferenciación se combinan como parte del proceso de apagado de la máquina virtual.
Cuando no se puede apagar la máquina virtual
Puede combinar discos de diferenciación en una máquina virtual en línea. Sin embargo, se trata de un proceso de varios pasos que implica scripts de Windows PowerShell. Para ello, siga estos pasos generales:
- Realice una copia de seguridad de todos los archivos de disco de diferenciación (archivos VHD).
- Cree y ejecute la
Get-VHDChain
función . Este paso se describe en detalle más adelante en esta sección. - Cree y ejecute comandos de combinación. Este paso se describe en detalle más adelante en esta sección.
- Cambie la configuración de la máquina virtual para que apunte al disco duro virtual primario combinado.
- Inicie la máquina virtual. Un inicio correcto significa que la combinación se completó correctamente.
Creación y ejecución de la función Get-VHDChain
En el servidor host de Hyper-V, abra una ventana administrativa del símbolo del sistema de PowerShell.
Copie el siguiente script y péguelo en la ventana de 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++ } } } } ==================================
Este script define una
Get-VHDChain
función que identifica la cadena de VHD (el conjunto de discos de diferenciación para la máquina virtual).Ejecute el comando siguiente:
Get-vhdchain -name <virtual machine name>
Nota
En este comando, <el nombre> de la máquina virtual representa el nombre de la máquina virtual.
Cuando se ejecuta el script, debería ver la salida similar a la siguiente salida.
Asegúrese de que
Get-VHDChain
se ejecuta sin errores.Importante
Si la
Get-VHDChain
salida contiene errores, debe quitar los discos de diferenciación afectados de la carpeta. En el ejemplo siguiente, Disk 24 generó un error y se debe quitar de la carpeta de disco de diferenciación.
Creación y ejecución de comandos de combinación
Las instrucciones siguientes crean un script en C:\temp\merge.txt para combinar los discos. Siga estos pasos:
En la unidad C: local, cree una carpeta denominada temp.
Abra una ventana de PowerShell administrativo y, a continuación, ejecute el siguiente comando:
$vm = Read-Host("please enter the VMname")
En el símbolo del sistema, escriba el nombre de la máquina virtual.
Copie el siguiente script y péguelo en el símbolo del sistema.
$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 } }
El script debe ser similar al siguiente script:
Abra C:\temp\merge.txt. Este archivo contiene una lista de comandos de línea de comandos que se agrupan en pares. Cada par de comandos define las operaciones de combinación para un único disco de diferenciación.
Copie el primer comando del primer par, péguelo en el símbolo del sistema y, a continuación, ejecútelo. A continuación, haga lo mismo para el segundo comando del primer par. Estas operaciones combinan el disco de diferenciación que direccionan los comandos.
Después de combinar el disco, repita los pasos anteriores para el siguiente disco de diferenciación en la lista. Continúe con todos los discos de diferenciación que direcciona el archivo merge.txt .