Azure에 VHD를 업로드하거나 관리 디스크를 다른 지역에 복사 - Azure PowerShell

적용 대상: ✔️ Windows VM

이 문서에서는 Azure PowerShell 모듈을 사용하여 로컬 컴퓨터에서 Azure 관리 디스크로 VHD를 업로드하거나 관리 디스크를 다른 지역으로 복사하는 방법을 설명합니다. 직접 업로드라고도 하는 관리 디스크 업로드 프로세스를 사용하면 최대 32TiB 크기의 VHD를 관리 디스크에 직접 업로드할 수 있습니다. 현재 직접 업로드는 Ultra Disks, 프리미엄 SSD v2, 프리미엄 SSD, 표준 SSD 및 표준 HDD에 대해 지원됩니다.

Azure에서 IaaS VM에 대한 백업 솔루션을 제공하는 경우에는 직접 업로드를 사용하여 관리 디스크에 고객 백업을 복원해야 합니다. Azure 외부의 원본에서 VHD를 업로드하는 경우 속도는 로컬 대역폭에 따라 다릅니다. Azure VM에서 업로드하거나 복사할 때 대역폭은 표준 HDD와 동일합니다.

Microsoft Entra ID를 사용하여 업로드 보호

Microsoft Entra ID를 사용하여 리소스 액세스를 제어하는 경우 이제 이를 사용하여 Azure 관리 디스크의 업로드를 제한할 수 있습니다. 이 기능은 모든 지역에서 GA 제품으로 사용할 수 있습니다. 사용자가 디스크 업로드를 시도하면 Azure는 Microsoft Entra ID에서 요청하는 사용자의 ID의 유효성을 검사하고 사용자에게 필요한 권한이 있는지 유효성을 검사합니다. 더 높은 수준에서 시스템 관리자는 Azure 계정 또는 구독 수준에서 정책을 설정하여 업로드할 디스크 또는 디스크 스냅샷을 허용하기 전에 Microsoft Entra ID에 업로드에 필요한 권한이 있는지 확인할 수 있습니다. Microsoft Entra ID를 사용한 업로드 보안에 대해 질문이 있는 경우 azuredisks@microsoft.com으로 이메일을 보내주세요.

필수 조건

제한 사항

  • VHD는 빈 스냅샷에 업로드할 수 없습니다.
  • Azure Backup은 현재 Microsoft Entra ID로 보호되는 디스크를 지원하지 않습니다.
  • Azure Site Recovery는 현재 Microsoft Entra ID로 보호되는 디스크를 지원하지 않습니다.

RBAC 역할 할당

Microsoft Entra ID로 보호되는 관리 디스크에 액세스하려면 요청하는 사용자에게 관리 디스크용 데이터 운영자 역할 또는 다음 권한이 있는 사용자 지정 역할이 있어야 합니다.

  • Microsoft.Compute/disks/download/action
  • Microsoft.Compute/disks/upload/action
  • Microsoft.Compute/snapshots/download/action
  • Microsoft.Compute/snapshots/upload/action

역할을 할당하는 방법에 대한 자세한 단계는 Azure PowerShell을 사용하여 Azure 역할 할당을 참조하세요. 사용자 지정 역할을 만들거나 업데이트하려면 Azure PowerShell을 사용하여 Azure 사용자 지정 역할 만들기 또는 업데이트를 참조하세요.

시작하기

Azure PowerShell 모듈을 사용하여 VHD를 업로드할 수 있는 두 가지 방법이 있습니다. 대부분의 프로세스를 자동화하는 Add-AzVHD 명령을 사용하거나 AzCopy를 사용하여 수동으로 업로드를 수행할 수 있습니다.

프리미엄 SSD, 표준 SSD 및 표준 HDD의 경우 일반적으로 Add-AzVHD를 사용해야 합니다. 그러나 Ultra Disk 또는 프리미엄 SSD v2에 업로드하거나 50GiB보다 큰 VHD를 업로드해야 하는 경우 AzCopy를 사용하여 VHD 또는 VHDX를 수동으로 업로드해야 합니다. AzCopy 및 Add-AzVhd를 사용하여 더 빠른 VHD 50GiB 이상의 업로드는 현재 Ultra Disk 또는 프리미엄 SSD v2에 업로드를 지원하지 않습니다.

한 지역에서 다른 지역으로 관리 디스크를 복사하는 방법에 대한 지침은 관리 디스크 복사를 참조하세요.

Add-AzVHD 사용

필수 조건

  • Azure PowerShell 모듈을 설치합니다.
  • 로컬에 저장된 VHD가 Azure용으로 준비되었습니다.
    • Windows: VHD를 VHDx로 변환하거나 고정 크기로 변환하거나 512바이트 오프셋을 포함하도록 크기를 조정할 필요가 없습니다. Add-AZVHD는 이러한 기능을 수행합니다.
      • Add-AzVHD가 이러한 기능을 수행하려면 Hyper-V를 사용하도록 설정해야 합니다.
    • Linux: 이러한 작업을 수동으로 수행해야 합니다. 자세한 내용은 VHD 크기 조정 을 참조하세요.

