有一些用户在刚开始的时候创建了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. Effective Java2读书笔记-对于所有对象都通用的方法(三)

    第12条:考虑实现Comparable接口 这一条非常简单.就是说,如果类实现了Comparable接口,覆盖comparaTo方法. 就可以使用Arrays.sort(a)对数组a进行排序. 它与e ...

  2. java 将GBK编码文件转为UTF-8编码

    需要commons-io-2.0.1.jar public class Test { public static void main(String args[]) throws IOException ...

  3. 关于Fragment与Activity的想法

    View,Fragment,Activity,ListView等都会涉及到Layout文件 不要从Layout来考虑,而是从Activity,Fragment,来考虑,Layout只是他们的一个属性 ...

  4. keil or c51 汇编调用c语言函数 容易忽视的问题

    最近,在用keil 写一个小程序时,想实践一下从汇编调用 C语言函数,我们都知道C语言调用汇编函数讨论得较多,但反过来,从汇编中调用C语言的函数未见深入分析:在开始的时候,还是忽视了一个问题,就是对现 ...

  5. error C2143 & error C4430

    错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面) 错误 2 error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int 错误 3 e ...

  6. 解决IE6 IE7 JSON.stringify JSON 未定义问题

    在项目中引入json2.js 官方http://www.json.org/ 源码地址:https://github.com/douglascrockford/JSON-js $.ajax({ url: ...

  7. PC--CSS技巧

    1.图片不存在的时候,显示一个默认图片 <img src=”01.jpg” onerror=”this.src=’02.jpg'” /> 2.CSS强制图片自适应大小 img {width ...

  8. 给定N个整数集合是否存在两个其和刚好为指定常数的元素

    又一次学习一遍<算法导论>,看到了这个问题: 描写叙述一个执行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和还有一个整数 X 时,推断出S中是否存在有两个其和刚好等于 ...

  9. [HeadFirst-HTMLCSS学习笔记][第三章创建网页]

    一些基本元素 以下元素都可以用CSS变得更好看 q,<blockquote>,<em>,<br>, <strong>,ol ,ul,li,pre,cod ...

  10. Gstreamer的一些基本概念与A/V同步分析

    一.媒体流(streams )流线程中包含事件和缓存如下:-events     -NEW_SEGMENT    (NS)     -EOS                (EOS)  *     - ...