阿里云至 Windows Azure 的 Linux 虚拟机迁移
在Windows Azure中,用户可以对部署在Azure中的虚拟机的映像、磁盘以及快照进行生成和下载。用户可以方便地将Azure中的虚拟机实例迁移到本地、私有云甚至其他公有云平台进行测试、扩展或者再部署。但是,除Azure外,大部分公有云供应商并不提供虚拟机映像的下载服务。用户如要迁移自己的应用,必须重新配置虚拟机环境。为了解决这个问题,本文以阿里云迁移至Azure为例,提供了一种无须重新部署、利用Linux dd命令直接拷贝阿里云中的虚拟机映像、并上传至Azure的方法。
- 参考:(适用于利用Hyper-V在本地准备映像文件并上传至Azure) http://www.windowsazure.cn/zh-cn/documentation/articles/virtual-machines-linux-create-upload-vhd/
- 本文以 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 |
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 |
|
例:# 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 虚拟机迁移的更多相关文章
- 阿里云服务器Windows Server 2008/2012部署Office Web Server 2013
以前成功将Office Web Server 2013部署在了本地服务器上,此次是将Office Web Server 2013部署在阿里云服务器Windows Server 2008和2012上,中 ...
- 面向阿里云专家的 Azure 云服务介绍
本文是面向阿里云专家的 Azure 云服务介绍,参考本文可以帮助大家“按图索骥”在 Azure 的平台上找到能满足自己需求的服务. 在公有云计算蓬勃发展的同时,中国也出现了越来越多的本土公有云平台.针 ...
- 云平台发展前沿报告 微软云平台——Windows Azure
微软云平台——Windows Azure Windows Azure 是微软研发的公有云计算平台.该平台可供企业在互联网上运行应用,并可进行扩展.通过Windows Azure,企业能够在多个数据中心 ...
- 微软云平台windows azure入门系列八课程
微软云平台windows azure入门系列八课程: Windows Azure入门教学系列 (一): 创建第一个WebRole程序与部署 Windows Azure入门教学系列 (二): 创建第一个 ...
- Windows Azure 上 Linux VM 中的交换空间 – 第 2 部分
本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 在前一篇文章 Windows Azure 上Linux VM 中的交换空间第 1 部分中,我介绍了在默认情况下, ...
- 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站
如何在IIS上发布网站 本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程 ...
- 手把手教windows上安装linux虚拟机及环境配置
目录 版本说明 安装虚拟机 典型方式安装(推荐小白,带有图形界面,助于学习,但占用空间大) 自定义方式安装(推荐老司机) 创建快照 克隆虚拟机 windows上安装linux虚拟机不管是对于新人还是老 ...
- 解决使用putty 连接Windows主机与Linux虚拟机出现提示network error:connection refused问题
使用putty 连接Windows主机与Linux虚拟机出现提示network error:connection refused的问题 问题描述: 主机与虚拟机可以互相ping通: 防火墙已经关闭 使 ...
- 使用Windows Azure创建Linux系统虚拟机-上
创建虚拟机来运行Linux 当您在Azure管理门户中使用映像图库时,创建运行Linux的虚拟机很容易.本指南告诉您如何做到这一点,假设你没有使用过Azure. 注意: 即使你不需要使用过Azure虚 ...
随机推荐
- mac 下 sphinx + mysql + php 实现全文搜索(xampp)(3)sphinx 的配置项解析
source:数据的来源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一个字典检索.有了整本字典内容以后,才会有字典检索. searchd:提供搜 ...
- Oracle的AUTOTRACE功能
ORACLE9i在使用autotrace之前,需要作一些初始设置: 1.用sys用户运行脚本utlxplan.sql创建PLAN_TABLE表 脚本目录:(UNIX:$ORACLE_HOME/rdbm ...
- Nginx upstream的5种权重分配方式
.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,后端服务器down掉,能自动剔除 .weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. upstre ...
- 回车,根据编码获取相应记录,然后再将这录绑定到AutoList
问题描述: 回车后,根据编码获取相应记录,然后再将这录绑定到AutoList(我们自定义控件,其实就是下拉列表),回车事件是用jquery ajax实现,这样在后台给AutoList绑定数据源,如果不 ...
- ios播放声音中断后台音乐的问题
今天遇到一个ios播放声音中断后台音乐的问题,在我的app中如果调用AVAudioSession 播放完声音,后台的qq音乐偶尔不能恢复,而网易云音乐一次都不能恢复播放,研究了一下AVAudioS ...
- R语言编程艺术# 数据类型向量(vector)
R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...
- 【更新链接】U盘启动制作工具(UDTOOL) v3.0.2014.0427
[校验值] 文件: UDTOOLV3_Setup.exe大小: 525 MB版本: 3.0.2014.0427时间: 2014年4月27日MD5: 2E5187B7D9081E8A69B4DC45C8 ...
- 【C++基础】内存操作 getMemory改错
内存操作的考察点:①指针 ②变量生存期及作用范围 ③动态内存申请和释放 笔试题************************************************************* ...
- Win32 DLL和MFC DLL 中封装对话框
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题. ...
- 常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例
http://www.cnblogs.com/cxd4321/archive/2013/01/30/2883078.html 目前市面上用的比较多的富文本编辑器有: FreeTextBox 一个有很多 ...