Udostępnij za pośrednictwem


Jak przygotować dysk VHD systemu Windows na potrzeby bazy testowej

Ważna

31 maja 2024 r. baza testowa dla platformy Microsoft 365 przejdzie do końca okresu eksploatacji (EOL). Dokładamy wszelkich starań, aby ściśle współpracować z każdym klientem, aby zapewnić pomoc techniczną i wskazówki, aby przejście było jak najbardziej płynne. Jeśli masz jakiekolwiek pytania, wątpliwości lub potrzebujesz pomocy, prześlij wniosek o pomoc techniczną.

Przed przekazaniem maszyny wirtualnej z systemem Windows ze środowiska lokalnego do bazy testowej należy najpierw przygotować wirtualny dysk twardy . Baza testowa obsługuje tylko maszyny wirtualne generacji 2, które używają formatu pliku VHD i mają dysk o stałym rozmiarze. Maksymalny rozmiar wirtualnego dysku twardego systemu operacyjnego na maszynie wirtualnej generacji 2 wynosi 128 gib w bazie testowej.

Baza testów obsługuje następujące wersje systemu Windows:

  • Windows 10 21H2 lub nowszej
  • Windows 11 21H2 lub nowszej
  • Windows Server 2016 lub nowsze

Można przekonwertować plik VHDX na dysk VHD lub przekonwertować dynamicznie rozszerzający się dysk na dysk o stałym rozmiarze, ale nie można zmienić generacji maszyny wirtualnej. Musisz włączyć funkcje funkcji Hyper-V na hoście dla operacji związanych z wirtualnym dyskiem twardym.

Nie można zmniejszyć rozmiaru fizycznego dysku VHD. Jeśli całkowity rozmiar woluminów w wirtualnym dysku twardym przekracza maksymalny rozmiar dysku VHD systemu operacyjnego (128 GiB) w bazie testowej, należy ponownie utworzyć maszynę wirtualną w mniejszym dysku VHD lub zmniejszyć woluminy na maszynie wirtualnej przed przekonwertowaniem jej na dysk VHD.

Aby upewnić się, że wirtualny dysk twardy maszyny wirtualnej jest zgodny z bazą testową, należy wykonać poniższe kroki konfiguracji.

Krok 1. Uruchamianie skryptu AzureConfig.ps1 w celu ułatwienia konfiguracji

Aby ułatwić przygotowanie skryptu konfiguracji, możesz pobrać AzureConfig.ps1 i uruchomić skrypt jako administrator w programie PowerShell na maszynie wirtualnej. Przed uruchomieniem skryptu może być konieczne skonfigurowanie zasad wykonywania programu PowerShell. Uruchom polecenie Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser , aby pominąć sprawdzanie podpisywania dla bieżącego użytkownika.

Po zakończeniu działania skryptu uruchom ponownie komputer. Zestaw ChkDsk zostanie uruchomiony podczas rozruchu systemu. Upewnij się, że raport zawiera czysty i w dobrej kondycji dysk. Ustawienie Krok-SetLocalPolicy spowoduje ustawienie zasad lokalnych, aby wyłączyć powiadomienie prawne i zezwolić na przechowywanie haseł i poświadczeń na potrzeby uwierzytelniania sieciowego.

Krok 2. Instalowanie aktualizacji systemu Windows

Aby zapobiec przypadkowemu ponownemu rozruchowi podczas aprowizacji maszyny wirtualnej, zaleca się zainstalowanie wszystkich aktualizacji systemu Windows i ponowne uruchomienie maszyny wirtualnej przed migracją jej do bazy testowej.

Jeśli musisz również uogólniać system operacyjny (Sysprep), musisz zaktualizować system Windows i ponownie uruchomić maszynę wirtualną przed uruchomieniem polecenia Sysprep.

Krok 3. Decydowanie o tym, kiedy używać programu Sysprep

Narzędzie przygotowania systemu (sysprep.exe) to proces, który resetuje instalację systemu Windows. Program Sysprep usuwa wszystkie dane osobowe i resetuje kilka składników.

Zazwyczaj uruchamia się polecenie sysprep.exe , aby utworzyć szablon, którego można użyć do wdrożenia kilku innych maszyn wirtualnych z określoną konfiguracją. Szablon jest nazywany uogólnionym obrazem.

Jeśli chcesz utworzyć tylko jedną maszynę wirtualną z jednego dysku, nie musisz używać programu Sysprep. Zamiast tego możesz utworzyć maszynę wirtualną na podstawie wyspecjalizowanego obrazu .

Należy pamiętać, że program Sysprep wymaga pełnego odszyfrowania dysków przed uruchomieniem. Jeśli na maszynie wirtualnej włączono szyfrowanie, wyłącz je przed uruchomieniem programu Sysprep. Skrypt AzureConfig.ps1 powinien wyłączyć funkcję BitLocker dla wszystkich woluminów.

Uogólnianie dysku VHD

Wykonaj następujące kroki, aby uogólnić wirtualny dysk twardy maszyny wirtualnej. Po wykonaniu tych kroków wyłącz maszynę wirtualną i nie włączaj jej ponownie, dopóki nie zakończysz przekazywania dysku VHD.

  1. Zaloguj się do maszyny wirtualnej z systemem Windows.

  2. Uruchom program PowerShell jako administrator.

  3. Usuń katalog panther (C:\Windows\Panther).

  4. Zmień katalog na $env:windir\System32\sysprep. Następnie uruchom polecenie sysprep.exe.

  5. W oknie dialogowym Narzędzie przygotowywania systemu wybierz pozycję Wprowadź środowisko OOBE (System Out-of-Box Experience) i wybierz pozycję Uogólnij.

    Narzędzie do przygotowywania systemu

  6. W obszarze Opcje zamykania wybierz pozycję Zamknij.

  7. Wybierz przycisk OK.

  8. Po zakończeniu działania programu Sysprep zamknij maszynę wirtualną. Jeśli uogólnienie zakończy się pomyślnie, maszyna wirtualna zostanie automatycznie zamknięta. Nie używaj ponownego uruchamiania , aby zamknąć maszynę wirtualną.

