操作系统迁移(Linux)

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

由于操作系统停止维护(EOL)、开源计划演进等原因,您在操作系统迁移及升级的同时需要保留ECS实例系统盘的数据时,可以通过SMC实现。本文主要介绍如何通过SMC进行操作系统迁移或者升级。

说明

通过SMC将CentOS 7/8迁移至RedHat 7/8目前仅对部分用户开放,如果您想体验此功能,可以提交工单进行申请。

背景信息

操作系统因生命周期、第三方支持等原因将会停止技术支持,例如CentOS官方将停止维护CentOS 7/CentOS 8等Linux项目,这些进入到停止维护周期(EOL)的操作系统版本将面临更大的安全漏洞威胁。如果您的ECS实例操作系统满足SMC操作系统迁移条件,可通过SMC平滑迁移或升级到新的操作系统版本,以得到更长的维护周期和技术支持。更多信息,请参见镜像维护周期和EOL应对方案

迁移及升级场景

迁移CentOS 7/8

操作系统架构

源操作系统

目标操作系统

X86

CentOS 7.x

  • AnolisOS 7

  • AnolisOS 8

  • Alibaba Cloud Linux 2

  • Alibaba Cloud Linux 3

    说明

    更多有关Alibaba Cloud Linux信息,请参见什么是Alibaba Cloud Linux

CentOS 7.9

RedHat 7

CentOS 8.x

  • AnolisOS 8

  • Alibaba Cloud Linux 3

CentOS 8.5

RedHat 8

ARM64

CentOS 7.x

  • AnolisOS 7

  • AnolisOS 8

  • Alibaba Cloud Linux 3

CentOS 8.x

  • AnolisOS 8

  • Alibaba Cloud Linux 3

迁移RedHat 7/8

操作系统架构

源操作系统

目标操作系统

x86

RedHat 7.9

Alibaba Cloud Linux 3

RedHat 8.x

升级Alibaba Cloud Linux 2

操作系统架构

源操作系统

目标操作系统

x86

Alibaba Cloud Linux 2

Alibaba Cloud Linux 3

迁移前须知

须知项

说明

评估迁移对业务的影响

  • 迁移过程中请勿人工或通过运维脚本对ECS云服务器执行停止、重启、释放等操作,否则可能会导致迁移失败。

  • 迁移演练或取消迁移可能会触发自动回滚迁移前快照的操作,迁移期间产生的数据将丢失。

  • 迁移升级过程中,源实例系统会被安装或更新系统内核及软件包,并自动重启多次,期间业务无法正常运行,建议评估影响暂停业务后再进行操作。

数据备份

迁移过程会对ECS云服务器进行创建普通云盘快照、操作系统内核版本转换、软件包重新安装升级、停止、启动等操作。建议提前做好重要数据备份,合理安排迁移窗口期,避免因上述操作对业务造成影响。

确保没有正在创建中的快照

如果有正在创建中的快照会导致迁移失败,请您等待快照创建完成后,再开始迁移。

全面测试验证

  • 在迁移前,强烈建议您预先在目标操作系统环境下完成所有业务应用程序的全面测试验证,以确保应用程序与目标操作系统之间的兼容性及性能表现,从而有效避免迁移后可能出现的业务运行不畅或功能失效等问题。

  • 迁移升级前和迁移过程中,系统会对源实例进行迁移条件检测及迁移预评估。如果源系统不满足迁移条件或迁移预评估失败,迁移会出错中断,并不能保证一定能迁移升级成功,建议您提前熟悉迁移条件限制及出错排查文档并进行测试。

操作系统属性

ECS云服务器操作系统迁移后,实例镜像ID会保持不变,操作系统会变更为迁移后的操作系统。

计费说明

迁移过程中系统会对ECS实例的全部云盘创建快照以备份数据,快照以按量付费方式收取一定费用。更多信息,请参见产品计费

迁移限制

限制类别

限制说明

通用限制

  • Anolis OS和Alibaba Cloud Linux系统不提供i686架构的软件包,如您的系统上安装了CentOS的i386(包括i686)架构的软件包,则无法正常迁移。

  • 如果云服务器ECS通过自定义镜像创建,则不支持操作系统迁移。

  • 操作系统迁移工具在迁移过程中涉及软件包的下载与安装,会产生一定的资源消耗。因此,迁移前您需要确保实例内保留了以下可用的资源容量:

    • 内存大小:600 MiB

    • 云盘容量:

      • /usr目录需要250 MiB

      • /var目录需要4 GiB

      • /boot目录需要100 MiB

    说明

    如果您的实例对应的计算资源(vCPU与内存)、存储资源(系统盘与数据盘)较小,建议您停止实例内的业务再进行操作系统迁移,避免因资源不足而导致迁移失败。

