更新时间:2024-09-14 GMT+08:00

迁移操作

准备迁移工具依赖的软件包

在系统迁移过程中,迁移工具对特定的基础软件和系统参数存在依赖,本节介绍软件包和系统参数的准备工作。

  1. 远程连接待迁移的操作系统。

    根据弹性云服务器控制台操作指导,远程登录到待迁移虚拟机内部,远程登录的具体操作,请参见连接方式概述,并确保虚拟机内部与Internet相通。

  2. 检查待迁移系统网络是否能够正常访问HCE的repo源,确保迁移工具可以获取到依赖的软件(来自HCE的repo源)。
    执行命令curl https://repo.huaweicloud.com/hce/2.0/os/x86_64/命令检测是否能够访问HCE的repo源。若有类似如下输出信息,则能正常访问HCE的repo源。
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    Dload  Upload   Total   Spent    Left  Speed
    100  3417    0  3417    0     0    373      0 --:--:--  0:00:09 --:--:--   696
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet"  href="/repository/static/css/style.css" type="text/css"/>
    <style>
    * {
    font-family: 'Verdana', sans-serif;
    margin: 0;
    padding: 0;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    }
    ......
  3. 配置repo源(指原操作系统的repo源),确保迁移工具可以获取到依赖的软件。

    各操作系统的repo源地址不同,请配置正确的repo源地址。

  4. 安装依赖的软件包。
    1. 安装python基础软件包。
      [root@localhost ~]# yum install -y python //任意目录执行安装命令
    2. (可选)创建软连接。

      CentOS 8系列EulerOS 2.10/2.9版本需执行以下步骤,其他操作系统版本请忽略。

      1. 安装python3基础软件包。
        [root@localhost ~]# yum install -y python3 //任意目录执行安装命令
      2. 检查是否存在python软链接。
      3. 创建python软链接。
        [root@localhost]# python
        -bash: /usr/bin/python: No such file or directory   //python软链接不存在的提示信息
        [root@localhost]# cd /usr/bin/      //切换目录至/usr/bin下
        [root@localhost bin]# ln -s python3 python   //创建软件python软链接
        [root@localhost bin]# python
        Python 3.6.8 (default, Apr 16 2020, 01:36:27)
        [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
        Type "help", "copyright", "credits" or "license" for more information.
        >>>
        //通过ctrl+D退出上述界面

安装迁移工具并检查迁移条件

  1. 华为云开源镜像站下载最新版本的迁移工具安装包centos2hce2-*.rpm。
    *表示迁移工具版本,本节以centos2hce2-1.0.0-0.0.82.hce2.x86_64.rpm安装包示例。由于迁移工具不断更新,版本号也随之不断更新,操作过程中请适配为实际的安装包名称。
    [root@localhost test]# wget https://repo.huaweicloud.com/hce/2.0/updates/x86_64/Packages/centos2hce2-1.0.0-0.0.82.hce2.x86_64.rpm   //下载centos2hce2-*.rpm
    [root@localhost test]# ls  //检查是否下载成功
    centos2hce2-1.0.0-0.0.82.hce2.x86_64.rpm  
  2. 安装迁移工具。
    [root@localhost test]# rpm -ivh centos2hce2-1.0.0-0.0.82.hce2.x86_64.rpm --nodeps
    warning: centos2hce2-1.0.0-0.0.82.hce2.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID a8def926: NOKEY
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]
    Updating / installing...
    1:centos2hce2-1.0.0-0.0.6.hce2     ################################# [100%]
  3. 配置待迁移系统的系统软件数据的备份路径。

    在系统切换前,迁移工具将自动备份系统软件的所有数据至备份路径。

    执行vim /etc/centos2hce2.conf命令,在centos2hce2.conf配置文件中配置backup_dir字段,配置备份路径。backup_dir默认为/mnt/sdb/.osbak。

    # backup dir
    backup_dir = "/mnt/sdb/.osbak"    #配置原系统软件数据的备份路径
    • 为避免迁移过程中系统数据的丢失,建议配置备份目录。
    • 在系统迁移时,迁移工具会自动检查备份目录的空间。建议配置单独的数据盘(如/dev/sdb/,并将该分区挂载到/mnt/sdb/),避免因为空间不足导致的检查失败。
    • 请勿将tmpfs类型的文件系统(如/dev、/run等)作为备份目录,系统重启后tmpfs类型文件系统内的文件会丢失。
  4. 设置系统迁移参数。
    1. 设置web迁移方式。

      web迁移方式通过下载RPM包集合对系统迁移,因此要求在下载RPM包的过程中不能断网。

      在centos2hce2.conf配置文件中,参考参数说明进行设置:

      [repo_relation]
      .....
      # default yum source, val: web or iso
      default_yum_source = 'web'
      .....
      # if web as source, web link config as follow
      web_link_dir = "https://repo.huaweicloud.com/hce/2.0/os/x86_64/;https://repo.huaweicloud.com/hce/2.0/updates/x86_64/"
      表1 参数说明

      参数

      说明

      default_yum_source

      迁移方式,设置为'web'。

      web_link_dir

      HCE的base repo源和updates repo源地址,多个repo源之间需用英文分号隔开。

      设置为https://repo.huaweicloud.com/hce/2.0/os/x86_64/;https://repo.huaweicloud.com/hce/2.0/updates/x86_64/

      在此配置的HCE repo源地址会在迁移过程中自动替换掉当前旧系统的repo源,并在升级完成后恢复旧系统的repo源。

    2. 配置isclose_modules参数,仅CentOS 8系列需要配置。

      CentOS 8系列支持将RPM包集成为module的方式批量安装RPM包。HCE不支持此种安装方式。因此系统迁移前,须关闭module功能。

      • “yes”表示系统迁移前会自动关闭系统上的modules,默认为“yes”。
      • “no”表示系统迁移前不会自动关闭系统上的modules,且若检测到有modules开启时,迁移操作中断。
      [system]
      # whether close modules, if value is no, system may be not migrate
      isclose_modules = "yes"
      • 执行命令dnf module list可查看待迁移系统中所有运行的module。
      • 执行命令dnf module list | grep '\[e\]'可查看待迁移系统开启的module。
  5. 执行centos2hce2.py --check all命令,检查当前系统配置是否满足迁移条件。
    • 提示“Enviroment check passed!”时,表示满足迁移条件,可直接执行迁移操作。
    • 提示“call migration failed”时,表示不满足迁移条件,请根据步骤6自动处理相关异常信息。Error Number及其对应错误信息请参见表2
      表2 Error Number对应关系

      Error Number

      错误信息

      10001

      非root用户下执行迁移工具命令时,需要切换至root。

      10002

      URL存在问题,/etc/centos2hce2.conf配置文件中web_link_dir、web_link_tar参数填写有误导致无法下载对应repo文件、rpm文件,或者无法连通。

      10003

      基础命令缺失,例如rpm、yum、yumdownloader命令。

      10004

      空间检查失败,磁盘空间不足或者内存大小不足。

      10005

      原系统无本地yum源或者yum源不通,需要重新配置。

      10006

      目标系统yum源配置有误,检查/etc/centos2hce2.conf配置文件中web_link_dir参数填写是否有误。

      10007

      安装sut失败,检查/etc/centos2hce2.conf配置文件中web_link_dir参数填写是否有误。

      10008

      sut检查失败。

      10009

      依赖检查失败,需要先执行centos2hce2.py --install all安装依赖。

      10010

      chroot升级方式,清理原有chroot文件夹失败,文件夹路径见/etc/centos2hce2.conf配置文件中的chroot_path。

      10011

      chroot路径配置错误,/etc/centos2hce2.conf配置文件中chroot_path配置有误。

      10012

      chroot升级方式,并且配置了预构建环境tar包下载地址,解压tar包失败,检查/etc/centos2hce2.conf配置文件中的web_link_tar参数是否有误。

      10013

      /etc/ld.so.conf检查失败,需要清理/etc/ld.so.conf文件中除“include ld.so.conf.d/*.conf”之外的字段。

      10014

      文件系统存在损坏或异常,需要修复。

      10015

      /etc/fstab文件挂载目录不符合标准,需要将/etc/fstab文件中非LVM卷格式的文件系统分区以UUID进行挂载。

      10016

      开启文件属性检查后,系统内存在Immutable/Append_Only属性的文件,对于检查出的文件,需要加入到/etc/centos2hce2.conf配置文件中的exclude_dir字段。

      10017

      /etc/sysconfig/ntpd文件存在-u ntp:ntp配置,需要删除/etc/sysconfig/ntpd文件中-u ntp:ntp字段。

      10018

      /etc/ssh/sshd_config配置文件末尾无换行,需要在/etc/ssh/sshd_config文件末尾加入换行符号。

      10019

      系统中含有重复的rpm包,请先卸载不再使用的低版本rpm包后再次检查。(如果不想卸载重复包例如多内核场景kernel、kernel-devel等,直接进行升级,可以通过配置/etc/centos2hce2.conf文件中的extra_check_switch = false选项,跳过额外检查。)

  6. 安装迁移工具依赖的软件。

    执行centos2hce2.py --install all命令,迁移工具会先进行备份,接着系统自动安装迁移工具依赖的软件包,并进行迁移前相关预处理操作。

    以下提示表明,已安装依赖的软件包及相关预处理操作,需再次执行步骤5进行环境检查。

    2022-08-19 03:12:58,373-INFO-centos2hce2.py-[line:832]: Dependency packages already exist!
    2022-08-19 03:12:58,373-INFO-centos2hce2.py-[line:891]: migrate install depend options finished

7. (可选) 重复备份。

执行centos2hce2.py --backup force 命令,迁移工具会根据步骤3中配置的备份路径,对当前系统中的文件进行备份。

步骤6中安装的工具依赖软件包,在执行此命令之后也会被备份。

迁移系统至HCE

  1. 执行迁移命令centos2hce2.py --upgrade all 进行系统迁移。

    出现migrare sucess提示信息,表明系统迁移成功。迁移后支持回退至原系统,详见操作步骤1

    • 迁移命令不能设置为Linux后台执行方式。
    • 可附加--simple_name参数,使得迁移后的grub菜单中显示Huawei Cloud EulerOS的简称。
    • 在升级过程中如果遇到报错如图1所示,表明升级过程因冲突包中断,需要先进行系统回退,处理冲突包后再次执行升级。冲突包处理请参见冲突包列表
    图1 冲突包报错
  2. 系统迁移完毕后,执行reboot命令(若reboot无响应,执行reboot -f)使系统完成切换。

    系统重启后,执行cat /etc/hce-release命令查看迁移后的操作系统信息,执行uname -a命令查看系统内核信息。

    若显示Huawei Cloud EulerOS操作系统,则迁移成功;否则迁移失败,请联系技术工程师咨询。

    操作系统迁移为Huawei Cloud EulerOS后,控制台仍然显示迁移前的操作系统名称。您可手动更新控制台操作系统名称。

  3. 清理旧版本组件的文件。

    待迁移系统迁移到HCE后,新版本组件替换旧版本组件,但此时旧版本组件的文件仍然保存在系统中。执行命令centos2hce2.py --precommit upgrade可清理旧版本组件的文件。

    返回信息中提示“upgrade precommit success”表示环境清理成功。

    清理动作可执行多次。

  4. (可选)修改Cloud-init相关配置。
    • 若迁移之前的操作系统中存在Cloud-init,服务状态正常,且Cloud-init为rpm包形式,请跳过此步骤。
    • 若迁移之前的操作系统存在Cloud-init服务,服务状态正常,且Cloud-init为某个文件(如CentOS 7系列),非rpm包形式,迁移后请对/etc/cloud/cloud.cfg文件进行如下配置。
    1. 设置开放root密码远程登录并开启root用户的ssh权限。

      设置“disable_root”为“0”不禁用root用户;“ssh_pwauth”为“1”启用密码远程登录;“lock_passwd”为“False”不锁住用户密码。

      users:
       - name: root
         lock_passwd: False
      
      disable_root: 0
      ssh_pwauth: 1
    2. 执行/usr/bin/cloud-init init --local命令,无错误发生,说明Cloud-init配置成功。

      正确安装的Cloud-init会显示Cloud-init的版本详细信息,并且无任何错误信息。

    3. 如果在升级完成后出现cloud-init不可用的情况,需要重新安装cloud-init软件,具体操作参照安装Cloud-Init工具
  5. (可选)因迁移时会自动关闭selinux服务,如迁移后需启用selinux,执行centos2hce2.py --precommit upg-selinux命令。此命令分为两个阶段,每次执行后都需重启系统(若迁移前未开启selinux请忽略此步骤)。
    1. 执行centos2hce2.py --precommit upg-selinux命令。
      [root@localhost ~]# centos2hce2.py --precommit upg-selinux
      2022-08-21 23:46:23,891-INFO-centos2hce2.py-[line:1239]: precommit migration
      2022-08-21 23:46:23,891-INFO-centos2hce2.py-[line:1149]: begin to set selinux
      2022-08-21 23:46:23,892-INFO-centos2hce2.py-[line:1157]: grub path is /boot/grub2/grub.cfg
      2022-08-21 23:46:23,895-INFO-centos2hce2.py-[line:1162]: sed selinux succeed
      2022-08-21 23:46:23,897-INFO-centos2hce2.py-[line:1167]: create autorelabel file succeed
      2022-08-21 23:46:23,901-INFO-centos2hce2.py-[line:1172]: modify selinux config succeed
      2022-08-21 23:46:23,901-INFO-centos2hce2.py-[line:1174]: create phase 1 flag file succeed
      2022-08-21 23:46:23,901-INFO-centos2hce2.py-[line:1184]: selinux has been set, please reboot now
      2022-08-21 23:46:23,901-INFO-centos2hce2.py-[line:1206]: upgrade precommit selinux success
      [root@localhost ~]# reboot
    2. 系统重启后,再次执行centos2hce2.py --precommit upg-selinux命令。
      [root@localhost ~]# centos2hce2.py --precommit upg-selinux
      2022-08-21 23:57:07,576-INFO-centos2hce2.py-[line:1239]: precommit migration
      2022-08-21 23:57:07,576-INFO-centos2hce2.py-[line:1176]: now begin to set selinux phase 2
      2022-08-21 23:57:07,580-INFO-centos2hce2.py-[line:1181]: modify selinux config succeed
      2022-08-21 23:57:07,580-INFO-centos2hce2.py-[line:1183]: create phase 2 flag file succeed
      2022-08-21 23:57:07,580-INFO-centos2hce2.py-[line:1184]: selinux has been set, please reboot now
      2022-08-21 23:57:07,580-INFO-centos2hce2.py-[line:1206]: upgrade precommit selinux success
      [root@localhost ~]# reboot

      c.第二次重启后,执行getenforce查看selinux状态,Enforcing表明selinux为开启状态。

      [root@localhost ~]# getenforce
      Enforcing
  6. (可选)确认迁移完毕后,清理原系统数据。

    迁移操作完成后,原系统的系统数据仍然保留在新系统中,并占用较大内存。建议执行centos2hce2.py --commit all命令清理数据。

    执行命令后,系统会自动清理原系统的系统数据,包括步骤3中备份路径下的系统数据。

    执行命令后,操作系统无法回退。

    [root@localhost ~]# centos2hce2.py --commit all
    2022-08-22 04:45:32,601-INFO-centos2hce2.py-[line:1242]: commit migration

系统回退

  1. 系统回退。
    迁移操作支持系统回退,您可根据需要决定是否回退至原操作系统。
    1. 执行centos2hce2.py --rollback all命令进行系统回退。回退后,执行reboot命令对系统重启。

    2. 执行centos2hce2.py --precommit rollback命令,恢复环境。

  2. (可选)若迁移前已开启selinux,迁移时会自动关闭selinux服务。如有需要,回退后请手动恢复selinux状态。
    1. 执行centos2hce2.py --precommit rbk-selinux命令。
      [root@localhost ~]# centos2hce2.py --precommit rbk-selinux
      2022-09-05 03:58:37,015-INFO-centos2hce2.py-[line:1401]: precommit migration
      2022-09-05 03:58:37,047-INFO-centos2hce2.py-[line:1319]: now begin to set selinux
      2022-09-05 03:58:37,051-INFO-centos2hce2.py-[line:1324]: modify selinux config succeed
      2022-09-05 03:58:37,051-INFO-centos2hce2.py-[line:1325]: selinux has been set, please reboot now
      2022-09-05 03:58:37,051-INFO-centos2hce2.py-[line:1340]: set rollback selinux succeed
      2022-09-05 03:58:37,051-INFO-centos2hce2.py-[line:1365]: upgrade precommit selinux success
    2. 执行reboot命令,进行系统重启。
      [root@localhost ~]# reboot
    3. 系统重启后,可查看到selinux状态为开启状态。
      [root@localhost ~]# getenforce
      Enforcing
  3. 清理系统数据。

    执行centos2hce2.py --commit all命令清理数据。

    执行命令后,系统会自动清理目标系统和原系统的系统数据,包括步骤3中备份路径下的系统数据。

    [root@localhost ~]# centos2hce2.py --commit all
    2022-08-22 04:45:32,601-INFO-centos2hce2.py-[line:1242]: commit migration