VHD 업로드

(선택 사항) 디스크에 대한 액세스 권한 부여

Microsoft Entra ID를 사용하여 구독 또는 계정 수준에서 업로드 제한을 적용하는 경우 Add-AzVHD적절한 RBAC 역할 또는 필요한 권한이 있는 사용자가 시도한 경우에만 성공합니다. 디스크에 대한 액세스 권한을 부여하고 쓰기 가능한 SAS를 생성하려면 RBAC 권한을 할당해야 합니다.

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName "Data Operator for Managed Disks" `
-Scope /subscriptions/<subscriptionId>

Add-AzVHD 사용

다음 예제에서는 Add-AzVHD를 사용하여 로컬 컴퓨터의 VHD를 새 Azure 관리 디스크로 업로드합니다. <your-filepath-here>, <your-resource-group-name>,<desired-region><desired-managed-disk-name>를 매개 변수로 바꿉니다.

참고 항목

Microsoft Entra ID를 사용하여 업로드 제한을 적용하는 경우 Add-AzVhd 명령의 끝에 DataAccessAuthMode 'AzureActiveDirectory'(을)를 추가합니다.

# Required parameters
$path = <your-filepath-here>.vhd
$resourceGroup = <your-resource-group-name>
$location = <desired-region>
$name = <desired-managed-disk-name>

# Optional parameters
# $Zone = <desired-zone>
# $sku=<desired-SKU>
# -DataAccessAuthMode 'AzureActiveDirectory'
# -DiskHyperVGeneration = V1 or V2. This applies only to OS disks.

# To use $Zone or #sku, add -Zone or -DiskSKU parameters to the command
Add-AzVhd -LocalFilePath $path -ResourceGroupName $resourceGroup -Location $location -DiskName $name

수동 업로드

필수 조건

Azure에 VHD를 업로드하려면 이 업로드 프로세스를 위해 구성된 빈 관리 디스크를 만들어야 합니다. 빈 관리 디스크를 만들기 전에 디스크에 대해 알고 있어야 하는 몇 가지 추가 정보가 있습니다.

이러한 종류의 관리 디스크에는 두 가지 고유한 상태가 있습니다.

  • ReadyToUpload는 디스크가 업로드를 받을 준비가 되었지만 SAS(보안 액세스 서명)가 생성되지 않았음을 의미합니다.
  • ActiveUpload - 디스크가 업로드를 받을 준비가 되었으며 SAS가 생성되었습니다.

참고 항목

두 상태 중 하나일 때는 실제 디스크 유형과 관계없이 표준 HDD 가격 책정에 따라 관리 디스크 요금이 청구됩니다. 예를 들어 P10 요금은 S10으로 청구됩니다. 이 요금은 디스크를 VM에 연결하는 데 필요한 revoke-access가 관리 디스크에서 호출될 때까지 적용됩니다.

빈 관리 디스크 만들기

업로드할 빈 표준 HDD를 만들려면 먼저 업로드할 VHD의 파일 크기(바이트)가 필요합니다. 예제 코드는 사용자를 위한 것이지만 직접 수행하려면 $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length를 사용할 수 있습니다. 이 값은 -UploadSizeInBytes 매개 변수를 지정할 때 사용됩니다.

이제 로컬 셸에서 -createoption 매개 변수의 업로드 설정과 New-AzDiskConfig cmdlet의 -UploadSizeInBytes 매개 변수를 지정하여 업로드할 빈 표준 HDD를 만듭니다. 그런 다음 New-AzDisk를 호출하여 디스크를 만듭니다.

<yourdiskname>, <yourresourcegroupname>, <yourregion>을 바꾸고 다음 명령을 실행합니다.

Important

OS 디스크를 만드는 경우 -HyperVGeneration '<yourGeneration>'New-AzDiskConfig에 추가합니다.

Microsoft Entra ID를 사용하여 업로드를 보호하는 경우 New-AzDiskConfig-dataAccessAuthMode 'AzureActiveDirectory'(을)를 추가합니다.
Ultra Disk 또는 프리미엄 SSD v2에 업로드할 때 대상 디스크의 올바른 섹터 크기를 선택해야 합니다. 논리 섹터 크기가 4k인 VHDX 파일을 사용하는 경우 대상 디스크를 4k로 설정해야 합니다. 논리 섹터 크기가 512인 VHD 파일을 사용하는 경우 대상 디스크를 512로 설정해야 합니다.

논리 섹터 크기가 512k인 VHDX 파일은 지원되지 않습니다.

$vhdSizeBytes = (Get-Item "<fullFilePathHere>").length

## For Ultra Disks or Premium SSD v2, add -LogicalSectorSize and specify either 4096 or 512, depending on if you're using a VHDX or a VHD

$diskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -OsType 'Windows' -UploadSizeInBytes $vhdSizeBytes -Location '<yourregion>' -CreateOption 'Upload'

New-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -Disk $diskconfig

다른 디스크 유형을 업로드하려면 Standard_LRSPremium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS 또는 UltraSSD_LRS로 바꿉니다.

쓰기 가능한 SAS 생성

업로드 프로세스를 위해 구성된 빈 관리 디스크를 만들었으므로 이제 여기에 VHD를 업로드할 수 있습니다. 디스크에 VHD를 업로드하려면 업로드할 대상으로 참조할 수 있도록 쓰기 가능한 SAS가 필요합니다.

빈 관리 디스크의 쓰기 가능한 SAS를 생성하려면 <yourdiskname><yourresourcegroupname>을 바꾸고 다음 명령을 사용합니다.

$diskSas = Grant-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -DurationInSecond 86400 -Access 'Write'

$disk = Get-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

VHD 또는 VHDX 업로드

이제 빈 관리 디스크의 SAS가 있으므로 SAS를 사용하여 해당 관리 디스크를 업로드 명령의 대상으로 설정할 수 있습니다.

AzCopy v10에서 생성한 SAS URI를 지정하여 관리 디스크에 로컬 VHD 또는 VHDX 파일을 업로드합니다.

해당 업로드는 동등한 표준 HDD와 처리량이 동일합니다. 예를 들어 S4와 크기가 같은 경우 처리량은 최대 60MiB/초입니다. 그러나 S70과 크기가 같은 경우 처리량은 최대 500MiB/초입니다.

AzCopy.exe copy "c:\somewhere\mydisk.vhd" $diskSas.AccessSAS --blob-type PageBlob

업로드가 완료되고 디스크에 더 이상 데이터를 쓸 필요가 없으면 SAS를 철회합니다. SAS를 철회하면 관리 디스크의 상태가 변경되고 해당 디스크를 VM에 연결할 수 있습니다.

<yourdiskname><yourresourcegroupname>을 바꾸고 다음 명령을 실행합니다.

Revoke-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

관리 디스크 복사

직접 업로드는 또한 관리 디스크를 복사하는 프로세스를 간소화합니다. 관리 디스크를 동일한 지역 내에서 복사하거나 다른 지역에 복사할 수 있습니다.

다음 스크립트는 해당 작업을 자동으로 수행합니다. 프로세스는 앞에서 설명한 단계와 유사하지만 기존 디스크로 작업하므로 몇 가지 차이점이 있습니다.

Important

Azure에서 관리 디스크의 디스크 크기(바이트)를 지정하는 경우 오프셋 512를 추가해야 합니다. Azure에서 디스크 크기를 반환할 때는 바닥글이 생략되기 때문입니다. 이렇게 하지 않으면 복사에 실패합니다. 다음 스크립트는 해당 작업을 자동으로 수행합니다.

<sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>, <yourOSTypeHere>, <yourTargetLocationHere>(위치 값이 uswest2인 예)를 사용자의 값으로 바꾼 다음 관리 디스크를 복사하기 위한 다음 스크립트를 실행합니다.

OS 디스크를 만드는 경우 New-AzDiskConfig-HyperVGeneration '<yourGeneration>'을 추가합니다.


$sourceRG = <sourceResourceGroupHere>
$sourceDiskName = <sourceDiskNameHere>
$targetDiskName = <targetDiskNameHere>
$targetRG = <targetResourceGroupHere>
$targetLocate = <yourTargetLocationHere>
$targetVmGeneration = "V1" # either V1 or V2
#Expected value for OS is either "Windows" or "Linux"
$targetOS = <yourOSTypeHere>

$sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName

# Adding the sizeInBytes with the 512 offset, and the -Upload flag
$targetDiskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -osType $targetOS -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -Location $targetLocate -CreateOption 'Upload' -HyperVGeneration $targetVmGeneration

$targetDisk = New-AzDisk -ResourceGroupName $targetRG -DiskName $targetDiskName -Disk $targetDiskconfig

$sourceDiskSas = Grant-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName -DurationInSecond 86400 -Access 'Read'

$targetDiskSas = Grant-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName -DurationInSecond 86400 -Access 'Write'

azcopy copy $sourceDiskSas.AccessSAS $targetDiskSas.AccessSAS --blob-type PageBlob

Revoke-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName

Revoke-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName 

다음 단계

이제 관리 디스크에 VHD를 성공적으로 업로드했으므로 VM에 디스크를 연결하고 사용하기 시작할 수 있습니다.

VM에 데이터 디스크를 연결하는 방법을 알아보려면 PowerShell을 사용하여 Windows VM에 데이터 디스크 연결에 대한 문서를 참조하세요. 디스크를 OS 디스크로 사용하려면 특수 디스크에서 Windows VM 만들기를 참조하세요.

추가 질문이 있는 경우 FAQ에서 관리 디스크 업로드 섹션을 참조하세요.