CentOS 7迁移至Alibaba Cloud Linux 2

Alibaba Cloud Linux 2使用4.19内核,CentOS 7使用3.10内核,两个版本的内核无法相互兼容。对于依赖于内核接口编程的业务,例如涉及内核OOT模块开发、硬件使能等,需要提前做好评估,明确是否适合直接迁移,以免操作系统迁移后业务无法运行。

CentOS 7迁移至Alibaba Cloud Linux 3

CentOS 7使用3.10内核,Alibaba Cloud Linux 3选用Linux kernel 5.10 LTS作为Alibaba Cloud Linux 3的内核,并选用GCC 10.2、binutils 2.35、glibc 2.32作为基础工具链。两个版本的内核无法相互兼容,依赖于内核接口编程的业务,例如涉及内核OOT模块开发、硬件使能等,需提前做好评估,明确是否适合直接迁移,以免操作系统迁移后业务无法正常运行。

CentOS 8迁移至Alibaba Cloud Linux 3

Alibaba Cloud Linux 3选用Linux kernel 5.10 LTS作为Alibaba Cloud Linux 3的内核,并选用GCC 10.2、binutils 2.35、glibc 2.32作为基础工具链。在软件包生态上与CentOS 8兼容。当您使用本文介绍的操作系统迁移工具将CentOS 8迁移为Alibaba Cloud Linux 3时,工具会对待迁移的操作系统进行基础判断。

前提条件

  • 已完成迁移前准备工作。具体操作,请参见迁移前准备

  • 待迁移ECS实例需为VPC网络实例。如果是经典网络实例,需先迁移到VPC网络环境。具体操作,请参见ECS实例从经典网络迁移到专有网络

  • 已对源系统和数据做快照进行备份,必要时可恢复。具体操作,请参见创建快照

    重要

    迁移会对操作系统内核、软件包、配置等进行修改,修改不可逆。

  • 迁移过程依赖于yum或者dnf,需确保这两个组件能够正常运行。

  • 迁移后原系统盘会被释放,如果原系统盘设置了自动快照随云盘释放,关联的自动快照默认也会被释放。如果您需要保留此快照,您可以手动取消自动快照随云盘释放。具体操作,请参见设置自动快照随云盘释放

  • 如果您需要迁移CentOS 7/8至RedHat 7/8,则需要确保源系统可访问以下公网:

    • https://www.redhat.com

    • https://ftp.redhat.com

    • https://cdn-public.redhat.com

    • https://developer.aliyun.com

    • http://developer.aliyun.com

