Dela 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 en guide. 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

Börja 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 av 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 behövs för OS-disken och eventuella 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 mallar för hanterade diskar

Med Azure Managed Disks blir disken en resurs på den översta 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.

Kommentar

Vi rekommenderar att du använder en API-version senare än 2016-04-30-preview eftersom det uppstod 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. Om du refererar till mallexemplet nedan finns det vissa 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 premiumdiskar som standard. Du kan ändra detta med hjälp av 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äs/skriv för OS-disken och Ingen för datadiskar.
  • I exemplet nedan finns det fortfarande ett beroende av 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 det virtuella datorobjektet refererar du till diskobjektet som ska kopplas. Om du anger resurs-ID för den hanterade disk som managedDisk skapats i egenskapen kan du bifoga disken när den virtuella datorn skapas. Resursen apiVersion för den virtuella datorn är inställd på 2017-03-30. Ett beroende av diskresursen läggs till för att säkerställa att den skapas 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 hjälp av hanterade diskar

Om du vill skapa hanterade tillgänglighetsuppsättningar med virtuella datorer med hanterade diskar lägger du till sku objektet i resursen för tillgänglighetsuppsättningen 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å 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 Resource Manager-mallen 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 hitta fullständig information om REST API-specifikationerna kan du läsa dokumentationen om rest-API:et för den hanterade disken. Du hittar ytterligare scenarier, samt standardvärden och acceptabla värden som kan skickas till API:et via malldistributioner.

Nästa steg