Share via


Använda diskar i Azure Resource Manager-mallar

Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar ✔️ Enhetliga skalningsuppsättningar

Det här dokumentet går igenom skillnaderna mellan hanterade och ohanterade diskar när du använder Azure Resource Manager-mallar för att etablera virtuella datorer. Exemplen hjälper dig att uppdatera befintliga mallar som använder ohanterade diskar till hanterade diskar. Som referens använder vi mallen vm-simple-windows som vägledning. Du kan se mallen med både hanterade diskar och en tidigare version med ohanterade diskar om du vill jämföra dem direkt.

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. Den här artikeln visar hur du skapar ett nytt lagringskonto. Skapa en lagringskontoresurs i resursblocket enligt nedan.

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

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.

{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2018-10-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 Managed Disks blir disken en resurs på den högsta nivån och kräver inte längre att ett lagringskonto skapas av användaren. Hanterade diskar exponerades först i 2016-04-30-preview API-versionen, de är tillgängliga i alla efterföljande API-versioner och är nu standarddisktypen. I följande avsnitt går vi igenom standardinställningarna och beskriver hur du ytterligare anpassar diskarna.

Anteckning

Vi rekommenderar att du använder en API-version senare än 2016-04-30-preview eftersom det skedde icke-bakåtkompatibla ändringar mellan 2016-04-30-preview och 2017-03-30.

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 jämfört med tidigare ohanterade diskexempel att notera:

  • apiVersion är en version 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 premiumlagring (storlekar med "s" i namnet, till exempel Standard_D2s_v3) 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 Azure-diskkryptering inaktiverat.
  • Som standard är diskcachelagring läsning/skrivning för OS-disken och Ingen för datadiskar.
  • I exemplet nedan 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": "2018-10-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. Du kan till exempel skapa en diskresurs på följande sätt för att använda som en datadisk.

{
    "type": "Microsoft.Compute/disks",
    "apiVersion": "2018-06-01",
    "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 skapades i egenskapen kan du bifoga disken när den virtuella datorn skapas. apiVersion för den virtuella datorresursen är inställd på 2017-03-30. 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": "2018-10-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 apiVersion för tillgänglighetsuppsättningsresursen är inställd på 2018-10-01.

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

Standard SSD-diskar

Nedan visas de parametrar som behövs i mallen Resource Manager för att skapa Standard SSD-diskar:

  • apiVersion för Microsoft.Compute måste anges som 2018-04-01 (eller senare)
  • Ange managedDisk.storageAccountType som StandardSSD_LRS

I följande exempel visas avsnittet properties.storageProfile.osDisk för en virtuell dator som använder Standard SSD-diskar:

"osDisk": {
    "osType": "Windows",
    "name": "myOsDisk",
    "caching": "ReadWrite",
    "createOption": "FromImage",
    "managedDisk": {
        "storageAccountType": "StandardSSD_LRS"
    }
}

Ett fullständigt mallexempel på hur du skapar en Standard SSD-disk med en mall finns i Skapa en virtuell dator från en Windows-avbildning med Standard SSD-datadiskar.

Ytterligare scenarier och anpassningar

Om du vill ha fullständig information om REST API-specifikationerna kan du läsa rest-API-dokumentationen för att skapa en hanterad disk. Du hittar ytterligare scenarier, samt standardvärden och acceptabla värden som kan skickas till API:et via malldistributioner.

Nästa steg