Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: Windows Server 2022, Windows Server 2019, Windows Server 2016
Wprowadzenie
W tym artykule opisano metody, których można użyć do scalania punktów kontrolnych z maszyną wirtualną, jeśli funkcja Hyper-V wygenerowała wiele dysków różnicowych. Używana metoda zależy od szczegółów sytuacji.
Scalanie punktów kontrolnych, które można wyświetlić w Menedżerze funkcji Hyper-V
Punkty kontrolne, które można wyświetlić w Menedżerze funkcji Hyper-V, są najprostsze do obsłużenia. Zazwyczaj można użyć polecenia Usuń punkt kontrolny w menu kontekstowym, aby usunąć te punkty kontrolne.
W niektórych przypadkach usuń punkt kontrolny i usuń poddrzewo punktu kontrolnego nie są wyświetlane w menu kontekstowym. Taka sytuacja może wystąpić, jeśli oprogramowanie do tworzenia kopii zapasowych innej firmy generuje punkty kontrolne, ale nie usuwa ich po operacji tworzenia kopii zapasowej.
W takich przypadkach nadal można użyć klucza Usuń, aby usunąć punkt kontrolny.
Podsumowując, aby usunąć punkty kontrolne w Menedżerze funkcji Hyper-V (i scalić pliki dysków różnicowych), wykonaj następujące kroki:
- W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
- Na liście Punkty kontrolne kliknij prawym przyciskiem myszy punkt kontrolny, który chcesz usunąć, a następnie wykonaj jedną z następujących akcji:
- Wybierz pozycję Usuń punkt kontrolny.
- Jeśli usuwanie punktu kontrolnego nie jest dostępne, wybierz punkt kontrolny, a następnie wybierz pozycję Del.
Scalanie punktów kontrolnych, których nie można wyświetlić w Menedżerze funkcji Hyper-V
Może wystąpić sytuacja, w której Menedżer funkcji Hyper-V nie wyświetla punktów kontrolnych dla określonej maszyny wirtualnej. W tym samym czasie odpowiedni folder systemu plików zawiera wiele różnicowych plików dysku. Taka sytuacja może wystąpić, jeśli oprogramowanie do tworzenia kopii zapasowych innej firmy generuje punkty kontrolne, ale nie usuwa ich po operacji tworzenia kopii zapasowej.
Pliki dysku różnicowego można scalić na jeden z dwóch sposobów, w zależności od tego, czy można zamknąć maszynę wirtualną.
Kiedy można zamknąć maszynę wirtualną
Aby scalić pliki dysków różnicowych, zamknij maszynę wirtualną. Zazwyczaj różnicowe pliki dysków są scalane w ramach procesu zamykania maszyny wirtualnej.
Kiedy nie można zamknąć maszyny wirtualnej
Dyski różnicowe można scalić z maszyną wirtualną online. Jest to jednak wieloetapowy proces obejmujący skrypty programu Windows PowerShell. Aby to zrobić, wykonaj następujące ogólne kroki:
- Tworzenie kopii zapasowej wszystkich plików dysków różnicowych (plików VHD).
- Utwórz i uruchom
Get-VHDChain
funkcję. Ten krok został szczegółowo opisany w dalszej części tej sekcji. - Tworzenie i uruchamianie poleceń scalania. Ten krok został szczegółowo opisany w dalszej części tej sekcji.
- Zmień ustawienia maszyny wirtualnej, aby wskazywały scalony nadrzędny wirtualny dysk twardy.
- Uruchom maszynę wirtualną. Pomyślne uruchomienie oznacza, że scalanie zostało ukończone pomyślnie.
Tworzenie i uruchamianie funkcji Get-VHDChain
Na serwerze hosta funkcji Hyper-V otwórz administracyjne okno wiersza polecenia programu PowerShell.
Skopiuj następujący skrypt, a następnie wklej go w oknie programu 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++ } } } } ==================================
Ten skrypt definiuje
Get-VHDChain
funkcję, która identyfikuje łańcuch dysków VHD (zestaw dysków różnicowych dla maszyny wirtualnej).Uruchom następujące polecenie:
Get-vhdchain -name <virtual machine name>
Uwaga
W tym poleceniu <nazwa> maszyny wirtualnej reprezentuje nazwę maszyny wirtualnej.
Po uruchomieniu skryptu powinny zostać wyświetlone dane wyjściowe podobne do następujących danych wyjściowych.
Upewnij się, że
Get-VHDChain
działa bez błędów.Ważne
Jeśli dane
Get-VHDChain
wyjściowe zawierają błędy, należy usunąć dyski różnicowe, których dotyczy problem, z folderu. W poniższym przykładzie dysk 24 wygenerował błąd i należy go usunąć z folderu dysku różnicowego.
Tworzenie i uruchamianie poleceń scalania
Poniższe instrukcje umożliwiają utworzenie skryptu w folderze C:\temp\merge.txt w celu scalenia dysków. Wykonaj te kroki:
Na lokalnym dysku C: utwórz folder o nazwie temp.
Otwórz okno administracyjne programu PowerShell, a następnie uruchom następujące polecenie:
$vm = Read-Host("please enter the VMname")
W wierszu polecenia wprowadź nazwę maszyny wirtualnej.
Skopiuj poniższy skrypt, a następnie wklej go w wierszu polecenia.
$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 } }
Skrypt powinien przypominać następujący skrypt:
Otwórz plik C:\temp\merge.txt. Ten plik zawiera listę poleceń wiersza polecenia, które są pogrupowane w pary. Każda para poleceń definiuje operacje scalania dla pojedynczego dysku różnicowego.
Skopiuj pierwsze polecenie pierwszej pary, wklej je w wierszu polecenia, a następnie uruchom je. Następnie wykonaj to samo dla drugiego polecenia pierwszej pary. Te operacje scalają dysk różnicowy, z którego odnoszą się polecenia.
Po scaleniu dysku powtórz powyższe kroki dla następnego dysku różnicowego na liście. Kontynuuj dla wszystkich dysków różnicowych, które merge.txt adresy plików.