Dela via


Använda mallar för hanterade diskar på virtuella datorer

I den här artikeln beskrivs skillnaderna mellan hanterade och ohanterade diskar när du använder Azure Resource Manager-mallar för att etablera virtuella datorer i Azure Stack Hub. Exemplen hjälper dig att konvertera befintliga mallar som använder ohanterade diskar till hanterade diskar.

Formatering av ohanterade diskar

Vi börjar med att ta en titt på hur ohanterade diskar distribueras. När du skapar ohanterade diskar behöver du ett lagringskonto för att lagra VHD-filerna. Du kan skapa ett nytt lagringskonto eller använda ett som redan finns. Skapa en ny lagringskontoresurs i resursblocket i mallen enligt följande:

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

I objektet för den virtuella datorn lägger du till ett beroende för lagringskontot för att säkerställa att det skapas före den virtuella datorn. I avsnittet storageProfile anger du den fullständiga URI:n för VHD-platsen, som refererar till lagringskontot och som behövs för OS-disken och alla datadiskar. I följande exempel skapas en OS-disk från en avbildning och en tom datadisk med storleken 1 023 GB:

{
    "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": {...}
    }
}

Formatering av mall för hanterade diskar

Med Azure-hanterade diskar blir disken en resurs på den översta nivån och kräver inte längre att ett lagringskonto skapas av användaren. Hanterade diskar introducerades först i API-versionen 2017-03-30 . I följande avsnitt beskrivs standardinställningarna och hur du ytterligare anpassar diskarna.

Standardinställningar för hanterad disk

Om du vill skapa en virtuell dator med hanterade diskar behöver du inte längre skapa lagringskontoresursen. I mallexemplet nedan finns det några skillnader från föregående ohanterade diskexempel:

  • apiVersion är en version för resurstypen "virtualMachines" som stöder hanterade diskar.
  • osDisk och dataDisks referera inte längre till en specifik URI för den virtuella hårddisken.
  • När du distribuerar utan att ange ytterligare egenskaper använder disken en lagringstyp baserat på storleken på den virtuella datorn. Om du till exempel använder en VM-storlek som stöder Premium Storage (storlekar med "s" i namnet, till exempel Standard_DS2_v2), konfigureras Premium-diskar som standard. Du kan ändra detta genom att använda SKU-inställningen för disken för att ange en lagringstyp.
  • Om inget namn för disken har angetts används formatet <VMName>_OsDisk_1_<randomstring> för för OS-disken och <VMName>_disk<#>_<randomstring> för varje datadisk.
    • Om en virtuell dator skapas från en anpassad avbildning hämtas standardinställningarna för lagringskontotyp och disknamn från diskegenskaperna som definierats i den anpassade avbildningsresursen. Dessa kan åsidosättas genom att ange värden för dessa i mallen.
  • Som standard är diskcachelagring läs-/skrivbehörighet för OS-disken och Ingen för datadiskar.
  • I följande exempel finns det fortfarande ett beroende för lagringskontot, även om detta endast gäller lagring av diagnostik och inte behövs för disklagring:
{
    "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": {...}
    }
}

Använda en hanterad diskresurs på den översta nivån

Som ett alternativ till att ange diskkonfigurationen i objektet för den virtuella datorn kan du skapa en diskresurs på den översta nivån och koppla den som en del av skapandet av den virtuella datorn. Se till att använda 2017-03-30 som resurs-API-version disks . Du kan till exempel skapa en diskresurs på följande sätt för att använda som en datadisk. I det här exemplet vmName används som en del av disknamnet:

{
    "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
    }
}

I VM-objektet refererar du till diskobjektet som ska kopplas. Om du anger resurs-ID:t för den hanterade disk som managedDisk skapats i egenskapen kan du bifoga disken när den virtuella datorn skapas. apiVersion för den virtuella datorresursen är inställd på 2017-12-01. Ett beroende av diskresursen läggs till för att säkerställa att den har skapats innan den virtuella datorn skapas:

{
    "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": {...}
    }
}

Skapa hanterade tillgänglighetsuppsättningar med virtuella datorer med hanterade diskar

Om du vill skapa hanterade tillgänglighetsuppsättningar med virtuella datorer med hanterade diskar lägger du till sku objektet i tillgänglighetsuppsättningsresursen name och anger egenskapen till Aligned. Den här egenskapen säkerställer att diskarna för varje virtuell dator är tillräckligt isolerade från varandra för att undvika enskilda felpunkter. Observera också att resursen apiVersion för tillgänglighetsuppsättningen är inställd på 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"
    }
}

Nästa steg