迁移操作

  1. (条件必选)如果您需要迁移CentOS 7/8至RedHat 7/8,则必须完成以下操作,否则请跳过此步骤。

    1. 如果源系统已安装云安全中心客户端,则需要先卸载。

      说明

      迁移升级完成后可再安装。具体操作,请参见手动安装

      客户端卸载后会有一段保护期。如果您需要再次为服务器安装客户端,您必须在客户端卸载超过24小时后,重新安装客户端。如果您不想等待,可在服务器上重复执行3次以上安装命令才能重新安装成功(忽略其间的报错),否则重新安装的客户端会被自动卸载。

      1. 阿里云云安全客户端卸载界面,选择实例进行卸载。具体操作,请参见卸载客户端

      2. 使用远程连接工具连接服务器,执行以下命令。

        wget "http://update2.aegis.aliyun.com/download/uninstall.sh" && chmod +x uninstall.sh && ./uninstall.sh
        if ! lsmod | grep AliSecGuard; then echo 'Uninstall Success'; else echo "Uninstall Failed"; fi

        如果返回Uninstall Success,表示云安全中心客户端已成功卸载。

    2. 执行以下命令,将源系统升级至最新内核版本。

      CentOS 7

      #备份原yum软件源并更新为阿里云CentOS 7源
      mv /etc/yum.repos.d/ /etc/yum.repos.d.backup/
      mkdir -p /etc/yum.repos.d/
      wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
      wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
      yum clean all
      yum makecache
      #更新系统并重启
      yum -y update
      reboot

      CentOS 8

      #备份原yum软件源并更新为阿里云CentOS 8源
      mv /etc/yum.repos.d/ /etc/yum.repos.d.backup/
      mkdir -p /etc/yum.repos.d/
      wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.aliyuncs.com/repo/Centos-8.repo
      wget -O /etc/yum.repos.d/epel-archive-8.repo http://mirrors.cloud.aliyuncs.com/repo/epel-archive-8.repo
      yum clean all
      yum makecache
      #更新系统并重启
      yum -y update
      reboot
  2. 操作系统迁移。

    快速迁移(推荐)

    说明

    使用此方式需要满足以下条件:

    • 源服务器(即源ECS实例)需要具备公网访问能力

    • 源服务器需已安装云助手Agent(2017年12月01日之后使用公共镜像创建的ECS实例,默认预装了云助手Agent)。

    • 如果您使用RAM用户导入迁移源,则需要为RAM用户授权:

      • 需要授予RAM用户只读访问RAM权限AliyunRAMReadOnlyAccess。具体操作,请参见为RAM用户授权

      • 需要为RAM用户授予云助手管理权限AliyunECSAssistantFullAccess。具体操作,请参见访问控制RAM介绍

    1. 登录SMC控制台

    2. 在左侧导航栏,选择云上迁移 > 操作系统迁移

    3. 在页面左上角,单击开始迁移

    4. 在弹出的操作系统迁移对话框中,选择待迁移的ECS实例后,单击前置检测

      可以通过实例ID、地域筛选ECS实例。

      image

    5. 在弹出的操作系统迁移对话框中,系统自动进行操作系统迁移前置检查,大约需要10s,请您耐心等待。

      • 当前置检测状态由image变为image,表示前置检查通过。

      • 当前置检测状态由image变为image,表示前置检查不通过,您可以根据界面提示修复问题后重新迁移。

    6. 仔细阅读操作系统迁移注意事项后,选中我已知晓以上风险,同意并授权阿里云为该实例的全部云盘创建快照,并单击下一步

      image

    7. 在弹出的操作系统迁移对话框中,按需选择目标操作系统。

      • 统一迁移至同一目标操作系统:如果执行批量迁移,您可以将不同实例统一迁移至同一个操作系统。

      • 按实例选择目标操作系统:如果执行批量迁移,您可以按需将不同实例迁移至不同的操作系统。

    8. 单击检测是否可迁移,查看迁移检测结果。

      检测大约需要30s,请您耐心等待。

      • image:表示操作系统可以迁移。

      • image:表示不支持迁移。您可以根据界面提示,查看不支持迁移的原因。

    9. 单击确定迁移

      您可以在操作系统迁移页面,查看操作系统迁移的进度。

      警告

      在操作系统迁移的过程中,请勿人工或通过运维脚本对ECS实例执行停止、重启、释放等操作,否则会导致操作系统迁移失败。

      image

    分步迁移

    步骤一:导入迁移源

    迁移源概指您的待迁移IDC服务器、虚拟机、其他云平台的云主机或其他类型的服务器。SMC支持多种导入迁移源方式,您可以根据实际需要选择对应的导入迁移源方式。更多信息,请参见如何选择导入迁移源方式?

    命令行一键导入迁移源(推荐)

    重要

    源服务器需要具备公网访问能力

    1. 登录SMC控制台

    2. 在左侧导航栏,选择云上迁移 > 操作系统迁移

    3. 操作系统迁移页面,单击导入迁移源

    4. 根据界面提示配置参数并复制激活码命令,关于参数的说明,具体如下表所示。

      参数

      说明

      迁移源类型

      选择阿里云ECS云服务器

      导入方式

      选中命令行导入

      激活数额度

      请输入激活码可激活的迁移源数量。取值范围为1~1000 ,默认为10。

      有效期

      请输入激活码的有效期。取值范围为1~90天,默认为30天。

      激活码

      生成激活码后,复制命令。操作步骤如下:

      1. 单击生成激活码

      2. 单击Linux Shell页签。

      3. 单击复制,复制激活码命令。

    5. 登录源服务器,使用管理员权限粘贴并运行复制的命令,执行导入迁移源的操作。

      1. 登录Linux源服务器。

      2. 使用管理员权限粘贴并运行复制的命令,执行导入迁移源的操作。

        image.png

        执行命令后,出现类似Import Source Server [s-bp18x8751kgz2oyh****] Successfully!回显信息,表示导入迁移源成功。

    6. 在SMC控制台的服务器迁移页面的迁移实时状态列,查看迁移源的状态。

      • 如果迁移源为迁移源在线状态,表示导入迁移源成功。

      • 如果迁移源为其他状态,表示导入迁移源失败。请参见以下方案解决问题后,重新导入迁移源。

        • 请根据控制台出错提示或者通过查看SMC客户端目录下日志文件解决问题。SMC客户端默认安装目录如下:

          • Windows源服务器:默认安装目录为 C:\smc

          • Linux源服务器:默认安装目录为/smc

        • 常见问题及修复方案,请参见SMC FAQ故障排除

    通过SMC客户端导入迁移源

    关于SMC客户端的更多信息,请参见SMC客户端使用指南

    1. 登录SMC控制台

    2. 在左侧导航栏,选择云上迁移 > 操作系统迁移

    3. 操作系统迁移页面,单击导入迁移源

    4. 导入迁移源页面,配置相关参数,参数说明如下表所示。

      参数

      说明

      迁移源类型

      选择阿里云ECS云服务器

      导入方式

      选中客户端导入

      导入说明

      导入说明后,请根据源服务器操作系统的架构(Arm和x86)和位数(32位和64位),下载对应的SMC客户端。

    5. 导入迁移源。

      重要

      迁移的过程中请勿关闭SMC客户端直至迁移完成。否则,迁移源将与SMC控制台失去联系,无法完成迁移。

      1. 使用支持文件传输的第三方远程连接工具将SMC客户端压缩包上传至Linux源服务器。例如:WinSCP。

      2. 远程连接Linux源服务器并解压SMC客户端压缩包。

        本示例中以解压Linux 64位通用版为例,如果您使用其他版本的SMC客户端,命令中的压缩包名称需要替换为实际下载的SMC客户端名称。

        tar xf go2aliyun_client_linux_x86_64.tar.gz
        说明

        Linux 64位ARM版支持的实例规格族为通用型实例规格族g6r和计算型实例规格族c6r。更多实例规格信息,请参见企业级ARM计算规格族群

      3. (可选)如果您不需要迁移部分文件或目录,可排除不迁移的文件或目录。具体操作,请参见如何过滤、排除不需要迁移的文件或目录?

        重要

        如果开启块复制功能迁移,则不支持排除不迁移的文件或目录。

      4. 获取激活码或者访问密钥(AccessKey)。

        • (推荐)获取激活码:在SMC控制台的导入说明中,单击生成激活码并复制激活码信息。

        • 获取访问密钥(AccessKey):阿里云账号的访问密钥AccessKey包括AccessKey ID和AccessKey Secret,如果您未创建,请先创建。具体操作,请参见创建AccessKey

      5. 在SMC客户端文件夹下,执行以下命令,运行SMC客户端。

        根据迁移源操作系统对root权限和sudo权限的支持情况,选择运行方式。

        使用root权限运行
        cd go2aliyun_client_linux_x86_64
        chmod +x go2aliyun_client
        ./go2aliyun_client
        使用sudo权限运行
        cd go2aliyun_client_linux_x86_64
        sudo chmod +x go2aliyun_client
        sudo ./go2aliyun_client
      6. 根据提示信息,输入激活码或者访问密钥(AccessKey)。本示例以输入激活码为例:adad

        输入激活码或者访问密钥后,可能会出现以下提示信息:

        • 若迁移源系统没有安装快照驱动,则SMC客户端会提示,具体如下图所示,您可根据需求选择是否安装快照驱动。

          • 如果在创建迁移任务时启用块复制,则输入yes,自动安装快照驱动。

          • 如果在创建迁移任务时不启用块复制,则输入no即可。

          重要

          如果安装快照驱动失败,请勿在创建迁移任务时启用块复制,否则会导致迁移失败。

          123

        • 多数主流迁移源系统已默认安装rsync。若没有安装,则SMC客户端会提示,请输入yes自动安装rsync,如下图所示。安装rsync

        • 若迁移源系统的SELinux处于开启状态,则SMC客户端会提示您关闭。请输入yes自动关闭SELinux,如下图所示。关闭SELinux

        当回显出现类似Import Source Server [s-bp11npxndknsycqj****] Successfully!的信息时,表示导入迁移源成功。

        说明

        如果导入迁移源失败,您可以根据回显信息,解决问题后,根据迁移源操作系统对root权限和sudo权限的支持情况,依次运行以下命令,退出后台程序并重新导入迁移源。常见问题及修复方案的更多信息,请参见SMC FAQ故障排除

        使用sudo权限
        sudo ./go2aliyun_client --abort
        sudo ./go2aliyun_client
        使用root权限
        ./go2aliyun_client --abort
        ./go2aliyun_client
    6. 在SMC控制台的操作系统迁移页面的迁移实时状态列,查看迁移源的状态。

      • 如果迁移源为迁移源在线状态,表示导入迁移源成功。

      • 如果迁移源为其他状态,表示导入迁移源失败。请参见以下方案解决问题后,重新导入迁移源。

        • 请根据控制台出错提示或者通过查看SMC客户端目录下日志文件解决问题。SMC客户端默认安装目录为 /smc

        • 常见问题及修复方案,请参见SMC FAQ故障排除

    步骤二:创建迁移任务

    1. 在目标迁移源的操作列,单击开始迁移

    2. 在弹出的迁移配置对话框中,配置参数信息。

      操作系统迁移参数配置说明如下所示:

      • 当前操作系统:默认显示当前操作系统,不可修改。例如:CentOS 7。

      • 目标操作系统:在下拉列表中选择目标操作系统。例如:Alibaba Cloud Linux 3。

      • 迁移演练(可选项):

        根据需要来决定是否开启迁移演练,默认开启。目前仅支持Linux操作系统迁移。更多信息,请参见配置迁移演练

        说明

        迁移演练是在实际迁移前对迁移方案进行模拟和验证的过程。它可以帮助用户在实际迁移前充分了解迁移方案的可行性和风险,从而减少实际迁移中可能出现的问题和损失。

        迁移演练可以帮助您快速发现迁移中存在的潜在问题,并提供修复方案,提升迁移成功率。

      • 执行方式(条件必选):

        迁移演练开启时,可在执行方式选项中,更换所需的迁移演练执行方式。默认选项是演练并迁移

        两种方式的区别如下:

        • 仅演练:仅创建迁移演练任务,迁移演练完成后,如果需要操作系统迁移,需要手动启动操作系统迁移任务。

        • 演练并迁移:迁移演练完成后,如果不存在状态为严重的演练项,系统自动启动操作系统迁移任务。

    3. 在弹出的操作系统迁移请确认对话框中,仔细阅读注意事项后,单击我确认我已知晓

    4. 创建迁移任务对话框中,单击立即查看,等待迁移任务完成。

      警告

      在操作系统迁移的过程中,请勿人工或通过运维脚本对Linux实例执行停止、重启、释放等操作,否则会导致操作系统迁移失败。

