Azure에 VHD 업로드 또는 다른 지역에 관리 디스크 복사 - Azure CLI

적용 대상: ✔️ Linux VM ✔️ Windows VM ✔️ 유연한 확장 집합

이 문서에서는 AzCopy를 사용하여 로컬 컴퓨터에서 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 CLI를 사용하여 Azure 역할 할당을 참조하세요. 사용자 지정 역할을 만들거나 업데이트하려면 Azure CLI를 사용하여 Azure 사용자 지정 역할 만들기 또는 업데이트를 참조하세요.

시작하기

GUI를 통해 디스크를 업로드하려는 경우 Azure Storage Explorer를 사용하여 업로드할 수 있습니다. 자세한 내용은 Azure Storage Explorer를 사용하여 Azure 관리 디스크 관리를 참조하세요.

필수 조건

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

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

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

참고 항목

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

빈 관리 디스크 만들기

업로드할 빈 표준 HDD를 만들려면 먼저 업로드할 VHD의 파일 크기(바이트)가 필요합니다. 파일 크기를 확인하려면 wc -c <yourFileName>.vhd 또는 ls -al <yourFileName>.vhd를 사용할 수 있습니다. 이 값은 --upload-size-bytes 매개 변수를 지정할 때 사용됩니다.

disk create cmdlet에서 -–for-upload 매개 변수와 --upload-size-bytes 매개 변수를 둘 다 지정하여 업로드할 빈 표준 HDD를 만듭니다.

<yourdiskname>, <yourresourcegroupname>, <yourregion>을 선택한 값으로 바꿉니다. --upload-size-bytes 매개 변수에는 34359738880의 예제 값이 포함되어 있으므로 해당 값을 적절한 값으로 바꿉니다.

Important

OS 디스크를 만드는 경우 --hyper-v-generation <yourGeneration>az disk create에 추가합니다.

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

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

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

az disk create -n <yourdiskname> -g <yourresourcegroupname> -l <yourregion> --os-type Linux --for-upload --upload-size-bytes 34359738880 --sku standard_lrs

다른 디스크 유형을 업로드하려면 standard_lrspremium_lrs, premium_zrs, standardssd_lrs, standardssd_zrs, premiumv2_lrs 또는 ultrassd_lrs로 바꿉니다.

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

업로드 보안을 위해 Microsoft Entra ID를 사용하는 경우 디스크에 대한 액세스 권한을 부여하고 쓰기 가능한 SAS를 생성하려면 RBAC 권한을 할당해야 합니다.

az role assignment create --assignee "{assignee}" \
--role "{Data Operator for Managed Disks}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{diskName}"

쓰기 가능한 SAS 생성

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

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

az disk grant-access -n <yourdiskname> -g <yourresourcegroupname> --access-level Write --duration-in-seconds 86400

샘플 반환 값:

{
  "accessSas": "https://md-impexp-t0rdsfgsdfg4.blob.core.windows.net/w2c3mj0ksfgl/abcd?sv=2017-04-17&sr=b&si=600a9281-d39e-4cc3-91d2-923c4a696537&sig=xXaT6mFgf139ycT87CADyFxb%2BnPXBElYirYRlbnJZbs%3D"
}

VHD 또는 VHDX 업로드

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

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

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

AzCopy.exe copy "c:\somewhere\mydisk.vhd" "sas-URI" --blob-type PageBlob

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

<yourdiskname><yourresourcegroupname>을 바꾼 후 다음 명령을 사용하여 디스크를 사용할 수 있도록 합니다.

az disk revoke-access -n <yourdiskname> -g <yourresourcegroupname>

관리 디스크 복사

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

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

Important

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

<sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>, <yourTargetLocationHere>(위치 값의 예: uswest2)를 해당 값으로 바꾼 후 관리 디스크를 복사하기 위해 다음 스크립트를 실행합니다.

OS 디스크를 만드는 경우 az disk create--hyper-v-generation <yourGeneration>을 추가합니다.

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

sourceDiskSizeBytes=$(az disk show -g $sourceRG -n $sourceDiskName --query '[diskSizeBytes]' -o tsv)

az disk create -g $targetRG -n $targetDiskName -l $targetLocation --os-type $targetOS --for-upload --upload-size-bytes $(($sourceDiskSizeBytes+512)) --sku standard_lrs

targetSASURI=$(az disk grant-access -n $targetDiskName -g $targetRG  --access-level Write --duration-in-seconds 86400 --query [accessSas] -o tsv)

sourceSASURI=$(az disk grant-access -n $sourceDiskName -g $sourceRG --duration-in-seconds 86400 --query [accessSas] -o tsv)

azcopy copy $sourceSASURI $targetSASURI --blob-type PageBlob

az disk revoke-access -n $sourceDiskName -g $sourceRG

az disk revoke-access -n $targetDiskName -g $targetRG

다음 단계

이제 관리 디스크에 VHD를 업로드했으므로 디스크를 기존 VM에 데이터 디스크로 연결하거나 디스크를 VM에 OS 디스크로 연결하여 새 VM을 만들 수 있습니다.

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