Azure CLI를 사용하여 VM 복원

Azure Backup은 지역 중복 복구 자격 증명 모음에 저장되는 복구 지점을 만듭니다. 복구 지점에서 복원하는 경우 전체 VM 또는 개별 파일을 복원할 수 있습니다. 이 문서에서는 CLI를 사용하여 전체 VM을 복원하는 방법에 대해 설명합니다. 이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • 복구 지점 나열 및 선택
  • 복구 지점에서 디스크 복원
  • 복원된 디스크에서 VM 만들기

PowerShell을 사용하여 디스크를 복원하고 복구된 VM을 만드는 방법은 PowerShell을 사용하여 Azure VM 백업 및 복원을 참조하세요.

이제 CLI를 사용하여 위의 단계를 별도로 수행하지 않고도 백업 콘텐츠를 VM(원래/신규)으로 직접 복원할 수도 있습니다. 자세한 내용은 CLI를 사용하여 가상 머신에 데이터 복원을 참조하세요.

사전 요구 사항

  • 이 자습서에는 Azure CLI 버전 2.0.18 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.

  • 이 자습서에서는 Azure Backup으로 보호된 Linux VM이 필요합니다. 실수로 인한 VM 삭제 및 복구 프로세스를 시뮬레이션하려면 복구 지점의 디스크에서 VM을 만듭니다. Azure Backup으로 보호된 Linux VM이 필요한 경우 CLI를 사용하여 Azure에서 가상 머신 백업을 참조하세요.

Backup 개요

Azure에서 백업을 시작하면 VM에 대한 백업 확장에서 특정 시점 스냅샷을 만듭니다. 첫 번째 백업이 요청될 때 백업 확장이 VM에 설치됩니다. 또한 백업이 수행될 때 VM이 실행되고 있지 않으면 Azure Backup에서 기본 스토리지의 스냅샷을 만들 수도 있습니다.

기본적으로 Azure Backup은 파일 시스템 일치 백업을 만듭니다. Azure Backup에서 스냅샷을 만들면 데이터가 Recovery Services 자격 증명 모음으로 전송됩니다. 효율성을 극대화하기 위해 Azure Backup은 이전 백업 이후에 변경된 데이터 블록만 식별하여 전송합니다.

데이터 전송이 완료되면 스냅샷이 제거되고 복구 지점이 생성됩니다.

사용 가능한 복구 지점 나열

디스크를 복원하려면 복구 지점을 복구 데이터에 대한 원본으로 선택합니다. 기본 정책은 매일 복구 지점을 만들고 이를 30일 동안 유지하므로 복구 시점을 특정 시점으로 선택할 수 있는 복구 지점 집합을 유지할 수 있습니다.

사용 가능한 복구 지점 목록을 보려면 az backup recoverypoint list를 사용합니다. 복구 지점 이름은 디스크를 복구하는 데 사용됩니다. 이 자습서에서는 사용 가능한 최근 복구 지점을 사용하겠습니다. --query [0].name 매개 변수는 다음과 같이 최근 복구 지점 이름을 선택합니다.

az backup recoverypoint list \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --backup-management-type AzureIaasVM \
    --container-name myVM \
    --item-name myVM \
    --query [0].name \
    --output tsv

VM 디스크 복원

Important

Az CLI 버전 2.0.74 이상을 사용하여 관리 디스크 복원을 비롯한 빠른 복원의 모든 이점을 활용할 것을 강력하게 권장합니다. 항상 최신 버전을 사용하는 것이 가장 좋습니다.

관리 디스크 복원

