VM 관리 디스크 템플릿 사용

이 문서에서는 Azure Resource Manager 템플릿을 사용하여 Azure Stack Hub에서 가상 머신을 프로비전할 때 관리 디스크와 관리되지 않는 디스크 간의 차이점을 설명합니다. 이 예제는 관리되지 않는 디스크를 사용하는 기존 템플릿을 관리 디스크로 변환하는 데 도움이 됩니다.

관리되지 않는 디스크 템플릿 서식 지정

관리되지 않는 디스크가 배포되는 방법을 살펴보는 것으로 시작하겠습니다. 관리되지 않는 디스크를 만들 경우 VHD 파일을 포함하는 스토리지 계정이 필요합니다. 새 스토리지 계정을 만들거나 이미 있는 계정을 사용할 수 있습니다. 다음과 같이 템플릿의 리소스 블록에 새 스토리지 계정 리소스를 만듭니다.

{
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2017-10-01",
    "name": "[variables('storageAccountName')]",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "Standard_LRS"
    },
    "kind": "Storage"
}

가상 머신 개체 내에서 계정이 가상 머신 이전에 생성되도록 스토리지 계정에 대한 종속성을 추가합니다. storageProfile 섹션 내에서 스토리지 계정을 참조하고 OS 디스크 및 모든 데이터 디스크에 필요한 VHD 위치의 전체 URI를 지정합니다. 다음 예제에서는 이미지에서 OS 디스크 1개와 1023GB 크기의 빈 데이터 디스크 하나를 만듭니다.

{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2017-12-01",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "name": "osdisk",
                "vhd": {
                    "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, 'vhds/osdisk.vhd')]"
                },
                "caching": "ReadWrite",
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "name": "datadisk1",
                    "diskSizeGB": 1023,
                    "lun": 0,
                    "vhd": {
                        "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, 'vhds/datadisk1.vhd')]"
                    },
                    "createOption": "Empty"
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

관리 디스크 템플릿 서식 지정

Azure 관리 디스크를 사용하면 디스크가 최상위 리소스가 되며 더 이상 사용자가 스토리지 계정을 만들 필요가 없습니다. 관리 디스크는 API 버전에서 2017-03-30 처음 도입되었습니다. 다음 섹션에서는 기본 설정을 살펴보고 디스크를 추가로 사용자 지정하는 방법을 설명합니다.

기본 관리 디스크 설정

이제 관리 디스크를 사용하여 VM을 만들기 위해 스토리지 계정 리소스를 만들지 않아도 됩니다. 아래 템플릿 예제에서는 이전의 관리되지 않는 디스크 예제와 몇 가지 차이점이 있습니다.

  • apiVersion 관리 디스크를 지원하는 "virtualMachines" 리소스 유형의 버전입니다.
  • osDiskdataDisks는 특정 VHD URI를 더 이상 참조하지 않습니다.
  • 추가 속성을 지정하지 않고 배포할 때 디스크는 VM 크기에 따라 스토리지 유형을 사용합니다. 예를 들어 Premium Storage를 지원하는 VM 크기(이름에 "s"가 있는 크기(예: Standard_DS2_v2)를 사용하는 경우 프리미엄 디스크는 기본적으로 구성됩니다. 디스크의 sku 설정을 통해 스토리지 유형을 지정하여 변경할 수 있습니다.
  • 디스크 이름을 지정하지 않으면 OS 디스크의 경우 <VMName>_OsDisk_1_<randomstring> 형식을 사용하고 각 데이터 디스크의 경우 <VMName>_disk<#>_<randomstring> 형식을 사용합니다.
    • 사용자 지정 이미지에서 VM을 만드는 경우 스토리지 계정 유형 및 디스크 이름에 대한 기본 설정은 사용자 지정 이미지 리소스에 정의된 디스크 속성에서 검색됩니다. 템플릿에서 해당 값을 지정하여 재정의할 수 있습니다.
  • 기본적으로 디스크 캐싱은 OS 디스크에 대해 읽기/쓰기 가 이고 데이터 디스크의 경우 없음 입니다.
  • 다음 예제에서는 스토리지 계정 종속성이 여전히 있지만 이는 진단 스토리지에만 사용되며 디스크 스토리지에는 필요하지 않습니다.
{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2017-12-01",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "diskSizeGB": 1023,
                    "lun": 0,
                    "createOption": "Empty"
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

최상위 관리 디스크 리소스 사용

가상 머신 개체에서 디스크 구성을 지정하는 대신, 최상위 디스크 리소스를 만들고 가상 머신 만들기의 일부로 연결할 수 있습니다. 를 리소스 API 버전으로 disks 사용해야 2017-03-30 합니다. 예를 들어 다음과 같이 데이터 디스크로 사용할 디스크 리소스를 만들 수 있습니다. 이 예제 vmName 에서는 가 디스크 이름의 일부로 사용됩니다.

{
    "type": "Microsoft.Compute/disks",
    "apiVersion": "2017-03-30",
    "name": "[concat(variables('vmName'),'-datadisk1')]",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "Standard_LRS"
    },
    "properties": {
        "creationData": {
            "createOption": "Empty"
        },
        "diskSizeGB": 1023
    }
}

그런 다음 VM 개체 내에서 이 디스크 개체를 참조하여 연결합니다. managedDisk 속성에서 만든 관리 디스크의 리소스 ID를 지정하면 VM이 생성될 때 디스크를 첨부할 수 있습니다. 위 코드에서 VM 리소스의 apiVersion2017-12-01으로 설정되어 있습니다. VM을 만들기 전에 디스크 리소스가 성공적으로 생성되도록 디스크 리소스에 대한 종속성이 추가됩니다.

{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2017-12-01",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]",
        "[resourceId('Microsoft.Compute/disks/', concat(variables('vmName'),'-datadisk1'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "lun": 0,
                    "name": "[concat(variables('vmName'),'-datadisk1')]",
                    "createOption": "attach",
                    "managedDisk": {
                        "id": "[resourceId('Microsoft.Compute/disks/', concat(variables('vmName'),'-datadisk1'))]"
                    }
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

관리 디스크를 사용하여 VM에서 관리 가용성 집합 만들기

관리 디스크를 사용하여 VM에서 관리 가용성 집합을 만들려면 sku 개체를 가용성 집합 리소스에 추가하고 name 속성을 Aligned로 설정합니다. 이 속성을 사용하면 각 VM에 대한 디스크가 단일 실패 지점을 피할 만큼 서로 충분히 격리됩니다. apiVersion 또한 가용성 집합 리소스에 대한 는 로 설정2017-12-01됩니다.

{
    "type": "Microsoft.Compute/availabilitySets",
    "apiVersion": "2017-12-01",
    "location": "[resourceGroup().location]",
    "name": "[variables('avSetName')]",
    "properties": {
        "PlatformUpdateDomainCount": 1,
        "PlatformFaultDomainCount": 2
    },
    "sku": {
        "name": "Aligned"
    }
}

다음 단계