Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
2026 年 3 月 31 日,非托管磁盘即将停用。 如果使用非托管磁盘,请在该日期之前迁移到托管磁盘。 有关退役的详细信息,请参阅 在 2026 年 3 月 31 日之前迁移您的 Azure 非托管磁盘。
本文档介绍使用Azure Resource Manager模板预配virtual machines时托管和非托管磁盘之间的差异。 这些示例可帮助你将使用非托管磁盘的现有模板更新为使用托管磁盘。 为了参考,我们将 vm-simple-windows 模板用作指南。 您可以查看同时使用 托管磁盘 和使用 非托管磁盘 的模板早期版本,以便直接对它们进行比较。
非托管磁盘模板的格式
在开始之前,我们先了解一下非托管磁盘的部署方式。 创建非托管磁盘时,你需要一个存储帐户来保存 VHD 文件。 可以创建新的存储账号或是使用已存在的账号。 本文介绍如何创建新的storage帐户。 在资源块中创建存储账户资源,如下所示。
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2018-07-01",
"name": "[variables('storageAccountName')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
在虚拟机对象中,添加对存储帐户的依赖项,以确保它在虚拟机之前创建。 在 storageProfile 节中,指定 VHD 位置的完整 URI,此 URI 引用存储帐户,用于 OS 磁盘和任何数据磁盘。
{
"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,磁盘将成为顶级资源,不再需要用户创建storage帐户。 Managed disks首次在 2016-04-30-preview API 版本中公开,它们在所有后续 API 版本中均可用,现在是默认磁盘类型。 以下部分逐步讲解默认设置,并详细说明如何进一步自定义磁盘。
注释
建议使用 2016-04-30-preview 以后的 API 版本,因为在 2016-04-30-preview 和 2017-03-30 之间存在重大更改。
默认的托管磁盘设置
要创建使用托管磁盘的虚拟机,你不再需要创建存储帐户资源。 请参考下面的模板示例,需要注意,这与前面的非托管磁盘示例有些不同:
-
apiVersion是支持托管磁盘的版本。 -
osDisk和dataDisks不再引用 VHD 的特定 URI。 - 在不指定其他属性的情况下进行部署时,磁盘将使用基于 VM 大小的存储类型。 例如,如果您使用的 VM 大小支持高级存储(例如名称中带有“s”的大小,如 Standard_D2s_v3),那么将默认配置高级磁盘。 可以通过使用磁盘的 SKU 设置来指定存储类型,从而更改此项。
- 如果没有为磁盘指定名称,则 OS 磁盘采用格式
<VMName>_OsDisk_1_<randomstring>,每个数据磁盘采用格式<VMName>_disk<#>_<randomstring>。- 如果要从自定义映像创建 VM,则会从自定义映像资源中定义的磁盘属性中检索storage帐户类型和磁盘名称的默认设置。 可以通过在模板中指定这些值来替代它们。
- 默认情况下,Azure disk encryption处于禁用状态。
- 默认情况下,缓存对于 OS 磁盘为“读/写”,对于数据磁盘则为“无”。
- 在下面的示例中,仍然存在存储帐户依赖项,不过这只是用于诊断存储,不需要用于磁盘存储。
{
"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
}
}
在 VM 对象中,引用要附加的磁盘对象。 指定在 managedDisk 属性中创建的托管磁盘的资源 ID 可以在创建 VM 时附加该磁盘。 该 VM 资源的 apiVersion 设置为 2017-03-30。 在磁盘资源中添加了一个依赖项,以确保在创建 VM 之前成功创建该磁盘资源。
{
"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": {...}
}
}
使用托管磁盘创建托管虚拟机的可用性集
若要使用托管磁盘(managed disks)创建具有 VM 的托管可用性集,请将 sku 对象添加到可用性集资源,并将 name 属性设置为 Aligned。 该属性可确保每个 VM 的磁盘彼此充分隔离,避免发生单点故障。 另请注意,可用性集资源的 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
下面是创建标准 SSD 所需的资源管理器模板中的参数:
- Microsoft.Compute 的 apiVersion 必须设置为
2018-04-01(或更高) - 将 managedDisk.storageAccountType 指定为
以下示例显示了使用标准 SSD 的 VM 的 properties.storageProfile.osDisk 部分:
"osDisk": {
"osType": "Windows",
"name": "myOsDisk",
"caching": "ReadWrite",
"createOption": "FromImage",
"managedDisk": {
"storageAccountType": "StandardSSD_LRS"
}
}
有关如何使用模板创建标准 SSD 的完整模板示例,请参阅 使用标准 SSD 数据磁盘从 Windows 映像创建 VM。
其他方案和自定义
若要查找有关 REST API 规范的完整信息,请查看有关创建托管磁盘 REST API 的文档, 其中介绍了其他方案,以及可以通过模板部署提交到 API 的默认值和可接受值。
后续步骤
- 有关使用托管磁盘的完整模板,请访问以下 Azure 快速入门存储库链接。
- 具有托管磁盘的 Windows VM
- 具有托管磁盘的 Linux VM
- 请访问 Azure Managed Disks 概述文档了解有关managed disks的详细信息。
- 请访问 Microsoft.Compute/virtualMachines 模板参考文档文档,查看虚拟机资源的模板参考文档。
- 请访问 Microsoft.Compute/disks 模板参考文档文档,查看磁盘资源的模板参考文档。
- 有关如何在 Azure 虚拟机规模集中使用托管磁盘的信息,请访问 使用虚拟机规模集的数据磁盘文档。