有一些用户在刚开始的时候创建了A7, D14等虚拟机来跑一些IO要求比较高的应用,比如Oracle数据库,MySQL数据库,等到用户量上来之后,性能不够,需要升级数据磁盘到SSD固态硬盘,但是问题是:
- <李>
Azure的固态硬盘SSD磁盘属于高级存储高端存储
李> <李>一系列,D系列的虚拟机无法使用高级存储作为数据磁盘
李> <李>只有DS, DSv2, GS系列的虚拟机才可以使用SSD作为数据磁盘
李> <李>一系列,D系列虚拟机无法直接升级为DS/GS系列
李> <李>GS系列暂时在中国没有上线
李>那么在这种情况下,除了创建高级存储账号,重新创建DS系列的虚拟机,导数据库的数据从头再来之外,有没有别的办法?答案是肯定的,你可以根据如下步骤完成虚拟机的迁移:
- <李>
根据你现在的VM大小,选择你要创建的DS, DSv2的虚拟机大小
李> <李>创建高级存储账号,目前中国北京和上海的高级存储都已经可用了
李> <李>停止当前VM,拷贝当前虚拟机的系统VHD,数据VHS到高级存储账号
李> <李>利用拷贝完成的VHD创建系统盘
李> <李>利用系统磁盘创建DS, DSv2系列的虚拟机
李> <李>挂载数据磁盘,检查数据完整性
李> <李>重新创建端点信息,测试服务启动和连通性
李>上述这些步骤比较复杂,也容易出错,因此上我创建了一个虚拟机迁移脚本,这个脚本可以在同一个订阅的不同vnet之间,不同云服务之间,不同存储账号之间,不同的订阅之间,不同的虚拟机类型之间进行迁移,脚本我已经放在了github上,请前往如下地址下载:https://github.com/kingliantop/azurelabs/blob/master/vm/VMCopy.ps1
本文介绍如何使用该脚本进行不同类型虚拟机之间的迁移:
- <李>
首先在Azure上创建一台Windows Server 2012的虚拟机,作为迁移虚拟机运行迁移工具,虚拟机尺寸尽量选择大一些的,比如A7,主要是azcopy的执行性能和虚拟机的核数会有关系
李> <李>在虚拟机的D盘(D盘是临时磁盘,重要数据不要放在上面,本例只是做临时迁移使用)创建一个目录,叫migvm
李> <李>安装对应版本的Azure Powershell,在本测试中,请安装0.9.8版本,这个脚本目前是用ASM模式运作的,暂时不支持手臂,后续版本会支持:
李>Powershell 0.9.8 https://github.com/Azure/azure-powershell/releases?after=v1.0.0-preview-gallery-October2015
4。安装最新版本的azcopy,下载连接如下,请将azcopy安装在d: \ migvm下:
azcopy最新版本:
http://aka。/女士downloadazcopy
,
5。下载Github上的VMcopy。ps1,放在D: \ migvm目录下,
6。利用Azure上的新门户,或者powershell,创建高级存储,目前国内的新门户经过测试可以成功创建高级存储:
,
或者通过powershell创建:
,
,
7。在本测试中,源虚拟机是一台A3的Linux虚拟机,有一块数据磁盘:
8。收集当前需要迁移的源VM的相关信息:
- <李>
云服务名称(云服务名称)
李> <李>虚拟机名称(VM)
李> <李>当前订阅ID
李> <李>目标订阅ID(<强>可不写,默认和源订阅一致,即同一个订阅强>)
李> <李>目标云服务名称(<强>云服务名称必须唯一强>)
李> <李>源存储容器名称(可不写,<强>默认是vhd 强>)
李> <李>目标存储名称(你创建的高级存储名称)
李> <李>目标存储容器名称(可不写,<强>默认vhd 强>)
李> <李>目标虚拟网络名称
李> <李>目标地区名称(可不写,<强>默认值中国东部强>)
李> <李>虚拟网络子网名称(可不写,<强>默认值Subnet-1 强>)
李>注意事项和说明:
- <李>
可以看的到,为了大家使用方便,大部分的值如果你不写,我都会有默认值,但你必须非常清楚自己的环境
李> <李>虚拟机在迁移过程中会停机,如果当前不是停机状态,脚本会经你确认后停机
李> <李>迁移完成后,源虚拟机不会有任何变化,只是拷贝了一份源虚拟机到目标存储和服务
李> <李>为了避免在同一个订阅下创建磁盘报错,默认情况下会给磁盘加一个后缀“cp”,避免重复