在Windows Azure中,用户可以对部署在Azure中的虚拟机的映像、磁盘以及快照进行生成和下载。用户可以方便地将Azure中的虚拟机实例迁移到本地、私有云甚至其他公有云平台进行测试、扩展或者再部署。但是,除Azure外,大部分公有云供应商并不提供虚拟机映像的下载服务。用户如要迁移自己的应用,必须重新配置虚拟机环境。为了解决这个问题,本文以阿里云迁移至Azure为例,提供了一种无须重新部署、利用Linux dd命令直接拷贝阿里云中的虚拟机映像、并上传至Azure的方法。

  • 本文以 Ubuntu 14.04 为例,其他Linux版本可参考以上链接。
  • 本文所有操作均在源虚拟机命令行窗口中执行,无需切换至Linux图形界面、Windows系统或依靠Hyper-V等第三方工具。

1.  Azure环境准备

1)  将阿里云映像中的现有源仓库替换为 Azure 源仓库。

# cp /etc/apt/sources.list/etc/apt/sources.list.bak

# sed -i s/mirrors.aliyun.com/azure.archive.ubuntu.com/g/etc/apt/sources.list

# sed -i /aliyuncs/d /etc/apt/sources.list

2)   将操作系统内核更新为最新版本。

# apt-get update

# apt-get install hv-kvp-daemon-init

# apt-get dist-upgrade

# reboot

3)   修改 Grub 的内核启动项,使其包含 Azure 的附加内核参数。

编辑“/etc/default/grub”,将GRUB_CMDLINE_LINUX_DEFAULT参数行替换成如下:

GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300"

并且运行:

# update-grub

4)   安装 Azure Linux Agent。(此操作将会移除NetworkManager和NetworkManager-gnome程序包)

# apt-get update

# apt-get install walinuxagent

5)   将网络配置从“静态”修改为“DHCP”,并将其他网络配置行注释掉(请参见以下屏幕截图)。

编辑“/etc/network/interfaces”:

修改前:

修改后:

6)   添加有效的 DNS 服务器。

编辑“/etc/resolv.conf”,添加如下DNS服务器:

nameserver 8.8.8.8 #Google

nameserver 223.5.5.5 #Ali

7)   将附加盘信息从文件系统表中移除。

编辑“/etc/fstab”:

修改前:

修改后:

8)   移除该 VM上的用户配置信息,并清除历史记录。

# waagent -force -deprovision

# export HISTSIZE=0

2.  生成 VM 映像

1)   添加一个独立云磁盘到阿里虚拟机上,用来存储生成的虚拟机映像文件,并且挂载该磁盘至虚拟机(参考)。(该独立云磁盘容量至少应为系统盘的两倍)

2)   利用dd命令备份系统磁盘至独立云磁盘。

# dd if=/dev/xvda of=/mnt/ImageName.raw bs=100M

3)   安装 qemu-utils 工具以转换映像文件格式。

# apt-get install qemu-utils

4)   将生成的映像文件从 *.raw 转换为 *.vhd。

# cd /mnt

# qemu-img convert -f raw -o subformat=fixed -O vpc ImageName.raw ImageName.vhd

至此,映像文件已经准备完毕。下面将在Azure上创建存储账号,用来存储准备好的映像文件。注:所有运行在Azure上的虚拟机,它们的映像、磁盘和快照都存储在Azure存储账号中,方便用户直接操作和管理。

3.  新建Azure存储账号

  • 用户可以使用Azure Powershell、调用API或者直接在管理门户网站上创建存储账号、新建虚拟机或者管理Azure其它服务(参考:Azure文档中心)。本文使用Azure
    Linux命令行工具
    ,使用户快速、方便地进行存储账号和虚拟机的创建和配置。
  • 在使用Azure服务前,请确保您拥有有效的Azure订阅。用户可以通过Azure中国官网:http://www.windowsazure.cn/ 获取Azure订阅。

1)   安装 Azure Linux命令行工具:

# apt-get update