백업된 VM에 관리 디스크가 있고 복구 지점에서 관리 디스크를 복원하려는 경우 먼저 Azure 스토리지 계정을 제공해야 합니다. 이 스토리지 계정은 나중에 복원된 디스크에서 VM을 배포하는 데 사용할 수 있는 VM 구성 및 배포 템플릿을 저장하는 데 사용됩니다. 그런 다음, 관리 디스크를 복원할 대상 리소스 그룹을 입력합니다.

  1. az storage account create를 사용하여 스토리지 계정을 만듭니다. 스토리지 계정 이름은 모두 소문자여야 하며 전역적으로 고유해야 합니다. mystorageaccount를 사용자 고유의 이름으로 바꿉니다.

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. az backup restore restore-disks를 사용하여 복구 지점에서 디스크를 복원합니다. mystorageaccount를 이전 명령에서 만든 스토리지 계정의 이름으로 바꿉니다. myRecoveryPointName을 이전 az backup recoverypoint list 명령의 출력에서 얻은 복구 지점 이름으로 바꿉니다. 또한 관리 디스크를 복원할 대상 리소스 그룹을 제공합니다.

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName \
        --target-resource-group targetRG
    

    Warning

    target-resource-group이 제공되지 않으면 관리 디스크는 지정된 스토리지 계정에 비관리 디스크로 복원됩니다. 이 경우 지정된 스토리지 계정에 따라 디스크 복원에 걸리는 시간이 크게 달라지므로 복원 시간에 큰 영향을 미치게 됩니다. target-resource-group 매개 변수가 지정된 경우에만 즉시 복원의 이점을 얻을 수 있습니다. 관리 디스크를 관리되지 않는 상태로 복원하려는 경우에는 target-resource-group 매개 변수를 제공하지 않고 대신 아래에 표시된 대로 restore-as-unmanaged-disk 매개 변수를 제공합니다. 이 매개 변수는 Azure CLI 3.4.0 이상에서 사용할 수 있습니다.

    az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account mystorageaccount \
    --rp-name myRecoveryPointName \
    --restore-as-unmanaged-disk
    

이렇게 하면 관리 디스크는 지정된 스토리지 계정에 관리되지 않는 디스크로 복원되며 '인스턴트' 복원 기능을 활용하지 않습니다. 이후 버전의 CLI에서는 target-resource-group 매개 변수 또는 restore-as-unmanaged-disk 매개 변수를 제공해야 합니다.

디스크를 보조 지역으로 복원

VM을 보호한 자격 증명 모음에서 지역 간 복원을 사용하도록 설정하면 백업 데이터가 보조 지역으로 복제됩니다. 백업 데이터를 사용하여 복원 작업을 수행할 수 있습니다.

디스크를 보조 지역으로 복원하려면 az backup restore restore-disks 명령에서 --use-secondary-region 플래그를 사용합니다. 보조 지역에 있는 대상 스토리지 계정을 지정해야 합니다.

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account targetStorageAccountID \
    --rp-name myRecoveryPointName \
    --target-resource-group targetRG
    --use-secondary-region

교차 영역 복원

동일한 지역의 모든 가용성 영역에서 Azure 영역 고정 VM을 복원할 수 있습니다.

VM을 다른 영역으로 복원하려면 az backup restore restore-disks 명령에 TargetZoneNumber 매개 변수를 지정합니다.

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account targetStorageAccountID \
    --rp-name myRecoveryPointName \
    --target-resource-group targetRG
    --target-zone 3

교차 영역 복원은 다음과 같은 시나리오에서만 지원됩니다.

  • 원본 VM은 영역이 고정되어 있으며 암호화되지 않습니다.
  • 복구 지점이 자격 증명 모음 계층에만 있습니다. 스냅샷만 또는 스냅샷 및 자격 증명 모음 계층은 지원되지 않습니다.
  • 복구 옵션이 새 VM을 만들거나 디스크를 복원하는 것입니다. 디스크 교체 옵션은 원본 데이터를 교체합니다. 따라서 가용성 영역 옵션은 적용할 수 없습니다.
  • 자격 증명 모음의 스토리지 중복성이 ZRS인 경우 동일한 지역에 VM/디스크를 만듭니다. 원본 VM이 영역 고정되어 있어도 자격 증명 모음의 스토리지 중복성이 GRS이면 작동하지 않습니다.
  • 교차 지역 복원에 대해 자격 증명 모음의 스토리지 중복이 사용하도록 설정되어 있고 쌍을 이루는 지역이 영역을 지원하는 경우 쌍을 이루는 지역에서 VM/디스크를 만듭니다.

비관리 디스크 복원

