Azure ARM (13) 从现有VHD文件,创建新的ARM VM
《Windows Azure Platform 系列文章目录》
本文参考了Git Hub的ARM Template:
但是Git Hub上的Template不包含Availability Set
笔者修改了这个Template,可以设置高可用集Availability Set:
https://github.com/leizhang1984/AzureChinaPowerShell/tree/master/ARM/VMSpecializedVHD
在很多时候,我们需要从Classic VM的操作系统盘的VHD文件,创建新的ARM VM。
这里的关键步骤如下:
1.创建Classic VM,并获得OS Disk的VHD路径
2.通过ARM Portal: https://portal.azure.cn,创建新的
- Azure ARM Resource Group
- ARM Storage Account
- ARM Virtual Network和Subnet
3.如果Classic VM是开机状态,请用AzCopy工具,把OS Disk和Data Disk的VHD文件,拷贝到同一个存储账号(Classic Storage)的不同Container下。
然后把VHD从Classic Storage Account,拷贝到ARM Storage Account
4.如果Classic VM是关机状态,请直接用AzCopy工具,把OS Disk和Data Disk的VHD文件,拷贝到ARM Storage Account里
5.运行Azure PowerShell,执行Template Deployment
接下来开始本节的内容
1.首先我们在ASM模式下(https://manage.windowsazure.cn),创建新的Azure Classic VM。步骤略。
2.查看这个Classic VM的OS Disk和Data Disk,如下图红色部分:

3.通过ARM Portal: https://portal.azure.cn,创建新的
- Azure ARM Resource Group
- ARM Storage Account
- ARM Virtual Network和Subnet
4.为了方便拷贝VHD,我们先把虚拟机关机。(注意关机前请先绑定固定VIP和内网DIP)
5.使用AzCopy工具,把OS Disk和Data Disk的VHD文件,拷贝到ARM Storage Account里。图略。
6.拷贝完毕后,我们需要修改相应的ARM Template
https://github.com/leizhang1984/AzureChinaPowerShell/tree/master/ARM/VMSpecializedVHD
7.Git Hub中的azuredeploy.json,不需要修改
8.Git Hub中的azuredeploy.parameters.json,进行以下修改:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dnsNameForPublicIP": {
//必须为小写
"value": "leiarmvmpublicip"
},
"existingVirtualNetworkName": {
//虚拟网络名称,手动预选创建好
"value": "LeiARMVNet"
},
"existingVirtualNetworkResourceGroup": {
//ARM模式下,Resource Group名称
"value": "LeiARMRG"
},
"subnetName": {
//ARM 模式下,虚拟网络子网名称
"value": "subnet-1"
},
"osDiskVhdUri": {
//操作系统的VHD文件
"value": "https://leiarmstorage.blob.core.chinacloudapi.cn/vhds/LeiASMWeb01-LeiASMWeb01-2017-03-27.vhd"
},
"vmName": {
//虚拟机名称
"value": "LeiARMVMWeb01"
},
"osType": {
//操作系统类型
"value": "Windows"
},
"vmSize": {
//虚拟机实例大小
"value": "Standard_D1_V2"
},
"diagStorageAccountName":{
//diag 用的Storage Account Name,必须为小写
//可以与osDiskVhdUri所在的Storage Account Name相同
"value": "leiarmstoragediag"
},
"availabilitySetName":{
//高可用集名称
"value": "Web-AvbSet"
}
}
}
10.运行Azure PowerShell,进行验证:
#Login Azure China Cloud
Add-AzureRmAccount -EnvironmentName AzureChinaCloud; # 选择Azure China 订阅ID
Select-AzureRmSubscription -SubscriptionID '[订阅ID]' #执行Azure Deploy
New-AzureRmResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName LeiARMRG -Mode Incremental -TemplateFile 'D:\vmforuserimage\azuredeploy.json' -TemplateParameterFile 'D:\vmforuserimage\azuredeploy.parameters.json'
11.执行完毕后,会进行ARM Storage Account的VHD文件,新建新的ARM VM中。如下:

Azure ARM (13) 从现有VHD文件,创建新的ARM VM的更多相关文章
- Azure ARM (15) 根据现有VHD文件,创建ARM VM
<Windows Azure Platform 系列文章目录> 在很多时候,我们需要根据现有VHD文件,创建ARM VM.在这里笔者简单介绍一下相关的Azure PowerShell 这里 ...
- 手动将经典 VM 从 VHD 迁移到新的 ARM 托管磁盘 VM
本部分有助于将现有 Azure VM 从经典部署模型迁移到资源管理器部署模型中的托管磁盘. 计划迁移到托管磁盘 本部分可帮助你针对 VM 和磁盘类型做出最佳决策. 位置 选取 Azure 托管磁盘可用 ...
- 使用 Azure CLI 2.0 从自定义磁盘创建 Linux VM
本文说明如何在 Azure 中上传自定义的虚拟硬盘 (VHD) 或复制现有 VHD,并从自定义磁盘创建 Linux 虚拟机 (VM). 可以根据要求安装并配置 Linux 分发版,并使用该 VHD 快 ...
- Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM
<Windows Azure Platform 系列文章目录> Update: 2016-11-3,如果大家在使用Linux VM,使用FIO进行IOPS测试的时候,请使用以下命令: su ...
- ARM 环境下使用azure powershell 从远程blob中拉去vhd 并创建虚拟机
最近需要从指定公共访问的blob中复制vhd到自己的订阅存储账户,并使用vhd创建AZURE ARM虚拟机(非经典版),而且在portal.azure.cn中无法实现虚拟机映像创建等功能,于是自己使用 ...
- 上传通用化 VHD 并使用它在 Azure 中创建新 VM
本主题逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure.从该 VHD 创建映像,然后从该映像创建新 VM. 可以上传从本地虚拟化工具或其他云导出的 VHD. 对新 ...
- 关于Azure存储账户中存储虚拟机VHD文件的注意事项
Joy Qiao from MSFT Thu, Mar 12 2015 3:16 PM 我们在使用Azure时经常都会在Azure存储账户中放一些文件,包括Azure虚机的VHD文件也都是放在存储 ...
- 系统重装 WIN7如何创建和使用VHD文件
1 在磁盘管理中,点击操作-创建VHD,然后可以创建一个空的VHD文件 2 右击这个磁盘,点击初始化磁盘,然后可以新建简单卷 3 右击这个磁盘,设置为脱机或者联机就可以在计算机中显示和隐藏这个 ...
- 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的source文件种类. 众所周知,嵌入式开发属于偏底层的开发,主要编程语言是C和汇编.所以本文要讲的source文件主要指的就 ...
随机推荐
- Mysql常用表操作 | 单表查询
160905 常用表操作 1. mysql -u root -p 回车 输入密码 2. 显示数据库列表 show databases 3. 进入某数据库 use database data ...
- 下载判断Android和iOS
//下载 function down(){ var url = ''; var u = navigator.userAgent, app = navigator.appVersion; var isA ...
- 总结Objective-c常用算法
今天是星期天,想睡到10点起床,结果认为自己太奢侈了,不能这么做,于是把闹钟设置成了6:30:结果终于9:36醒了,起床,无缘无故迟了,好吧,就算太累了吧,周天就原谅自己一回.终于到了中午 ...
- ORA-01861: 文字与格式字符串不匹配
问题:插入数据不成功 解决:借口实现类里面的sql语句带值放到数据库中运行,如果不成功是sql语句的错误.
- MYSQL INNODB PAGE一督
MYSQL INNODB PAGE一督
- 通过一组RESTful API暴露CQRS系统功能
命令和查询责任分离(CQRS)是由Greg Young提出的一种将系统的读(查询).写(命令)操作分离为两种独立子系统的架构模式.命令通常是异步执行的,并存储在一个事务型数据库中,而读操作则通常是最终 ...
- 思维导图FreeMind
什么是MindMap? MindMap(被译成思维导图或心智图)是一种思维工具,由英国的记忆之父托尼-博赞发明. MindMap是一种新的思维模式,它将左脑的逻辑.顺序.条例.文字.数字,以及右脑的图 ...
- TaintDroid剖析之IPC级污点传播
TaintDroid剖析之IPC级污点传播 作者:简行.走位@阿里聚安全 前言 在前三篇文章中我们详细分析了TaintDroid对DVM栈帧的修改,以及它是如何在修改之后的栈帧中实现DVM变量级污点跟 ...
- 一步步学习javascript基础篇(1):基本概念
一.数据类型 数据类型 基本数据类型(五种) Undefined Null Boolean Number String 复杂数据类型(一种) Object Undefined:只有一个值undefin ...
- ABP理论学习之仓储
返回总目录 本篇目录 IRepository接口 查询 插入 更新 删除 其他 关于异步方法 仓储实现 管理数据库连接 仓储的生命周期 仓储最佳实践 Martin Fowler对仓储的定义 位于领域层 ...