# apt-get install nodejs

# apt-get install npm

# ln -s /usr/bin/nodejs /usr/bin/node

# npm install azure-cli -g

2)   连接到Azure订阅:

# azure login -u<azureusername> -p <auzrepassword> -e<environment>

例:# azure login -u myname@myorg.partner.onmschina.cn -p mypasswd -e AzureChinaCloud

若您使用Azure中国版服务,Azure订阅用户名<azureusername>的格式为:*@*.partner.onmschina.cn,且必须指定参数-e<environment>为‘AzureChinaCloud’;若您使用Azure国际版服务,可根据该参考创建组织账号,相应的<azureusername>的格式为:*@*.onmicrosoft.com
,参数-e可省略。

3)   新建Azure存储账号:

# azure storage account create <storageaccountname> -l
<location>

例:# azure storage account create myaccount -l "ChinaEast"

-l参数指定存储账号所在地域,用户可以使用如下命令查看可用地域:

# azure vm location list

中国至今(2015年1月)拥有两个地域: China East和China North,分别位于上海和北京。

注意:存储账号和虚拟机必须部署在同一地域,请根据业务需求选择账号所在位置。

4)   获取存储账号秘钥:

# azure storage account connectionstring show --blob-endpoint
<blobEndpoint> <storageaccountname>

例:# azure storage account connectionstring show --blob-endpoint myaccount.blob.core.chinacloudapi.cn myaccount

该命令返回如下结果,其中高亮 部分将作为下一步操作中的<connectionstring>:

5)   新建存储容器:

存储容器相当于文件系统中的文件夹,可以对在其内的blob文件进行统一权限管理。默认情况下,建立的容器为私有容器。

#azure storage container create
<containername> -c <connectionstring>

例:#azure storage container create mycontainer -c 'DefaultEndpointsProtocol=https;BlobEndpoint=teststorageaccount.blob.core.chinacloudapi.cn;AccountName=teststorageaccount;AccountKey=xMPA3UJD56VqhtmEdnWZ4vLHmJQzaQJfTGUj7R+eMwEGMkBmbEPiUF4qJIL3QqIuWy/t7qeb6RZm72NsBzKiKA=='

4.  上传映像至Azure

1)   将生成的映像文件上传到 Azure Storage。

# cd /mnt

# azure storage blob upload -c <connectionstring> -f
ImageName.vhd --container
<containername> --blob ImageName.vhd --blobtype page

5. 新建Azure虚拟机

1)   将上传的映像文件新建成虚拟机镜像:

# azure vm image create <imagename> --blob-url <url> --os linux

例:# azure vm image create myimage --blob-url https://myaccount.blob.core.chinacloudapi.cn/mycontainer/ImageName.vhd --os linux

2)   新建一个Azure虚拟机实例:

# azure vm create <dnsname> <imagename> -u
<vmusername> -p <vmpassword> -l
<location>

例:# azure vm create mylinuxvm.chinacloudapp.cn myimage -u vmuser -p mypassword  -l "China East"

至此,您已成功将阿里云上的Linux虚拟机迁移至Azure中。通过默认SSH端口:22和DNS地址:*.chinacloudapp.cn,即可远程对创建的Azure虚拟机进行管理和操作。并且,您还能利用迁移的映像文件创建多个虚拟机实例,来保证应用的可用性和可靠性。