백업된 VM에 관리되지 않는 디스크가 있고 복구 지점에서 디스크를 복원하려는 경우 먼저 Azure 스토리지 계정을 제공해야 합니다. 이 스토리지 계정은 나중에 복원된 디스크에서 VM을 배포하는 데 사용할 수 있는 VM 구성 및 배포 템플릿을 저장하는 데 사용됩니다. 기본적으로 비관리 디스크는 원래 스토리지 계정에 복원됩니다. 모든 비관리 디스크를 한 곳에 복원하려는 경우에는 지정된 스토리지 계정을 해당 디스크의 준비 위치로도 사용할 수 있습니다.

추가 단계에서 복원된 디스크를 사용하여 VM을 만듭니다.

  1. az storage account create를 사용하여 스토리지 계정을 만듭니다. 스토리지 계정 이름은 모두 소문자여야 하며 전역적으로 고유해야 합니다. mystorageaccount를 사용자 고유의 이름으로 바꿉니다.

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. az backup restore restore-disks를 사용하여 복구 지점에서 디스크를 복원합니다. mystorageaccount를 이전 명령에서 만든 스토리지 계정의 이름으로 바꿉니다. myRecoveryPointName을 이전 az backup recoverypoint list 명령의 출력에서 얻은 복구 지점 이름으로 바꿉니다.

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName
    

위에서 언급했듯이, 비관리 디스크는 원래 스토리지 계정에 복원됩니다. 따라서 최상의 복원 성능을 제공합니다. 그러나 모든 비관리 디스크를 지정된 스토리지 계정에 복원해야 하는 경우에는 아래와 같이 관련 플래그를 사용합니다.

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName \
        --restore-to-staging-storage-account
    ```

## Monitor the restore job

To monitor the status of restore job, use [az backup job list](/cli/azure/backup/job#az-backup-job-list):

```azurecli-interactive
az backup job list \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --output table

출력은 다음 예제와 비슷합니다. 여기서는 복원 작업 상태가 진행 중이라고 표시됩니다.

Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myvm         2017-09-19T19:39:52  0:00:34.520850
a0a8e5e6  Backup           Completed   myvm         2017-09-19T03:09:21  0:15:26.155212
fe5d0414  ConfigureBackup  Completed   myvm         2017-09-19T03:03:57  0:00:31.191807

복원 작업의 상태완료인 경우 필요한 정보(VM 구성 및 배포 템플릿)가 스토리지 계정에 복원된 것입니다.

관리 ID를 사용하여 디스크 복원

또한 Azure Backup을 사용하면 복원 작업 중에 MSI(관리 ID)를 사용하여, 디스크가 복원되어야 하는 저장소 계정에 액세스할 수 있습니다. 이 옵션은 현재 관리 디스크 복원에만 지원됩니다.

자격 증명 모음 시스템이 할당한 관리 ID를 사용하여 디스크를 복원하려는 경우 추가 플래그 --mi-system-assignedaz backup restore restore-disks 명령에 패스합니다. 사용자 할당 관리 ID를 사용하려는 경우, 자격 증명 모음 관리 ID의 Azure Resource Manager ID가 있는 --mi-user-assigned 매개 변수를 매개 변수 값으로 전달합니다. 자격 증명 모음에 관리 ID를 사용하도록 설정하는 방법을 알아보려면 이 문서를 참조하세요.

복원된 디스크에서 VM 만들기

마지막 단계는 복원된 디스크에서 VM을 만드는 것입니다. 지정된 스토리지 계정에 다운로드한 배포 템플릿을 사용하여 VM을 만들 수 있습니다.

작업 세부 정보 가져오기

결과 작업 세부 정보는 쿼리 및 배포 가능한 템플릿 URI를 제공합니다. 트리거된 복원 작업에 대한 자세한 정보를 보려면 작업 표시 명령을 사용합니다.

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414

이 쿼리의 출력은 모든 세부 정보를 제공하지만, 스토리지 계정 내용에만 관심이 있습니다. Azure CLI의 쿼리 기능을 사용하여 관련 세부 정보를 가져올 수 있습니다.

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414 \
    --query properties.extendedInfo.propertyBag

