다음을 통해 공유


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

기본 관리 디스크 설정

관리 디스크가 있는 VM을 만들려면 더 이상 스토리지 계정 리소스를 만들 필요가 없습니다. 아래 템플릿 예제에서는 이전의 관리되지 않는 디스크 예제와 몇 가지 차이점이 있습니다.

  • apiVersion 관리 디스크를 지원하는 "virtualMachines" 리소스 유형의 버전입니다.
  • osDiskdataDisks 더 이상 VHD에 대한 특정 URI를 참조하지 않습니다.
  • 추가 속성을 지정하지 않고 배포할 때 디스크는 VM 크기에 따라 스토리지 유형을 사용합니다. 예를 들어 Premium Storage를 지원하는 VM 크기(Standard_DS2_v2 같은 이름에 "s"가 있는 크기)를 사용하는 경우 프리미엄 디스크는 기본적으로 구성됩니다. 디스크의 sku 설정을 사용하여 스토리지 유형을 지정하여 이를 변경할 수 있습니다.
  • 디스크 이름을 지정하지 않으면 OS 디스크에 대한 <VMName>_OsDisk_1_<randomstring> 형식을 사용하고 각 데이터 디스크에 대해 <VMName>_disk<#>_<randomstring>.
    • 사용자 지정 이미지에서 VM을 만드는 경우 스토리지 계정 유형 및 디스크 이름에 대한 기본 설정은 사용자 지정 이미지 리소스에 정의된 디스크 속성에서 검색됩니다. 템플릿에서 이러한 값들을 지정하여 재정의할 수 있습니다.
  • 기본적으로 디스크 캐싱은 OS 디스크에 대해 읽기/쓰기가 , 데이터 디스크의 경우 None이 입니다.
  • 다음 예제에서는 여전히 스토리지 계정 종속성이 있지만 진단 스토리지에만 해당하며 디스크 스토리지에는 필요하지 않습니다.
{
    "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": {...}
    }
}

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

가상 머신 개체에서 디스크 구성을 지정하는 대신 최상위 디스크 리소스를 만들고 가상 머신 만들기의 일부로 연결할 수 있습니다. 반드시 2017-03-30disks 리소스 API 버전으로 사용해야 합니다. 예를 들어 다음과 같이 디스크 리소스를 만들어 데이터 디스크로 사용할 수 있습니다. 이 예제에서는 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의 디스크가 서로 충분히 격리되어 단일 실패 지점을 방지할 수 있습니다. 또한 가용성 집합 리소스의 apiVersion2017-12-01로 설정된다는 점을 주목하십시오.

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

다음 단계