阿里云至 Windows Azure 的 Linux 虚拟机迁移的更多相关文章

  1. 阿里云服务器Windows Server 2008/2012部署Office Web Server 2013

    以前成功将Office Web Server 2013部署在了本地服务器上,此次是将Office Web Server 2013部署在阿里云服务器Windows Server 2008和2012上,中 ...

  2. 面向阿里云专家的 Azure 云服务介绍

    本文是面向阿里云专家的 Azure 云服务介绍,参考本文可以帮助大家“按图索骥”在 Azure 的平台上找到能满足自己需求的服务. 在公有云计算蓬勃发展的同时,中国也出现了越来越多的本土公有云平台.针 ...

  3. 云平台发展前沿报告 微软云平台——Windows Azure

    微软云平台——Windows Azure Windows Azure 是微软研发的公有云计算平台.该平台可供企业在互联网上运行应用,并可进行扩展.通过Windows Azure,企业能够在多个数据中心 ...

  4. 微软云平台windows azure入门系列八课程

    微软云平台windows azure入门系列八课程: Windows Azure入门教学系列 (一): 创建第一个WebRole程序与部署 Windows Azure入门教学系列 (二): 创建第一个 ...

  5. Windows Azure 上 Linux VM 中的交换空间 – 第 2 部分

    本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 在前一篇文章 Windows Azure 上Linux VM 中的交换空间第 1 部分中,我介绍了在默认情况下, ...

  6. 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站

    如何在IIS上发布网站   本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程 ...

  7. 手把手教windows上安装linux虚拟机及环境配置

    目录 版本说明 安装虚拟机 典型方式安装(推荐小白,带有图形界面,助于学习,但占用空间大) 自定义方式安装(推荐老司机) 创建快照 克隆虚拟机 windows上安装linux虚拟机不管是对于新人还是老 ...

  8. 解决使用putty 连接Windows主机与Linux虚拟机出现提示network error:connection refused问题

    使用putty 连接Windows主机与Linux虚拟机出现提示network error:connection refused的问题 问题描述: 主机与虚拟机可以互相ping通: 防火墙已经关闭 使 ...

  9. 使用Windows Azure创建Linux系统虚拟机-上

    创建虚拟机来运行Linux 当您在Azure管理门户中使用映像图库时,创建运行Linux的虚拟机很容易.本指南告诉您如何做到这一点,假设你没有使用过Azure. 注意: 即使你不需要使用过Azure虚 ...

随机推荐

  1. mac 下 sphinx + mysql + php 实现全文搜索(xampp)(3)sphinx 的配置项解析

    source:数据的来源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一个字典检索.有了整本字典内容以后,才会有字典检索. searchd:提供搜 ...

  2. Oracle的AUTOTRACE功能

    ORACLE9i在使用autotrace之前,需要作一些初始设置: 1.用sys用户运行脚本utlxplan.sql创建PLAN_TABLE表 脚本目录:(UNIX:$ORACLE_HOME/rdbm ...

  3. Nginx upstream的5种权重分配方式

    .轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,后端服务器down掉,能自动剔除 .weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. upstre ...

  4. 回车,根据编码获取相应记录,然后再将这录绑定到AutoList

    问题描述: 回车后,根据编码获取相应记录,然后再将这录绑定到AutoList(我们自定义控件,其实就是下拉列表),回车事件是用jquery ajax实现,这样在后台给AutoList绑定数据源,如果不 ...

  5. ios播放声音中断后台音乐的问题

      今天遇到一个ios播放声音中断后台音乐的问题,在我的app中如果调用AVAudioSession 播放完声音,后台的qq音乐偶尔不能恢复,而网易云音乐一次都不能恢复播放,研究了一下AVAudioS ...

  6. R语言编程艺术# 数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

  7. 【更新链接】U盘启动制作工具(UDTOOL) v3.0.2014.0427

    [校验值] 文件: UDTOOLV3_Setup.exe大小: 525 MB版本: 3.0.2014.0427时间: 2014年4月27日MD5: 2E5187B7D9081E8A69B4DC45C8 ...

  8. 【C++基础】内存操作 getMemory改错

    内存操作的考察点:①指针 ②变量生存期及作用范围 ③动态内存申请和释放 笔试题************************************************************* ...

  9. Win32 DLL和MFC DLL 中封装对话框

    现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32   DLL和MFC   DLL两个方面来分析并解决这个问题.     ...

  10. 常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例

    http://www.cnblogs.com/cxd4321/archive/2013/01/30/2883078.html 目前市面上用的比较多的富文本编辑器有: FreeTextBox 一个有很多 ...