在 Azure Resource Manager 模板中使用托管磁盘
本文介绍使用 Azure Resource Manager 模板预配虚拟机时托管与非托管磁盘之间的差异。 这有助于将现有模板从使用非托管磁盘更新为使用托管磁盘。 我们将使用 101-vm-simple-windows 模板作为参考指南。 如果想要直接对它们进行比较,可以同时看到使用托管磁盘的模板和以前使用非托管磁盘的版本。
非托管磁盘模板的格式设置
首先,了解如何部署非托管磁盘。 创建非托管磁盘时,需要一个存储帐户用来保留 VHD 文件。 可新建一个存储帐户或使用已存在的帐户。 本文将说明如何新建存储帐户。 为实现此目的,资源块中需要如下所示的存储帐户资源。
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"apiVersion": "2016-01-01",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
在虚拟机对象内,存储帐户上需要具有一个依赖项,确保它创建在虚拟机之前。 随后在 storageProfile 部分中,指定 VHD 位置的完整 URI,用于引用存储帐户并且 OS 磁盘和任何数据磁盘都需要它。
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines",
"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 托管磁盘,磁盘将成为顶级资源,不再需要用户创建存储帐户。 托管磁盘在 2016-04-30-preview API 版本中首次公开,并在所有后续 API 版本中可用,现在是默认磁盘类型。 以下各部分将讲解默认设置,并详细介绍如何进一步自定义磁盘。
Note
建议使用 2016-04-30-preview 以后的 API 版本,因为在 2016-04-30-preview 和 2017-03-30 之间存在重大更改。
默认托管磁盘设置
若要创建带托管磁盘的 VM,无需再创建存储帐户资源,可如下所示更新虚拟机资源。 特别要注意,apiVersion 反映 2017-03-30,并且 osDisk 和 dataDisks 不再为 VHD 引用特定 URI。 如果部署时未指定其他属性,磁盘将使用标准 LRS 存储。 如果未指定任何名称,则 OS 磁盘采用格式 <VMName>_OsDisk_1_<randomstring>,每个数据磁盘采用格式 <VMName>_disk<#>_<randomstring>。 默认情况下,Azure 磁盘加密处于禁用状态;缓存对于 OS 磁盘为“读/写”,对于数据磁盘则为“无”。 你可能会注意到以下示例中仍然存在一个存储帐户依赖项,但这仅用于诊断的存储,磁盘存储并不需要。
{
"apiVersion": "2017-03-30",
"type": "Microsoft.Compute/virtualMachines",
"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",
"name": "[concat(variables('vmName'),'-datadisk1')]",
"apiVersion": "2017-03-30",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": 1023
}
}
随后可在该 VM 对象内引用此要附加的磁盘对象。 创建 VM 时,通过指定在 managedDisk 属性中创建的托管磁盘的资源 ID,允许附加磁盘。 请注意,VM 资源的 apiVersion 设置为 2017-03-30。 另请注意,我们已在磁盘资源上创建了一个依赖项,确保它在创建 VM 之前已成功创建。
{
"apiVersion": "2017-03-30",
"type": "Microsoft.Compute/virtualMachines",
"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": {...}
}
}
通过使用托管磁盘的 VM 创建托管可用性集
若要通过使用托管磁盘的 VM 创建托管可用性集,请将 sku 对象添加到可用性集资源中,并将 name 属性设置为 Aligned。 这可确保每个 VM 的磁盘彼此充分隔离,避免出现单点故障。 另请注意,可用性集资源的 apiVersion 设置为 2017-03-30。
{
"apiVersion": "2017-03-30",
"type": "Microsoft.Compute/availabilitySets",
"location": "[resourceGroup().location]",
"name": "[variables('avSetName')]",
"properties": {
"PlatformUpdateDomainCount": 3,
"PlatformFaultDomainCount": 2
},
"sku": {
"name": "Aligned"
}
}
其他方案和自定义项
若要查找有关 REST API 规范的完整信息,请查看创建托管磁盘 REST API 文档。 该文档介绍了其他方案以及可通过模板部署提交到 API 的默认值和可接受的值。
后续步骤
- 有关使用托管磁盘的完整模板,请访问以下 Azure 快速入门存储库链接。
- 请访问文章 Azure 托管磁盘概述,详细了解托管磁盘。
- 访问文档 Microsoft.Compute/virtualMachines 模板参考,查看虚拟机资源的模板参考文档。
- 访问文档 Microsoft.Compute/disks 模板参考,查看虚拟机资源的模板参考文档。立即访问http://market.azure.cn
在 Azure Resource Manager 模板中使用托管磁盘的更多相关文章
- Azure Resource Manager 概述
应用程序的基础结构通常由许多组件构成:可能有虚拟机.存储帐户和虚拟网络,或 Web 应用.数据库.数据库服务器和第三方服务. 这些组件不会以独立的实体出现,而是以单个实体的相关部件和依赖部件出现. 如 ...
- 在 Azure Resource Manager 中为虚拟机设置密钥保管库
Note Azure 具有两种不同的部署模型,用于创建和处理资源:Resource Manager 模型和经典模型.本文介绍使用 Resource Manager 部署模型.Azure 建议对大多数新 ...
- 为 Azure Resource Manager 中的虚拟机设置 WinRM 访问权限
Azure 服务管理中的 WinRM 与 Azure Resource Manager Note Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典. 本 ...
- 规划将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager
尽管 Azure 资源管理器提供了许多精彩功能,但请务必计划迁移,以确保一切顺利进行. 花时间进行规划可确保执行迁移活动时不会遇到问题. Note 以下指导的主要参与者为 Azure 客户顾问团队,以 ...
- 使用 Azure PowerShell 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager
以下步骤演示了如何使用 Azure PowerShell 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 也可根据需要通过 Az ...
- 平台支持的从经典部署模型到 Azure Resource Manager 的 IaaS 资源迁移
本文介绍如何才能将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Resource Manager 部署模型. 用户可以阅读有关 Azure Resource Manager 功能和优点的更多 ...
- 如何将同一云服务下的虚拟机从经典部署模型迁移到 Azure Resource Manager
适用场景 用户希望将特定云服务下的所有虚拟机从经典部署模型(以下简称:ASM)迁移到 Azure Resource Manager(以下简称:ARM). Note 如果云服务下使用 VNET 也希望将 ...
- 如何将同一 VNET 下的虚拟机从经典部署模型迁移到 Azure Resource Manager
本文内容 适用场景 解决方案 适用场景 用户拥有多个云服务但是在同一个 VNET 下,希望将这些虚拟机从经典部署模型(以下简称:ASM)迁移到 Azure Resource Manager(以下简称: ...
- 有关平台支持的从经典部署模型到 Azure Resource Manager 的迁移的技术深入探讨
本文将深入探讨如何从 Azure 经典部署模型迁移到 Azure Resource Manager 部署模型. 本文将介绍资源和功能级别的资源,让用户了解 Azure 平台如何在两种部署模型之间迁移资 ...
随机推荐
- 记一次sentry部署过程
本文记录下部署sentry和其中遇到的问题 Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node ...
- 金三银四季来了!Java 面试题大放送,能答对70%就去BATJTMD试试~
摘要: 2019,相对往年我们会发现今年猎头电话少了,大部分企业年终奖缩水,加薪幅度也不如往年,选择好offer就要趁早,现在开始准备吧,刷一波Java面试题,能回答70%就去BATJTMD大胆试试~ ...
- 21天打造分布式爬虫-Spider类爬取糗事百科(七)
7.1.糗事百科 安装 pip install pypiwin32 pip install Twisted-18.7.0-cp36-cp36m-win_amd64.whl pip install sc ...
- 3.spring环境搭建
1. 导入jar 1.1 四个核心包一个日志包(commons-logging)
- 122. 买卖股票的最佳时机 II-leetcode
题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必 ...
- paperpass
推荐大家一个靠谱的论文检测平台.重复的部分有详细出处以及具体修改意见,能直接在文章上做修改,全部改完一键下载就搞定了.怕麻烦的话,还能用它自带的降重功能.哦对了,他们现在正在做毕业季活动, 赠送很多免 ...
- ClickHouse之初步认识
最近在Percona的blog上看到一篇文章:Column Store Database Benchmarks: MariaDB ColumnStore vs. Clickhouse vs. Apac ...
- mybatis教程4(动态SQL)
动态SQL语句 MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空 ...
- IS-IS笔记
IS-IS:一般不会见到,唯一见到过一次是在BAT中某家的骨干网 |->CLNP (类似IP,IPX)|->CLNS->|->IS-IS (Routing,IGP)ISO-&g ...
- c++语言的输入输出流库
1.c++语言标准输入输出流 <1>控制符的用法 #include <iostream> #include <iomanip> using namespace st ...