{
  "Config Blob Container Name": "myVM-daa1931199fd4a22ae601f46d8812276",
  "Config Blob Name": "config-myVM-1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414.json",
  "Config Blob Uri": "https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/config-appvm8-1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json",
  "Job Type": "Recover disks",
  "Recovery point time ": "12/25/2019 10:07:11 PM",
  "Target Storage Account Name": "mystorageaccount",
  "Target resource group": "mystorageaccountRG",
  "Template Blob Uri": "https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json"
}

배포 템플릿 가져오기

템플릿은 고객의 스토리지 계정과 지정된 컨테이너에 있기 때문에 직접 액세스할 수 없습니다. 이 템플릿에 액세스하려면 (임시 SAS 토큰과 함께) 전체 URL이 필요합니다.

먼저 작업 세부 정보에서 템플릿 Blob URI를 추출합니다.

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414 \
    --query properties.extendedInfo.propertyBag."""Template Blob Uri"""

"https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json"

템플릿 Blob URI는 이 형식이며 템플릿 이름을 추출합니다.

https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>

따라서 위 예제의 템플릿은 azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json이고 컨테이너 이름은 myVM-daa1931199fd4a22ae601f46d8812276입니다.

이제 여기에 설명된 대로 이 컨테이너의 SAS 토큰과 템플릿을 가져옵니다.

expiretime=$(date -u -d '30 minutes' +%Y-%m-%dT%H:%MZ)
connection=$(az storage account show-connection-string \
    --resource-group mystorageaccountRG \
    --name mystorageaccount \
    --query connectionString)
token=$(az storage blob generate-sas \
    --container-name myVM-daa1931199fd4a22ae601f46d8812276 \
    --name azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json \
    --expiry $expiretime \
    --permissions r \
    --output tsv \
    --connection-string $connection)
url=$(az storage blob url \
   --container-name myVM-daa1931199fd4a22ae601f46d8812276 \
    --name azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json \
    --output tsv \
    --connection-string $connection)

템플릿을 배포하여 VM 만들기

이제 여기에 설명된 대로 템플릿을 배포하여 VM을 만듭니다.

az deployment group create \
  --resource-group ExampleGroup \
  --template-uri $url?$token

VM이 복구된 디스크에서 만들어졌는지 확인하려면 다음과 같이 az vm list를 사용하여 리소스 그룹에 VM을 나열합니다.

az vm list --resource-group myResourceGroup --output table

CLI를 사용하여 가상 머신에 데이터 복원

이제 여러 단계를 수행하지 않고도 원본/대체 VM으로 데이터를 직접 복원할 수 있습니다.

원래 VM으로 데이터 복원

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --restore-mode OriginalLocation 
    --storage-account mystorageaccount \
    --rp-name myRecoveryPointName \ 
Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myVM         2017-09-19T19:39:52  0:00:34.520850

마지막 명령은 원래 위치 복원 작업을 트리거하여 기존 VM의 데이터를 현재 위치로 복원합니다.

새로 만든 VM으로 데이터 복원

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --restore-mode AlternateLocation \
    --storage-account mystorageaccount \

--target-resource-group "Target_RG" \
    --rp-name myRecoveryPointName \
    --target-vm-name "TargetVirtualMachineName" \
    --target-vnet-name "Target_VNet" \
    --target-vnet-resource-group "Target_VNet_RG" \
    --target-subnet-name "targetSubNet"
Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myVM         2017-09-19T19:39:52  0:00:34.520850

마지막 명령은 TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName 매개 변수로 지정된 입력에 따라 Target_RG 리소스 그룹에 새 VM을 만드는 대체 위치 복원 작업을 트리거합니다. 이렇게 하면 필요한 VM, 가상 네트워크 및 서브넷에서 데이터가 복원됩니다.

다음 단계

이 자습서에서는 복구 지점에서 디스크를 복원한 다음 디스크에서 VM을 만들었습니다. 다음 방법에 대해 알아보았습니다.

  • 복구 지점 나열 및 선택
  • 복구 지점에서 디스크 복원
  • 복원된 디스크에서 VM 만들기

복구 지점에서 개별 파일을 복원하는 방법을 알아보려면 다음 자습서로 진행하세요.