本文描述如何使用迁云工具迁移 IDC 服务器、虚拟机或者云主机到阿里云。如果您有数据库迁云需求,请访问 数据迁移

注意事项

使用迁云工具前,您需要注意:

  • 确保系统本地时间与实际时间一致,否则会报错 IllegalTimestamp 异常。

  • 待迁云的源服务器必须能够访问公网,且防火墙入方向必须放行下列通信端口以访问相关公网服务:

    • 通过 HTTP 80 端口访问 ECS 和 VPC:http://ecs-cn-hangzhou.aliyuncs.comhttp://vpc.aliyuncs.com

    • 通过 HTTPS 443 端口访问 STS:https://sts.aliyuncs.com

    • 通过 8080 和 8703 代理端口访问中转实例的公网 IP 地址

  • 迁云工具暂不支持迁移增量数据。对于源服务器上需要保持数据完整的业务,您可以选择一个业务空闲时段,暂时停止这些业务,再迁移数据。

  • 迁云工具会在您的云账号下创建一台临时中转实例,将源服务器系统数据传输到中转实例。为避免迁云失败,请勿停止、重启或者释放中转实例。迁云完成后,该中转实例会自动释放。

  • 如果您使用的是 RAM 子账号,请确保您已被授权云服务器 ECS AliyunECSFullAccess 权限和专有网络 VPC AliyunVPCFullAccess 权限。更多详情,参阅 RAM 文档 授权策略管理

Linux 服务器注意事项

当您的源服务器为 Linux 系统时,会有以下额外要求:

  • 源服务器必须已经安装了 Rsync 库:

    • CentOS:运行 yum install rsync –y

    • Ubuntu:运行 apt-get install rsync –y

    • Debian:运行 apt-get install rsync –y

    • 其他发行版:参考发行版官网安装相关的文档。

  • 确保源服务器已关闭 SELinux。您可以运行 setenforce 0 临时关闭 SELinux。同时,建议您在 /etc/selinux/config 中,设置 SELINUX=disabled,禁用 SELinux。

  • 确保源服务器已 安装 Virtio(KVM)驱动

  • 对于 CentOS 5、Red Hat 5 和 Debian 7 等系统,需要 安装 1.9 以上版本的系统引导程序 GRUB

步骤 1:下载并安装迁云工具

  1. 下载迁云工具压缩包,解压后包含的文件列表如下:
    表 1. Windows 服务器
    文件(夹)名 描述
    Excludes 文件夹 过滤筛选文件夹,设置不迁云的路径,默认包含 rsync_excludes_win.txt。
    client_data 迁云过程中的数据文件,包含ECS 中转实例信息、迁移进度等。
    user_config.json 源服务器信息配置文件。
    go2aliyun_gui.exe 迁云工具 Windows GUI 版本主程序,详情请参阅 迁云工具 Windows GUI 版本介绍
    go2aliyun_client.exe 迁云工具命令行版本主程序
    表 2. Linux 服务器
    文件(夹)名 描述
    Check 检测工具文件夹,默认包含辅助程序 client_check
    client_data 迁云过程中的数据文件
    user_config.json 源服务器信息配置文件
    Excludes文件夹 过滤筛选文件夹,设置不迁云的路径,默认包含 rsync_excludes_linux.txt
    go2aliyun_client 迁云工具主程序
  2. 登录待迁云的服务器、虚拟机或者云主机。

  3. 将下载的迁云工具压缩包解压到指定的目录。

步骤 2:编辑 user_config.json 文件

user_config.json 是一份以 JSON 语言编写的配置文件,位于迁云工具所在路径中。user_config.json 主要包含源服务器的必要配置信息,例如,AccessKey 和目标自定义镜像的配置信息等。

说明

