استخدام الأقراص في قوالب Azure Resource Manager

ينطبق على: ✔️ أجهزة ظاهرية بنظام التشغيل Linux ✔️ أجهزة ظاهرية بنظام التشغيل Windows ✔️ مجموعات التوسعة المرنة ✔️ مجموعات التوسعة الموحدة

يستعرض هذا المستند الاختلافات بين الأقراص المُدارة والأقراص غير المُدارة عند استخدام قوالب Azure Resource Manager لتوفير الأجهزة الظاهرية. تساعدك الأمثلة على تحديث القوالب الموجودة التي تستخدم الأقراص غير المدارة إلى الأقراص المدارة. كمرجع، نحن نستخدم قالب vm-simple-windows كدليل. يمكنك رؤية القالب باستخدام كل من managed Disks والإصدار السابق باستخدام unmanaged disks إذا كنت ترغب في مقارنتها مباشرة.

تنسيق قالب الأقراص غير المدارة

للبدء، دعونا نلقي نظرة على كيفية نشر الأقراص غير المدارة. عند إنشاء أقراص غير مدارة، تحتاج إلى حساب تخزين للاحتفاظ بملفات VHD. يمكنك إنشاء حساب تخزين جديد أو استخدام حساب موجود بالفعل. توضح هذه المقالة كيفية إنشاء حساب تخزين جديد. أنشئ مورد حساب تخزين في كتلة الموارد كما هو موضح أدناه.

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

داخل كائن الجهاز الظاهري، أضف تبعية على حساب التخزين للتأكد من أنه تم إنشاؤه قبل الجهاز الظاهري. ضمن storageProfile المقطع، حدد URI الكامل لموقع VHD، والذي يشير إلى حساب التخزين وهو مطلوب لقرص نظام التشغيل وأي أقراص بيانات.

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

تنسيق قالب الأقراص المدارة

باستخدام Azure Managed Disks، يصبح القرص موردًا من المستوى الأعلى ولم يعد يتطلب إنشاء حساب تخزين من قبل المستخدم. تم الكشف عن الأقراص المدارة أولاً في 2016-04-30-preview إصدار API، وهي متوفرة في كافة إصدارات API اللاحقة وهي الآن نوع القرص الافتراضي. تتصفح الأقسام التالية الإعدادات الافتراضية وتفاصيل كيفية تخصيص الأقراص بشكل أكبر.

إشعار

يوصى باستخدام إصدار API في وقت لاحق من 2016-04-30-preview حيث وجود تغييرات فاصلة بين 2016-04-30-preview و 2017-03-30.

إعدادات القرص المدارة الافتراضية

لإنشاء جهاز ظاهري مع أقراص مدارة، لم تعد بحاجة إلى إنشاء مورد حساب التخزين. بالرجوع إلى مثال القالب أدناه، هناك بعض الاختلافات من أمثلة القرص غير مدارة السابقة إلى ملاحظة:

  • هذا apiVersion هو الإصدار الذي يدعم الأقراص المدارة.
  • osDisk و dataDisks لم تعد تشير إلى عنوان URI محدد لـ VHD.
  • عند النشر بدون تحديد خصائص إضافية، سيستخدم القرص نوع تخزين استنادًا على حجم الجهاز الظاهري. على سبيل المثال، إذا كنت تستخدم حجم VM يدعم التخزين المتميز (الأحجام مع "s" في اسمها مثل Standard_D2s_v3)، فسيتم تكوين الأقراص المتميزة افتراضيًا. يمكنك تغيير هذا باستخدام إعداد sku للقرص لتحديد نوع تخزين.
  • إذا لم يتم تحديد اسم للقرص، فإنه يأخذ تنسيق <VMName>_OsDisk_1_<randomstring> قرص نظام التشغيل ولكل <VMName>_disk<#>_<randomstring> قرص بيانات.
    • إذا كان يتم إنشاء جهاز ظاهري من صورة مخصصة، استرداد الإعدادات الافتراضية لنوع حساب التخزين واسم القرص من خصائص القرص المحددة في مورد الصورة المخصص. يمكن تجاوزها عن طريق تحديد قيم لها في القالب.
  • بشكل افتراضي، يتم تعطيل تشفير قرص Azure.
  • بشكل افتراضي، التخزين المؤقت للقرص هو قراءة/كتابة لقرص نظام التشغيل ولا شيء لأقراص البيانات.
  • في المثال أدناه، لا يزال هناك تبعية لحساب التخزين، على الرغم من أن هذا مخصص فقط لتخزين التشخيصات وليس ضروريًا لتخزين القرص.
{
    "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": {...}
    }
}

استخدام مورد قرص مدار من المستوى الأعلى

كبديل لتحديد تكوين القرص في كائن الجهاز الظاهري، يمكنك إنشاء مورد قرص من المستوى الأعلى وإرفاقه كجزء من إنشاء الجهاز الظاهري. على سبيل المثال، يمكنك إنشاء مورد قرص على النحو التالي لاستخدامه كقرص بيانات.

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

داخل كائن الجهاز الظاهري، قم بالرجوع إلى كائن القرص المراد إرفاقه. يسمح تحديد معرف المورد للقرص المدار الذي تم إنشاؤه في managedDisk الخاصية بإرفاق القرص أثناء إنشاء الجهاز الظاهري. يتم apiVersion تعيين مورد الجهاز الظاهري إلى 2017-03-30. تتم إضافة اعتماد على مورد القرص لضمان إنشائه بنجاح قبل إنشاء الجهاز الظاهري.

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

إنشاء مجموعات توفر مدارة باستخدام الأجهزة الظاهرية باستخدام الأقراص المدارة

لإنشاء مجموعات توفر مدارة باستخدام الأجهزة الظاهرية باستخدام الأقراص المدارة، أضف sku الكائن إلى مورد مجموعة التوفر واضبط name الخاصية على Aligned. تضمن هذه الخاصية عزل الأقراص الخاصة بكل جهاز ظاهري بشكل كاف عن بعضها البعض لتجنب نقاط الفشل الفردية. لاحظ أيضًا أنه apiVersion تم تعيين مورد مجموعة التوفر إلى 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"
    }
}

أقراص SSD القياسية

فيما يلي المعلمات المطلوبة في قالب Resource Manager لإنشاء أقراص SSD قياسية:

  • يجب تعيين apiVersion لـ Microsoft.Compute على أنه 2018-04-01 (أو أحدث)
  • حدد managedDisk.storageAccountType ك StandardSSD_LRS

يوضح المثال التالي المقطع properties.storageProfile.osDisk لجهاز ظاهري يستخدم أقراص SSD القياسية:

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

للحصول على مثال قالب كامل حول كيفية إنشاء قرص SSD قياسي باستخدام قالب، راجع إنشاء جهاز ظاهري من صورة Windows باستخدام أقراص بيانات SSD قياسية.

سيناريوهات وتخصيصات إضافية

للعثور على معلومات كاملة حول مواصفات واجهة برمجة تطبيقات REST، يرجى مراجعة وثائق إنشاء واجهة برمجة تطبيقات REST للقرص المدار. ستجد سيناريوهات إضافية، بالإضافة إلى القيم الافتراضية والمقبولة التي يمكن إرسالها إلى واجهة برمجة التطبيقات من خلال عمليات نشر القوالب.

الخطوات التالية