通过迁云工具快速实现操作系统镜像迁移
本文最后更新于 1835 天前,其中的信息可能已经有所发展或是发生改变。

前言

在上云迁移的过程中最烦的可能就是操作系统镜像的迁移操作了,如果在本地操作系统中已经有了非常复杂的软件部署这时候迁移上云或者在不同公有云之间迁移就让不少人犹豫不决了。而阿里云提供的 迁云工具 就是为这个迁移痛点而生的。

介绍

迁云工具 直接使用公网迁移用户的系统,无需占用额外的本地存储空间,大大减轻了迁移的负担和迁移成本;同时本工具在易用性方面做了很多努力,相比以前的版本工具极大的简化了使用条件、降低了使用门槛,使用户的系统一键迁移到阿里云成为可能。

总而言之它的特性就是: 操作复杂度 ,迁移速度 ,系统还原度

迁云工具 支持的镜像包括:Windows Server 和常见的主流 Linux 发型版,支持P2V(物理机迁云)、V2V(虚拟机/公有云迁云)。

系统平台版本号支持状态
Windows2003/2008/2012/2016支持
CentOS5/6/7支持
Red Hat5/6/7支持
Ubuntu10/12/14/16/17支持
Debian7/8/9支持
SUSE Linux11.4/12.1/12.2支持
OpenSUSE13.1支持
Gentoo13.0支持

要求 & 收获

需要使用到的产品:

  1. 阿里云账户余额大于等于 100 元(开通按量的要求)
  2. 可连接公网的 物理机、虚拟机、公有云 服务器

通过本文你将讲学到:

  1. 使用迁云工具实现镜像迁移至阿里云

教程

教程中以腾讯云 CVM 为例介绍 Linux 发型版的迁移,将 腾讯云·上海 地域的镜像迁移至阿里云上。 建议带宽较小的实例可以考虑制作一个自定义镜像并用此镜像创建一个按流量计费100M带宽的按量实例,如果是物理机传输量非常大还可以考虑使用阿里云的 高速通道 服务建立传输专线。

然后我创建了一个纯 Nginx 的环境,并放了一个默认首页和 /root/qianyun.txt 的两个验证迁移准确性的文件。

准备

安装基础库

一、 安装基础必备软件 Rsync 库:

CentOS、RHEL: 

yum install epel-release -y
yum install rsync git python python-pip –y

Debian、Ubuntu:

apt install rsync git python python-pip –y

编译安装 cloud-init

一、 下载 cloud-init 源码:

git clone https://git.launchpad.net/cloud-init
cd cloud-init

二、 安装 Python 库依赖:

pip install -r requirements.txt

三、 编译安装:

python setup.py install

四、 修改配置文件:

mv /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.bak
cd /etc/cloud/
wget https://gitee.com/yunvy/codes/p0omxzqs8ecaj5iwtu9b175/raw?blob_name=cloud.cfg -O cloud.cfg 

创建权限子账户

由于期间操作是自动通过命令行实现的,所以需要用到一个 Access Key 的过程,但是默认的 Access Key 是全局全权限的,所以我们应该使用 访问控制 RAM 来创建一个只有 ECS 管理权限的子账户。

不过由于篇幅限制不适合再展开讲访问控制了,可以参考 《使用阿里云短信服务曲线实现 WP 评论实名》 ,查看第四步 四、 在开通 访问控制 服务 中的步骤。

下载迁云工具

一、 下载源码包

cd /root/
wget http://p2v-tools.oss-cn-hangzhou.aliyuncs.com/Alibaba_Cloud_Migration_Tool.zip
unzip Alibaba_Cloud_Migration_Tool.zip

二、 解压后会有两个压缩包,一个是 Linux 一个是 Windows 的,很清楚,我们当然是 Linux。

[root@VM_199_173_centos ~]# unzip Alibaba_Cloud_Migration_Tool.zip                                                                                                                
Archive:  Alibaba_Cloud_Migration_Tool.zip                                                                                                                                        
  inflating: go2aliyun_client1.2.5_linux.zip                                                                                                                                      
  inflating: go2aliyun_client1.2.5_windows.zip  

三、 解压 Linux 工具包:

unzip go2aliyun_client1.2.5_linux.zip
cd go2aliyun_client1.2.5_linux/

四、 目录中有两个目录:

[root@VM_199_173_centos go2aliyun_client1.2.5_linux]# ls                                                                                                                          
go2aliyun_client1.2.5_linux_i386  go2aliyun_client1.2.5_linux_x86_64

i386 即 32位系统的,x86_64 即 64 位系统的,不过服务器默认都用 64 位的,所以我们进 go2aliyun_client1.2.5_linux_x86_64 目录。

cd o2aliyun_client1.2.5_linux_x86_64

配置

一、 修改 user_config.json 文件,这个一个 json 配置文件

{
    "access_id": "",
    "secret_key": "",
    "region_id": "",
    "image_name": "",
    "system_disk_size": 40,
    "platform": "",
    "architecture": "",
    "data_disks": [],
    "bandwidth_limit": 0
}

具体参数介绍:

参数名类型是否必填说明
access_idString您的阿里云账号的 API 访问密钥 AccessKeyID。更多详情,参阅 创建 Access Key
secret_keyString您的阿里云账号的 API 访问密钥 AccessKeySecret。更多详情,参阅 创建 Access Key
region_idString您的服务器迁移入阿里云的地域 ID,如 cn-hangzhou(华东1),取值参阅 地域与可用区
image_nameString为您的服务器镜像设定一个镜像名称,该名称不能与同一地域下现有镜像名重复。

  • 长度为 [2, 128] 个英文或中文字符,必须以大小字母或中文开头,可包含数字,点号(.),下划线(_)或短横线(-)。
  • 镜像名称会显示在 ECS 控制台。
  • 不能以 http:// 和 https:// 开头。
system_disk_sizeint为系统盘指定大小,单位为 GB。取值范围:

  • [40, 500]
  • 该参数取值需要大于源服务器系统盘实际占用大小,例如,源系统盘大小为 500 GB,实际占用 100 GB,那该参数取值只要大于 100 GB 即可。
platformString源服务器的操作系统。取值范围:

  • CentOS
  • Ubuntu
  • SUSE
  • OpenSUSE
  • Debian
  • RedHat
  • Others Linux
  • Windows Server 2003
  • Windows Server 2008
  • Windows Server 2012
  • Windows Server 2016

参数 platform 的取值需要与以上列表保持一致,必须区分大小写,并保持空格一致。

architectureString系统架构。取值范围:

  • i386:32 位系统架构
  • x86_64:64 位系统架构
bandwidth_limitint数据传输的带宽上限限制,单位为 KB/s。
默认值:0
data_disksArray数据盘列表,最多支持 16 块数据盘。具体参数参阅 数据盘配置参数说明
该参数可以置为缩容数据盘的预期数值,单位为 GB,该值不能小于数据盘实际使用空间大小。

关于数据盘的内容请参考: https://help.aliyun.com/document_detail/62394.html#Table2

所以,我就可以创建出一个配置文件为:

{
    "access_id": "LTAIXeadwww.mf8.biz",
    "secret_key": "VHVQ1Tzwww.mf8.bizvH8pIMoMSA",
    "region_id": "cn-shanghai",
    "image_name": "MF8-BIZ-QIANYUN-IMAGE-001",
    "system_disk_size": 50,
    "platform": "CentOS",
    "architecture": "x86_64",
    "data_disks": [],
    "bandwidth_limit": 0
}

特别注意的是 platform 一定要注意大小写!

二、 rsync_excludes_linux.txt 中的目录是不进行迁移的目录,以避免不必要的空间浪费,我们可以在里面自行添加不必要的目录。

迁移

cd /root/go2aliyun_client1.2.5_linux/go2aliyun_client1.2.5_linux_x86_64
chmod +x ./go2aliyun_client
./go2aliyun_client

然后就会自动创建一个所选地域的临时按量 ECS 进行同步,同步完成后就会自动创建一个快照并创建为自定义镜像。

这时候我们就啥都不用管了,冲一杯咖啡,小憩一会儿就是了~。

出现 Enter any key to Exit... 就表示我们迁移已经完成了。

然后在快照列表就可以看到,创建的这个快照:

当然最终我们还是要用这个快照创建的自定义镜像来进行ECS的创建。

检测

我这个架构本身就很简单,基本上只要能打得开 Nginx 就行,其他的复杂架构可能需要详细检测一下是否可以运行。


上一篇
下一篇