如果您使用的 Windows GUI 版本主程序,您可以在 GUI 界面完成 user_config 配置。更多详情,请参阅 迁云工具 Windows GUI 版本介绍

  1. 在迁云工具路径中使用编辑器打开 user_config.json 文件。以下为文件初始状态:
    {
        "access_id": "",
        "secret_key": "",
        "region_id": "",
        "image_name": "",
        "system_disk_size": 40,
        "platform": "",
        "architecture": "",
        "bandwidth_limit":0,
        "data_disks": []
    }
  2. 根据下表中的参数说明编辑文件。
    表 3. 服务器配置参数说明
    参数名 类型 是否必填 描述
    access_id String 您的阿里云账号的 API 访问密钥 AccessKeyID。
    说明

    迁云工具需要使用 AccessKeyID 以及 AccessKeySecret,AccessKey 是您的重要凭证,请妥善保管,防止泄露。

    secret_key String 您的阿里云账号的 API 访问密钥 AccessKeySecret。
    region_id String 您的服务器迁移入阿里云的地域 ID,如 cn-hangzhou(华东1),取值参阅 地域与可用区
    image_name String 为您的服务器镜像设定一个镜像名称,该名称不能与同一地域下现有镜像名重复。长度为[2, 128]个英文或中文字符。必须以大小字母或中文开头,不能以http://和https://开头。可以包含数字、半角冒号(:)、下划线(_)或者连字符(-)。
    system_disk_size int 为系统盘指定大小,单位为 GiB。取值范围:[40, 500]
    说明 该参数取值需要大于源服务器系统盘实际占用大小,例如,源系统盘大小为 500 GiB,实际占用 100 GiB,那该参数取值只要大于 100 GiB 即可。
    platform String 源服务器的操作系统。取值范围:Windows Server 2003 | Windows Server 2008 | Windows Server 2012 | Windows Server 2016 | CentOS | Ubuntu | SUSE | OpenSUSE | Debian | RedHat | Others Linux
    说明

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

    architecture String 系统架构。取值范围:i386 | x86_64
    bandwidth_limit int 数据传输的带宽上限限制,单位为 KB/s。

    默认值:0,0 表示不限制带宽速度。

    data_disks Array 数据盘列表,最多支持 16 块数据盘。具体参数参阅下表数据盘配置参数说明。该参数可以置为缩容数据盘的预期数值,单位为 GiB,该值不能小于数据盘实际使用空间大小。
    表 4. 数据盘配置参数说明
    参数名 类型 是否必填 描述
    data_disk_index int 数据盘序号。取值范围:[1, 16]

    初始值:1

    data_disk_size int 数据盘大小。单位为 GiB。取值范围:[20, 32768]
    说明 该参数取值需要大于源服务器数据盘实际占用大小。例如,源数据盘大小为 500 GiB,实际占用 100 GiB,那该参数取值需要大于 100 GiB。
    src_path String 数据盘源目录。取值举例:
    • Windows 指定盘符,例如,D、E 或者 F。

    • Linux 指定目录,例如,/mnt/disk1、/mnt/disk2 或者 /mnt/disk3。

      说明 不能配置为根目录或者系统目录,例如,/bin、/boot、/dev、/etc、/lib、/lib64、/sbin、/usr 和 /var。
  3. 检查 JSON 语言格式的规范性,关于 JSON 的语法标准请参阅 RFC 7159

此处以四种场景为例,为您示范如何根据场景编辑 user_config.json 文件:

场景一:迁移一台无数据盘的 Windows 服务器
  • 假设您的服务器配置信息为:
    • 操作系统:Windows Server 2008
    • 系统盘:30 GiB
    • 系统架构:64 位
  • 您的迁云目标为:
    • 目标地域:阿里云华东 1 地域(cn-hangzhou
    • 镜像名称:CLIENT_IMAGE_WIN08_01
    • 系统盘设置:50 GiB
{
    "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": [],
    "bandwidth_limit": 0
}
场景二:迁移一台带数据盘的 Windows 服务器

如果您的 Windows 服务器在场景一的基础上加入了 3 块数据盘,源目录和数据盘大小分别为:

  • D:100 GiB
  • E:150 GiB
  • F:200 GiB
{
    "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:"
        }
    ],
    "bandwidth_limit": 0
}
场景三:迁移一台无数据盘的 Linux 服务器
  • 假设您的服务器配置信息为:
    • 发行版本:CentOS 7.2
    • 系统盘:30 GiB
    • 系统架构:64 位
  • 您的迁云目标为:
    • 目标地域:阿里云华东 1 地域(cn-hangzhou
    • 镜像名称:CLIENT_IMAGE_CENTOS72_01
    • 系统盘设置:50 GiB
{
    "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": [],
    "bandwidth_limit": 0
}
场景四:迁移一台有数据盘的 Linux 服务器

如果您的 Linux 服务器在场景三的基础上加入了 3 块数据盘,源目录和数据盘大小分别为:

  • /mnt/disk1:100 GiB
  • /mnt/disk2:150 GiB
  • /mnt/disk3:200 GiB
{
    "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"
        }
    ],
    "bandwidth_limit": 0
}

步骤 3:过滤无需迁云的目录

迁云工具能过滤文件或者目录,过滤的文件不会被迁移到云端。具体通过配置 rsync 实现过滤,过滤配置放在Excludes目录下。

说明 建议您排除无需迁云的数据盘或者目录,以减少迁云传输时间以及云端磁盘使用空间。
过滤Windows系统的文件

默认过滤的文件(夹)包括pagefile.sys、$RECYCLE.BIN和System Volume Information。

  • 系统盘:配置Excludes目录下的rsync_excludes_win.txt。

  • 数据盘:在Excludes目录下新建并配置

    • rsync_excludes_win_disk1.txt
    • rsync_excludes_win_disk2.txt
    • rsync_excludes_win_disk3.txt

      ……