Możesz również użyć następującego skryptu programu PowerShell, aby uogólnić wirtualny dysk twardy maszyny wirtualnej. Uruchom skrypt jako administrator w programie PowerShell.

Remove-Item "$($env:windir)\Panther" -Recurse -Force

Push-Location "$($env:windir)\System32\sysprep"

.\sysprep.exe /generalize /shutdown /oobe

Pop-Location

Dysk VHD jest teraz uogólniony.

Instalowanie agenta maszyny wirtualnej platformy Azure dla wyspecjalizowanego obrazu

Aby utworzyć maszynę wirtualną na podstawie wyspecjalizowanego obrazu, należy zainstalować Azure Virtual Machine Agent ją na maszynie wirtualnej.

Zainstaluj agenta maszyny wirtualnej platformy Azure na maszynie wirtualnej. Następnie można włączyć rozszerzenia maszyny wirtualnej po instalacji agenta. Rozszerzenia maszyn wirtualnych zapewniają większość krytycznych funkcji, których potrzebuje baza testowa.

Agenta można również zainstalować, uruchamiając ten skrypt programu PowerShell jako administrator.

$installerName = "WindowsAzureVmAgent.msi"
$installerPath = "$PWD\$installerName"
if (Test-Path $installerPath) {
    Remove-Item $installerPath -Force 
}

$installerDownloadLink = "https://go.microsoft.com/fwlink/?LinkID=394789"
Invoke-WebRequest -Uri $installerDownloadLink -OutFile $installerPath

$logPath = "$PWD\$installerName.log"
Start-Process "msiexec.exe" -ArgumentList "/i `"$installerPath`" /qn /L*v `"$logPath`"" -PassThru -Wait

Krok 4. Konwertowanie dysku wirtualnego i zmienianie jego rozmiaru na dysk VHD o stałym rozmiarze

Użyj tej metody, aby przekonwertować dysk wirtualny i zmienić jego rozmiar dla bazy testowej:

  1. Utwórz kopię zapasową maszyny wirtualnej przed rozpoczęciem procesu konwersji lub zmiany rozmiaru.

  2. Upewnij się, że dysk VHD systemu Windows działa poprawnie na serwerze lokalnym. Rozwiąż wszelkie błędy na maszynie wirtualnej przed próbą przekonwertowania lub przekazania ich do bazy testowej.

  3. Przekonwertuj typ dysku wirtualnego na Fixed.

  4. Zmień rozmiar dysku wirtualnego w celu spełnienia wymagań bazy testowej:

    1. Dyski na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 mb. Jeśli dysk VHD nie jest wielokrotnym dyskiem 1 MiB, musisz zmienić rozmiar dysku. Dyski, które nie są wielokrotnościami 1 obiektu MiB, powodują błędy podczas tworzenia obrazów na podstawie przekazanego dysku VHD. Użyj polecenia cmdlet programu PowerShell Get-VHD , aby wyświetlić wartość "Size", która musi być wielokrotność 1 miB na platformie Azure, i "FileSize", która będzie równa "Size" plus 512 bajtów dla stopki VHD.

      $vhd = Get-VHD -Path C:\Test\TestBaseVM.vhd
      $vhd.Size % 1MB
      0
      $vhd.FileSize - $vhd.Size
      512
      
    2. Maksymalny rozmiar dysku VHD systemu operacyjnego w bazie testowej to 128 gib.

Konwertowanie i zmienianie rozmiaru dysku przy użyciu programu PowerShell

Aby przekonwertować dysk wirtualny na hoście maszyny wirtualnej na potrzeby bazy testowej, można użyć Convert-VHD poleceń cmdlet programu i Resize-VHD programu PowerShell. Uruchom ten skrypt programu PowerShell jako administrator. Zastąp <PathToVHD> ciąg ścieżką do dysku VHD, który chcesz przekazać.

$vhdFilePath = "<PathToVHD>"
$vhdFileItem = Get-Item $vhdFilePath
$fixedSizeVHDFilePath = $vhdFileItem.Directory.FullName + "\" + $vhdFileItem.BaseName + '-Fixed.vhd'

Convert-VHD -Path $vhdFilePath -DestinationPath $fixedSizeVHDFilePath -VHDType Fixed

$fixedSizeVHD = Get-VHD -Path $fixedSizeVHDFilePath
if ((($fixedSizeVHD.Size % 1MB) -ne 0) -or (($fixedSizeVHD.FileSize - $fixedSizeVHD.Size) -ne 512)) {
    $originalSize = $fixedSizeVHD.Size
    [UInt64]$originalMB = $originalSize / 1MB
    $resizedBytes = ($originalMB + 1) * 1024 * 1024
    Resize-VHD -Path $fixedSizeVHDFilePath -SizeBytes $resizedBytes
}

Po zakończeniu działania skryptu zostanie wyświetlony nowy plik VHD z -Fixed na końcu jego nazwy w tym samym folderze co oryginalny plik VHD. Nowy plik VHD jest konwertowany i zmieniany w celu zgodności z bazą testów. Jest Fixed to typ dysku VHD o rozmiarze 1 miB wyrównania.