已经有很多朋友通过楚狂人博客的介绍,选择了阿里云服务器ECS的服务,还有一些朋友正在犹豫中,其中典型的一个问题便是原来放在传统服务器的数据怎样安全快速的迁移到阿里云服务器中。今天,我带大家看一下如何用迁云工具把服务器数据迁移到阿里云服务器ecs?
当然,前提是你首先要有阿里云的账户,并购买了阿里云服务器ECS。如果你还没有购买,可以点击下面链接领取幸运券之后再买,领券后下单可以获得两次抽奖机会,最高奖品为128G的ipad迷你。
阿里云幸运券:http://www.chukuangren.com/aliyun.html
如果你已经有阿里云服务器ECS了,或者你刚刚购买完毕,下面我们来看下迁移的步骤。
注意事项
- 阿里云迁云工具当前版本暂不支持迁移增量数据。对于源服务器上需要保持数据完整的业务,您可以选择一个业务空闲时段,暂时停止这些业务,再迁移数据。
- 迁云时,系统默认在您的阿里云账号下创建一个默认名为 INSTANCE_FOR_GOTOALIYUN 的 ECS 实例做中转站。该中转实例付费类型为按量付费,按量付费实例产生的资源耗费及计费说明请参阅 产品定价 按量付费。
注意:
- 迁云成功后,系统自动释放该中转实例。
- 迁云失败后,该实例保留在 ECS 控制台,以便于重新迁云。此时,您需要前往 ECS 控制台手动 释放实例,以免造成不必要的扣费。
- 中转实例的默认付费模式为 按量付费(Pay-As-You-Go),您需要确保账号余额大于等于 100 元。
- 每成功迁云一次,配置文件 client_config.json 会自动记录迁云成功后在 ECS 控制台创建的 ECS 实例的相关信息。再次迁云时,您需要使用初始下载的客户端配置文件。
注意:
- 为避免迁云失败,如无特殊需求,您无需自行修改配置文件 client_config.json。
- 阿里云迁云工具需要使用 AccessKeyID 以及 AccessKeySecret, AccessKeyID 以及 AccessKeySecret 是您的重要凭证,请妥善保管,防止泄露。
前提条件
- 迁云之前,待迁云的源服务器必须能够访问公网,便于传输数据至阿里云管理控制台。
- 确保系统本地时间与实际时间一致,否则日志文件会提示 TimeStamp 异常。
源服务器为 Windows 系统
- 确保防火墙没有限制 go2aliyun_client.exe 及 Rsync\bin 文件夹中的 rsync.exe。
- 确保系统开机启动引导正常。
- 您需要以管理员身份运行迁云工具。
源服务器为 Linux 系统
- 确保 go2aliyun_client 没有被防火墙限制。
- 确保您已经安装了 Rsync 库:
- CentOS:运行
yum install rsync –y
。 - Ubuntu:运行
apt-get install rsync –y
。 - Debian:运行
apt-get install rsync –y
。 - 其他发行版:参考发行版官网安装相关的文档。
- CentOS:运行
- 确保系统安装了 Xen 或者 KVM(Kernerl Virtual Machine) 驱动,您可以参阅 安装 virtio 驱动 配置虚拟化环境。
- 确保系统已关闭 SELinux。您可以通过将文件 /etc/selinux/config 中的配置修改为
SELINUX=disabled
关闭 SELinux。 - 您需要以 root 身份运行迁云工具。
下载迁云工具
- 登录阿里云管理控制台 提交迁云申请。
注意:
提交迁云申请后,如果您长时间未收到迁云回复,您可以同时检查您的收件箱与垃圾邮件。 - 审核完成后,根据邮件、站内信或者短信提示下载阿里云迁云工具压缩包。解压后包含的文件列表如下:
- Windows 服务器
文件(夹)名 描述 Rsync 文件夹 迁云所需要依赖的应用,除筛选机制文件 Rsync\etc\rsync_excludes_win.txt 外,其余文件请勿手动修改。 client_config.json 迁云过程中,在 ECS 控制台 创建的中转实例的配置文件。 user_config.json 源服务器信息配置文件 go2aliyun_client.exe 迁云工具主程序 - Linux 服务器
文件(夹)名 描述 client_check 辅助程序 client_config.json 迁云过程中,在 ECS 控制台 创建的中转实例的配置文件。 user_config.json 源服务器信息配置文件 go2aliyun_client 迁云工具主程序 rsync_excludes_linux.txt 筛选机制文件,设置不迁云的路径。
- Windows 服务器
操作步骤
- 登录待迁云的服务器、虚拟机或者云主机。
- 将下载的阿里云迁云工具压缩包解压到您指定的目录。
-
在控制台 创建 Access Key,用于输出到配置文件 user_config.json 里。
- 根据您的实际情况,自定义配置文件 user_config.json。
- 运行阿里云迁云工具:
- Windows 服务器:右击 go2aliyun_client.exe,选择 以管理员身份运行。
- Linux 服务器:
- 执行命令
chmod +x go2aliyun_client
赋予 go2aliyun_client 可执行权限。 - 执行命令
./ go2aliyun_client
运行 go2aliyun_client。
- 执行命令
- 等待运行结果:
- 当出现
Goto Aliyun Finished!
提示时,前往 ECS 控制台 镜像详情页查看结果。 - 当出现
Goto Aliyun Not Finished!
提示时,检查同一目录下 Logs 文件夹下的日志文件 排查故障。修复问题后,重新运行迁云工具,迁云工具会从上一次执行的进度中继续迁云。
- 当出现
自定义 user_config.json
user_config.json 是一个以 JSON 语言编写的配置文件,主要包含源服务器需要迁移至阿里云云平台的一些必要配置信息,其中包括您的 AccessKey 信息、生成的目标自定义镜像的配置信息等。您需要手动配置部分参数,修改后,仔细检查 JSON 语言格式的规范性,关于 JSON 的语法标准请参阅 RFC 7159。
配置文件模板
以下是配置文件 user_config.json 的模板:
{
"access_id": "",
"secret_key": "",
"region_id": "",
"image_name": "",
"system_disk_size": 40,
"platform": "",
"architecture": "",
"data_disks": []
}
模板参数说明
表一. 服务器配置参数说明
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
access_id | String | Yes | 您的阿里云账号的 API 访问密钥 AccessKeyID。更多详情,参阅 创建 Access Key。 |
secret_key | String | Yes | 您的阿里云账号的 API 访问密钥 AccessKeySecret。更多详情,参阅 创建 Access Key。 |
region_id | String | Yes | 您的服务器迁移入阿里云的地域 ID,如 cn-hangzhou(华东1),取值参阅 地域与可用区。 |
image_name | String | Yes | 为您的服务器镜像设定一个镜像名称,该名称不能与同一地域下现有镜像名重复。
|
system_disk_size | int | Yes | 为系统盘指定大小,单位为 GB。取值范围:
|
platform | String | No | 源服务器的操作系统。需要注意大小写,取值范围:
|
architecture | String | No | 系统架构。取值范围:
|
data_disks | Array | No | 数据盘列表,最多支持 16 块数据盘。具体参数参阅 数据盘配置参数说明。 |
表二. 数据盘配置参数说明
参数名 | 类型 | 是否需要手动配置 | 说明 |
---|---|---|---|
data_disk_index | int | Yes | 数据盘序号。取值范围:[1, 16] 初始值:1 |
data_disk_size | int | Yes | 数据盘大小。单位为 GB。取值范围:
|
src_path | String | Yes | 数据盘源目录。取值范围:
|
自定义配置示例
此处以四种场景为例,为您示范如何根据场景和配置文件模板自定义配置 user_config.json 文件:
场景一. 迁移一台无数据盘的 Windows 服务器
- 假设您的服务器配置信息为:
- 操作系统:Windows Server 2008
- 系统盘:30 GB
- 系统架构:64 位
- 您的迁云目标为:
- 目标地域:阿里云华东 1 地域(cn-hangzhou)
- 镜像名称:CLIENT_IMAGE_WIN08_01
- 系统盘设置:50 GB
那么您可以根据如下信息配置 user_config.json 文件:
{
"access_id": "YourAccessKeyID",
"secret_key": "YourAccessKeySecret",
"region_id": "cn-hangzhou",
"image_name": "CLIENT_IMAGE_WIN08_01",
"system_disk_size": 50,
"platform": "Windows Server 2008",
"architecture": "x86_64",
"data_disks": []
}
场景二. 迁移一台带数据盘的 Windows 服务器
如果您的 Windows 服务器在场景一的基础上加入了 3 块数据盘,源目录和数据盘大小分别为:
- D:100 GB
- E:150 GB
- F:200 GB
那么您可以根据如下信息配置 user_config.json 文件:
{
"access_id": "YourAccessKeyID",
"secret_key": "YourAccessKeySecret",
"region_id": "cn-hangzhou",
"image_name": "CLIENT_IMAGE_WIN08_01",
"system_disk_size": 50,
"platform": "Windows Server 2008",
"architecture": "x86_64",
"data_disks": [ {
"data_disk_index": 1,
"data_disk_size": 100,
"src_path": "D:"
}, {
"data_disk_index": 2,
"data_disk_size": 150,
"src_path": "E:"
}, {
"data_disk_index": 3,
"data_disk_size": 200,
"src_path": "F:"
}
]
}
场景三. 迁移一台无数据盘的 Linux 服务器
- 假设您的服务器配置信息为:
- 发行版本:CentOS 7.2
- 系统盘:30 GB
- 系统架构:64 位
- 您的迁云目标为:
- 目标地域:阿里云华东 1 地域(cn-hangzhou)
- 镜像名称:CLIENT_IMAGE_CENTOS72_01
- 系统盘设置:50 GB
那么您可以根据如下信息配置 user_config.json 文件:
{
"access_id": "YourAccessKeyID",
"secret_key": "YourAccessKeySecret",
"region_id": "cn-hangzhou",
"image_name": "CLIENT_IMAGE_CENTOS72_01",
"system_disk_size": 50,
"platform": "CentOS",
"architecture": "x86_64",
"data_disks": []
}
场景四. 迁移一台有数据盘的 Linux 服务器
如果您的 Linux 服务器在场景三的基础上加入了 3 块数据盘,源目录和数据盘大小分别为:
- /mnt/disk1:100 GB
- /mnt/disk2:150 GB
- /mnt/disk3:200 GB
那么您可以根据如下信息配置 user_config.json 文件:
{
"access_id": "YourAccessKeyID",
"secret_key": "YourAccessKeySecret",
"region_id": "cn-hangzhou",
"image_name": "CLIENT_IMAGE_CENTOS72_01",
"system_disk_size": 50,
"platform": "CentOS",
"architecture": "x86_64",
"data_disks": [ {
"data_disk_index": 1,
"data_disk_size": 100,
"src_path": "/mnt/disk1"
}, {
"data_disk_index": 2,
"data_disk_size": 150,
"src_path": "/mnt/disk2"
}, {
"data_disk_index": 3,
"data_disk_size": 200,
"src_path": "/mnt/disk3"
}
]
}
自定义 client_config.json
文件 client_config.json 主要包含程序的运作过程状态以及迁云过程中在 ECS 控制台 创建的中转实例的配置信息。
注意:
- 为避免迁云失败,如无特殊需求,您无需自行修改配置文件 client_config.json。
配置文件模板
以下是配置文件 client_config.json 的模板:
{
"instance": {
"instance_id": "",
"instance_name": "",
"description": "",
"instance_type": "",
"system_disk_category": "",
"public_ip_address": "",
"status": ""
}
}
模板参数说明
参数名 | 类型 | 说明 |
---|---|---|
status | String | 阿里云迁云工具的运作过程状态。取值范围:
|
instance.instance_id | String | 创建的中转实例的 ID |
instance.instance_name |
String | 创建的中转实例名称。默认值:INSTANCE_FOR_GOTOALIYUN |
instance.instance_type | String | 创建的中转实例的资源规格。取值参见 实例规格族。默认值:ecs.n1.small 当创建实例失败时,并且日志文件提示 NoStock ,则表示该 ECS 实例规格暂无库存,您可以选择其他实例规格后重试。 |
instance. system_disk_category | String | 创建的中转实例的系统盘磁盘种类。取值范围:
InstanceType 为 系列 I 规格的非 I/O 优化实例的默认值:cloud |
instance.public_ip_address | String | 创建的中转实例的公网地址。 |
更多参数规格,您可以参阅 API CreateInstance 的请求参数说明。
自定义无需迁云的目录
阿里云迁云工具同时具备过滤筛选功能,该功能过滤掉部分文件或者目录,这些被过滤的文件不会迁移到阿里云云端。其默认过滤文件为:
- Linux 服务器:
- /dev/*
- /sys/*
- /proc/*
- /media/*
- /lost+found/*
- /mnt/*
- /var/lib/lxcfs/*
…注意:
/var/lib/lxcfs/* 目录仅针对部分系统版本,例如,无权访问 Ubuntu 的 Linux 容器服务缓存目录时,需要排除 Ubuntu 的 /var/lib/lxcfs/* 才能顺利迁云。
- Windows 服务器
- pagefile.sys
- $RECYCLE.BIN
- System Volume Information
您可以通过配置 rsync 实现过滤不想迁云的文件或者目录。Linux 服务器通过配置文本文件 rsync_excludes_linux.txt 实现,Windows 文件通过配置文本文件 Rsync/etc/rsync_excludes_win.txt 实现。您可以参阅 rsync 相关文档,在文本文件里按需添加过滤的文件或目录。
日志文件
阿里云迁云工具的日志记录保存在主程序目录下的 Logs 目录。日志文件记录迁云过程中出现异常中断,如提示 Go2aliyun Not Finished
时,您可查看日志详情 定位并解决问题。
FAQ
1. 迁云日志关键字里包含了 TimeStamp
请检查系统时间是否为正确时间。
2. 迁云日志关键字里包含了 OperationDenied
请确保配置文件 user_config.json 中参数 access_id
所属的阿里云账号已 申请 开通迁云功能白名单。
3. Linux 服务器日志关键字里包含了 check rsync failed
请检查系统是否已安装 rsync 组件。
4. Linux 服务器迁云日志关键字里包含了 check virtio failed
请检查系统是否安装 virtio 驱动。
5. Linux 服务器迁云日志关键字里包含了 check selinux failed
请检查是否已禁用 SElinux。
您可以通过将文件 /etc/selinux/config 中的配置修改为 SELINUX=disabled
关闭 SELinux。
6. Linux 服务器迁云日志错误提示关键字里包含了 Do Grub Failed
日志文件提示如 Do Grub Failed
的错误信息时,确保源服务器已经安装了系统引导程序 GRUB(GRand Unified Bootloader)。您可以 安装 1.9 以上版本的系统引导程序 GRUB 后重试。
7. 日志错误提示关键字里包含了 Unknow Error
请检查配置文件 user_config.json 中参数 platform
取值是否正确。
8. 日志错误提示关键字里包含了 Permission denied
日志文件提示如 rsync: send_files failed to open "…": Permission denied (13)
的错误信息时,表明阿里云迁云工具无权访问该目录或文件夹,导致 rsync 失败。此时您可以通过配置 rsync_excludes_linux.txt 或者 Rsync/etc/rsync_excludes_win.txt 过滤该目录或文件夹,然后重试。
9. 日志错误提示关键字里包含了 NotEnoughBalance
中转实例的默认付费模式为 按量付费(Pay-As-You-Go),您的账号余额不足时,无法顺利迁云。您需要更新账户状态后重试。
10. 为什么启动 Others Linux 实例后,网络服务不正常?
导入 Others Linux 类型镜像时,阿里云不会对该自定义镜像所创建的 ECS 实例做任何配置工作,包括相关的网络配置、SSH 配置等。此时,您需要参阅 配置 Customized Linux 自定义镜像 自行修改。
如果网络配置失败,您可以 提交工单 联系阿里云。
11. 迁移 Linux 服务器后,根据该自定义镜像创建的 ECS 实例为何不能启动?
- 检查驱动。创建 I/O 优化的 ECS 实例时,请确保源服务器已经安装 virtio 驱动。
- 检查一下源系统引导配置是否正确。
如果你还没有阿里云账号,看完这篇文章之后可以去免费注册一下!