Windows系统示例
  • 假设您需要过滤C盘文件夹 C:\MyDirs\Docs\Words 和文件 C:\MyDirs\Docs\Excels\Report1.xlsx,可在rsync_excludes_win.txt中添加过滤配置:

    /MyDirs/Docs/Words/
    /MyDirs/Docs/Excels/Report1.xlsx
  • 假设您需要过滤D盘文件夹 D:\MyDirs\Docs\Words 和文件 D:\MyDirs\Docs\Excels\Report1.xlsx,可在rsync_excludes_win_disk1.txt中添加过滤配置:

    /MyDirs/Docs/Words/
    /MyDirs/Docs/Excels/Report1.xlsx
过滤Linux系统的文件

默认过滤的文件或目录包括/dev/*、/sys/*、/proc/*、/media/*、lost+found/*、/mnt/*和/var/lib/lxcfs/*。

说明 /var/lib/lxcfs/*目录仅针对部分系统版本,例如,无权访问Ubuntu的Linux容器服务缓存目录时,需要排除Ubuntu的/var/lib/lxcfs/*才能顺利迁云。
  • 系统盘:配置Excludes目录下的rsync_excludes_linux.txt。

  • 数据盘:在Excludes目录下新建并配置

    • rsync_excludes_linux_disk1.txt
    • rsync_excludes_linux_disk2.txt
    • rsync_excludes_linux_disk3.txt

      ……

Linux系统示例
  • 假设您需要过滤系统盘(根目录/)文件夹/var/mydirs/docs/words和文件/var/mydirs/docs/excels/report1.sh,可在rsync_excludes_linux.txt中添加过滤配置:

    /var/mydirs/docs/words/
    /var/mydirs/docs/excels/report1.sh
  • 假设您需要过滤数据盘目录/mnt/disk1中的文件夹/mnt/disk1/mydirs/docs/words 和文件 /mnt/disk1/mydirs/docs/excels/report1.sh,可在rsync_excludes_linux_disk1.txt中添加过滤配置:

    /mydirs/docs/words/
    /mydirs/docs/excels/report1.sh
    说明 Linux数据盘需要去掉数据盘src_path前缀路径,例如去掉上述示例中的/mnt/disk1。

步骤 4:(可选)编辑 client_data 文件

警告 如果您能直接从自建机房(Integrated Data Center,IDC)、虚拟机环境或者云主机访问某一阿里云地域下的专有网络VPC,您可以编辑 client_data 文件。反之,请勿自行修改配置文件client_data,否则会影响迁云工作,出现进程卡顿等现象。

client_data 文件记录了迁云过程中的数据文件,关于如何编辑和配置 client_data 文件,请参阅VPC内网迁云

每成功迁云一次,配置文件 client_data 会自动记录迁云成功后在 ECS 控制台创建的 ECS 实例的相关数据。再次迁云时,您需要使用初始下载的客户端配置文件。

步骤 5:运行迁云工具

Windows 服务器:右击 go2aliyun_client.exe,选择 以管理员身份运行。GUI 版本程序操作指南请参阅 迁云工具 Windows GUI 版本介绍

Linux 服务器:以 root 用户身份运行迁云工具。
  1. 运行 chmod +x ./go2aliyun_client

  2. 运行 ./go2aliyun_client

迁云结果

当提示 Goto Aliyun Finished! 时,前往 ECS管理控制台 镜像详情页查看结果。您的源服务器中的操作系统、应用程序以及应用数据等以自定义镜像的形式出现在相应地域的 ECS 控制台上。

当提示 Goto Aliyun Not Finished! 时,检查同一目录下 Logs 文件夹下的日志文件 排查故障。修复问题后,重新运行迁云工具,迁云工具会从上一次执行的进度中继续迁云。
说明
  • 迁云中断后再次执行工具时或者工具会提示迁云已完成时都是从 client_data 文件获取信息。迁云工作完成后再次运行想重新迁云工具时,您需要使用初始的 client_data 文件或者清空现有的 client_data 文件数据。
  • 初始化 client_data 文件后,任务进度信息丢失并且迁云工作会从头开始。在诸如中转实例被意外释放释放或者 VPC、VSwitch 和安全组信息错误等原因导致的迁云中断事件中,您可以在排查故障后使用初始化的 client_data 文件。

下一步

您可以 使用该自定义镜像创建按量付费 ECS 实例 或者 使用自定义镜像更换系统盘,测试自定义镜像能否正常运行。

迁移带数据盘的 Linux 服务器后,启动实例时默认不挂载数据盘。您可以在启动 ECS 实例后运行 ls /dev/vd* 命令查看数据盘设备,根据实际需要手动挂载,并编辑 /etc/fstab 配置开机自动挂载。更多详情,参阅 Linux 格式化和挂载数据盘

反馈与支持

您可以通过以下渠道咨询数据上云和获取技术支持: