有一些用户在刚开始的时候创建了A7,D14等虚拟机来跑一些IO要求比较高的应用,比如Oracle数据库,MySQL数据库,等到用户量上来之后,性能不够,需要升级数据磁盘到SSD固态硬盘,但是问题是:

  • Azure的固态硬盘SSD磁盘属于高级存储Premium Storage
  • A系列,D系列的虚拟机无法使用高级存储作为数据磁盘
  • 只有DS,DSv2,GS系列的虚拟机才可以使用SSD作为数据磁盘
  • A系列,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

本文介绍如何使用该脚本进行不同类型虚拟机之间的迁移:

  1. 首先在Azure上创建一台Windows Server 2012的虚拟机,作为迁移虚拟机运行迁移工具,虚拟机尺寸尽量选择大一些的,比如A7,主要是azcopy的执行性能和虚拟机的核数会有关系
  2. 在虚拟机的D盘(D盘是临时磁盘,重要数据不要放在上面,本例只是做临时迁移使用)创建一个目录,叫migvm
  3. 安装对应版本的Azure Powershell,在本测试中,请安装0.9.8版本,这个脚本目前是用ASM模式运作的,暂时不支持ARM,后续版本会支持:

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.ms/downloadazcopy

5. 下载Github上的VMcopy.ps1, 放在D:\migvm目录下

6. 利用Azure上的新portal,或者powershell,创建高级存储,目前国内的新portal经过测试可以成功创建高级存储:

或者通过Powershell创建:

New-AzureStorageAccount -StorageAccountName "mypremstorage" -Location "China North" -Type "Premium_LRS"

7. 在本测试中,源虚拟机是一台A3的Linux虚拟机,有一块数据磁盘:

8. 收集当前需要迁移的源VM的相关信息:

  • 云服务名称(Cloud Service name)
  • 虚拟机名称(VM name)
  • 当前订阅ID
  • 目标订阅ID(可不写,默认和源订阅一致,即同一个订阅
  • 目标云服务名称(云服务名称必须唯一
  • 源存储容器名称(可不写,默认是vhds
  • 目标存储名称(你创建的高级存储名称)
  • 目标存储容器名称(可不写,默认vhds
  • 目标虚拟网络名称
  • 目标region名称(可不写,默认值China East
  • 虚拟网络子网名称(可不写,默认值Subnet-1

注意事项和说明:

  • 可以看到,为了大家使用方便,大部分的值如果你不写,我都会有默认值,但你必须非常清楚自己的环境
  • 虚拟机在迁移过程中会停机,如果当前不是停机状态,脚本会经你确认后停机
  • 迁移完成后,源虚拟机不会有任何变化,只是拷贝了一份源虚拟机到目标存储和服务
  • 为了避免在同一个订阅下创建磁盘报错,默认情况下会给磁盘加一个后缀"cp",避免重复
  • 脚本的使用方法如下:

    .\VMCopy.ps1 -SourceSubscriptionId SubID

    -DestSubscritpionId DesSubID

    -SourceCloudServiceName "mycs"

    -SourceVMName "myvm"

    -DestCloudServiceName "descs"

    -DestStorageAccountName "destorage"

    -DestLocationName "China East"

    -DestVNetName "myvnet"

    -DestSubNet "desubnet"

    -DestSuffix "new"

9. 登入你的迁移工具虚拟机,打开Azure Powershell,添加源订阅账号和目标订阅账号:

Add-AzureAccount -Environment AzureChinacloud

10. 在Powershell里面,执行迁移脚本进行迁移,例如:

PS D:\migratevm> .\VMCopy.ps1 -SourceSubscriptionId IDXXX -DestSubscritpionId IDXXXX -SourceCloudServiceName mydockermaster -SourceVMName mydockermaster -DestCloudServiceName mydo

ckermasterds -DestStorageAccountName myxiostorage -SourceStorageContainerName vhds -DestStorageContainerName vhds -DestVNetName mydsvmnet -DestLocationName "China North"

待续。。

Azure上A/D系列虚拟机到DS系列迁移(1)的更多相关文章

  1. Azure上A/D系列虚拟机到DS系列迁移(2)

    11. 该脚本会检测环境,停止虚拟机,拷贝VHD文件,创建磁盘等等,知道出现如下类似画面,他会暂停等待用户操作: 后面这几个步骤非常重要,关系到你后续的创建是否成功: 12. 进入D:\migvm目录 ...

  2. 连接到 Azure 上的 SQL Server 虚拟机(经典部署)

    概述 本主题介绍如何连接到运行于 Azure 虚拟机的 SQL Server 实例. 它介绍了一些常规连接方案,并提供了在 Azure VM 中配置 SQL Server 连接的详细步骤. Impor ...

  3. Azure上的几个坑

    此文用于记录在使用Azure中国版时遇到的一些“坑”. 1.虚拟机备份/还原 在某些场景中,使用备份/还原功能来创建(克隆)虚拟机比使用capture的image要方便很多.虚拟机备份后,执行还原操作 ...

  4. Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM

    <Windows Azure Platform 系列文章目录> Update: 2016-11-3,如果大家在使用Linux VM,使用FIO进行IOPS测试的时候,请使用以下命令: su ...

  5. Microsoft Azure News(4) Azure新D系列虚拟机上线

    <Windows Azure Platform 系列文章目录> Update 2016-05-07 注意事项: Azure的数据中心建设是有先后顺序的,最早是落地了A系列的虚拟机,然后是D ...

  6. Microsoft Azure News(6) Azure新F系列虚拟机

    <Windows Azure Platform 系列文章目录> 我们知道Azure虚拟机的CPU和内存是固定搭配的,不可以按照用户的想法随意更改. 在有些时候,我们需要虚拟机CPU核心数量 ...

  7. Microsoft Azure News(5) Azure新DV2系列虚拟机上线

    <Windows Azure Platform 系列文章目录> 在之前的文章中,笔者了Azure VM虚拟机,分为A系列和D系列2种 Microsoft Azure News(4) Azu ...

  8. Microsoft Azure News(7) Azure B系列虚拟机

    <Windows Azure Platform 系列文章目录> 最近微软Azure新数据中心上线了B系列的虚拟机,我这边研究了一下,给大家分享. Azure B系列虚拟机,其实是Burst ...

  9. 在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像

     发布于 2014-12-11 作者 陈阳 FreeBSD 基础镜像现已登陆中国的 VM Depot! 对于青睐 BSD 而非 Linux 的开源爱好者来说,这无疑是个好消息.同时,随着该基础镜像 ...

随机推荐

  1. Linux中重命名文件

    linux下重命名文件有两种方式: 1.较简单的处理命令:mv mv 原文件名 新文件名 如:mv myFile newName 将MyFile重命名为newName. 2.linux提供了一个重命名 ...

  2. android 退出方案 导致内存泄露

    比较奇怪android没有给出一个统一的退出接口,网上查了很多材料也出现了一些错误,在此记录一下,遇到的,与总结的. 1.常见概念,方法 finish() 通知结束当前activity实例,finis ...

  3. 【转】ios开发之生成所缩略图方式

    亲测:两种方式都有效 第一种方式:缩略成固定的尺寸大小 - (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSiz ...

  4. 画图工具Graphviz安装配置

    Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形.它也提供了供其它软件使用的库 ...

  5. QT5.1.0,QT4.8.0以及VC2010、VC2012的测试对比

    QT5.1.0,QT4.8.0以及VC2010.VC2012的交叉测试对比. 测试1: 用VC2012静态编译了QT5.1.0. 编译速度很慢,生成完成后,用VC2012+QT5.1.0进行程序生成, ...

  6. C++的构造函数总结

    构造函数是C++的一个很基础的知识点,在平时编程的时候,相信大家都很熟悉,虽然比较基础,但是细究下来,还是有不少细节需要注意.这篇文章主要总结C++构造函数需要注意一些细节,一方面,可以帮助下大家巩固 ...

  7. JUnit三分钟教程 ---- 快速起步

    JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...

  8. handsontable的核心方法

    1.为handsontable添加钩子方法 addHook(key,callback):key为钩子方法名 <span style="font-size:18px;"> ...

  9. MyCat部署运行(Windows环境)与使用步骤详解

        目录(?)[+] 1.MyCat概念 1.1 总体架构 MyCAT的架构如下图所示: MyCAT使用MySQL的通讯协议模拟成一个MySQL服务器,并建立了完整的Schema(数据库).Tab ...

  10. struts2——配置struts.xml文件

    在struts2框架中struts.xml是应当放到src的根目录,程序编译后会将struts.xml放到WEB-INF/classes目录下. Struts2在web.xml中的一般配置如下: &l ...