验证迁移结果

  • 当迁移实时状态为已完成时,表示操作系统迁移成功。

    image

    说明

    迁移任务完成后,ECS实例会自动重启,在系统初始化阶段进行更新软件包等操作,请勿对ECS实例进行操作,等待系统启动成功即可。系统初始化阶段大约需要15~30分钟,具体时间与系统软件包数量有关。

    在目标迁移源的操作列下单击查看目标实例,然后在ECS实例的实例详情页签下的配置信息区域,查看操作系统已经迁移为目标系统。

    image

    重要

    迁移升级后,源实例系统会被升级为新的系统内核及软件包,原有应用数据不变,但应用软件可能由于环境或依赖关系改变而无法正常运行,导致业务无法正常运行,请您做好测试验证。

  • 迁移实时状态出错时,表示迁移任务出错。

    此时,您需要排查问题后重试:

    1. 操作列,单击排查错误,根据错误码和错误信息提示修复问题。更多信息,请参见SMC FAQ故障排除

    2. 迁移任务页面,单击重试任务

      迁移任务会从上一次结束的进度处继续迁移。

      重要

      如果中转实例已被释放,需要重新迁移。具体操作,请参见误释放了中转实例怎么办

    如果需要回滚源系统云盘数据,您可以在快照列表使用自动备份的快照进行数据恢复。操作步骤如下:

    1. 登录ECS管理控制台

    2. 在左侧导航栏,选择存储与快照 > 快照

    3. 云盘快照页签下,在自动备份的快照操作列,单击回滚磁盘adada56

    4. 在弹出的回滚云盘对话框中,单击确定

资源清理

迁移时,SMC会对ECS实例的云盘创建2块名称为SMC_Backup_Snapshot_XXXSMC_Transition_Snapshot_XXX的按量付费快照,用于备份和中转数据。您需要根据迁移是否成功选择是否需要手动清理该快照:

  • 迁移成功:快照会自动释放,您无需手动清理。

  • 迁移出错:快照会随迁移任务一直存在并产生费用。您可以选择以下方式释放快照,避免不必要的扣费:

    • 如果您已确认不再使用该迁移任务,单击迁移源ID,在迁移任务的操作列,单击清理迁移,通过删除迁移任务自动删除快照。

    • 手动删除快照。具体操作,请参见删除快照