테스트 베이스용 Windows VHD를 준비하는 방법

온-프레미스에서 테스트 베이스로 Windows VM(가상 머신)을 업로드하기 전에 먼저 VHD(가상 하드 디스크)를 준비해야 합니다. Test Base는 VHD 파일 형식을 사용하고 고정 크기 디스크가 있는 2세대 VM만 지원합니다. 2세대 VM의 OS VHD 최대 크기는 테스트 베이스의 128GiB입니다.

Test Base는 다음 Windows 버전을 지원합니다.

  • Windows 10 21H2 이상
  • Windows 11 21H2 이상
  • Windows Server 2016 이상

VHDX 파일을 VHD로 변환하거나 동적으로 확장되는 디스크를 고정 크기의 디스크로 변환할 수 있지만 VM 생성을 변경할 수는 없습니다. VHD 관련 작업을 위해 호스트에서 Hyper-V 기능을 사용하도록 설정해야 합니다.

VHD의 물리적 크기는 축소할 수 없습니다. VHD에 있는 볼륨의 총 크기가 테스트 베이스의 최대 OS VHD 크기(128GiB)를 초과하는 경우 VHD로 변환하기 전에 VM을 더 작은 VHD로 다시 만들거나 VM의 볼륨을 축소해야 합니다.

VM VHD가 테스트 베이스와 호환되는지 확인하려면 아래 구성 단계를 따라야 합니다.

1단계. 쉽게 구성하기 위해 AzureConfig.ps1 스크립트 실행

구성 단계를 더 쉽게 구성 스크립트를 준비하려면 AzureConfig.ps1 다운로드하고 VM의 PowerShell에서 관리자 권한으로 스크립트를 실행할 수 있습니다. 스크립트를 실행하기 전에 PowerShell 실행 정책을 구성해야 할 수 있습니다. 를 실행 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser 하여 현재 사용자에 대한 서명 검사를 무시합니다.

스크립트가 완료되면 컴퓨터를 다시 시작합니다. ChkDsk는 시스템 부팅 중에 실행됩니다. 보고서에 클린 및 정상 디스크가 표시되는지 확인합니다. Step-SetLocalPolicy는 법적 통지를 사용하지 않도록 설정하고 네트워크 인증을 위해 암호 및 자격 증명의 스토리지를 허용하도록 로컬 정책을 설정합니다.

2단계. Windows 업데이트 설치

VM 프로비저닝 중에 실수로 다시 부팅되지 않도록 하려면 모든 Windows 업데이트를 설치하고 테스트 베이스로 마이그레이션하기 전에 VM을 다시 시작하는 것이 좋습니다.

또한 OS(Sysprep)를 일반화해야 하는 경우 Sysprep 명령을 실행하기 전에 Windows를 업데이트하고 VM을 다시 시작해야 합니다.

3단계. Sysprep 사용 시기 결정

시스템 준비 도구(sysprep.exe)는 Windows 설치를 다시 설정하는 프로세스입니다. Sysprep은 모든 개인 데이터를 제거하고 여러 구성 요소를 다시 설정합니다.

일반적으로 를 실행 sysprep.exe 하여 특정 구성을 사용하여 다른 여러 VM을 배포하는 데 사용할 수 있는 템플릿을 만듭니다. 템플릿을 일반화된 이미지라고 합니다.

하나의 디스크에서 하나의 VM만 만들려면 Sysprep을 사용할 필요가 없습니다. 대신 특수화된 이미지 에서 VM을 만들 수 있습니다.

Sysprep을 실행하려면 실행하기 전에 드라이브를 완전히 암호 해독해야 합니다. VM에서 암호화를 사용하도록 설정한 경우 Sysprep을 실행하기 전에 사용하지 않도록 설정합니다. 스크립트는 AzureConfig.ps1 모든 볼륨에 대해 BitLocker를 사용하지 않도록 설정해야 합니다.

VHD 일반화

다음 단계에 따라 VM VHD를 일반화합니다. 이러한 단계 후에는 VM을 끄고 VHD 업로드를 완료할 때까지 VM을 다시 켜지 마세요.

  1. Windows VM에 로그인합니다.

  2. 관리자 권한으로 PowerShell을 실행합니다.

  3. panther 디렉터리(C:\Windows\Panther)를 삭제합니다.

  4. 디렉터리를 로 변경합니다 $env:windir\System32\sysprep. 그런 다음 를 실행합니다 sysprep.exe.

  5. 시스템 준비 도구 대화 상자에서 OOBE(System Out-of-Box Experience) 입력을 선택하고 일반화를 검사.

    시스템 준비 도구

  6. 종료 옵션에서 종료를 선택합니다.

  7. 확인을 선택합니다.

  8. Sysprep이 완료되면 VM을 종료합니다. 일반화에 성공하면 VM이 자동으로 종료됩니다. 다시 시작을 사용하여 VM을 종료하지 마세요.

다음 PowerShell 스크립트를 사용하여 VM VHD를 일반화할 수도 있습니다. PowerShell에서 관리자 권한으로 스크립트를 실행합니다.

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

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

.\sysprep.exe /generalize /shutdown /oobe

Pop-Location

이제 VHD가 일반화되었습니다.

특수 이미지용 Azure Virtual Machine 에이전트 설치

특수 이미지에서 VM을 만들려면 VM에 를 Azure Virtual Machine Agent 설치해야 합니다.

VM에 Azure Virtual Machine 에이전트 를 설치합니다. 그런 다음 에이전트 설치 후 VM 확장을 사용하도록 설정할 수 있습니다. VM 확장은 테스트 베이스에 필요한 대부분의 중요한 기능을 제공합니다.

이 PowerShell 스크립트를 관리자 권한으로 실행하여 에이전트를 설치할 수도 있습니다.

$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

4단계. 가상 디스크를 고정 크기 VHD로 변환 및 크기 조정

이 메서드를 사용하여 테스트 베이스에 대한 가상 디스크를 변환하고 크기를 조정합니다.

  1. 변환 또는 크기 조정 프로세스를 시작하기 전에 VM을 백업합니다.

  2. Windows VHD가 로컬 서버에서 올바르게 작동하는지 확인합니다. 테스트 베이스로 변환하거나 업로드하기 전에 VM의 오류를 수정합니다.

  3. 가상 디스크 유형을 로 변환합니다 Fixed.

  4. 테스트 기본 요구 사항을 충족하도록 가상 디스크의 크기를 조정합니다.

    1. Azure의 디스크에는 1MiB에 맞춰진 가상 크기가 있어야 합니다. VHD가 1MiB의 배수가 아닌 경우 디스크 크기를 조정해야 합니다. 1MiB의 배수가 아닌 디스크는 업로드된 VHD에서 이미지를 만들 때 오류가 발생합니다. PowerShell Get-VHD cmdlet을 사용하여 Azure에서 1MiB의 배수여야 하는 "Size"와 VHD 바닥글에 대해 "Size"와 512바이트인 "FileSize"를 표시합니다.

      $vhd = Get-VHD -Path C:\Test\TestBaseVM.vhd
      $vhd.Size % 1MB
      0
      $vhd.FileSize - $vhd.Size
      512
      
    2. 테스트 베이스의 OS VHD의 최대 크기는 128GiB입니다.

PowerShell을 사용하여 디스크 변환 및 크기 조정

Resize-VHD PowerShell cmdlet을 사용하여 Convert-VHD 테스트 베이스에 대한 VM 호스트의 가상 디스크를 변환할 수 있습니다. 관리자 권한으로 이 PowerShell 스크립트를 실행합니다. 을 업로드하려는 VHD의 경로로 바꿉 있습니다 <PathToVHD> .

$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
}

스크립트가 완료되면 원래 VHD 파일과 -Fixed 동일한 폴더의 이름 끝에 새 VHD 파일이 표시됩니다. 새 VHD 파일은 테스트 베이스와 호환되도록 변환되고 크기가 조정됩니다. Fixed VHD 형식이며 크기가 1MiB 맞춤입니다.