
# 迁移操作
#### 迁移前须知
1. 在进行迁移操作前，请仔细阅读[系统迁移与系统切换的相关介绍](https://support.huaweicloud.com/hce_faq/hce_03_0001.html#section2)，并根据您的实际业务情况来评估是选择系统迁移还是系统切换方案；系统切换的详细指南参见[系统切换](https://support.huaweicloud.com/usermanual-hce/hce_01_0105.html)；
2. 不同的软件、版本对操作系统的兼容性存在差异，在迁移开始前，请充分测试您所使用的软件与HCE系统的兼容性，确保迁移后业务正常；
3. 迁移前请做好必要的系统与数据备份，防止因非预期原因导致业务受损。
#### 准备迁移工具依赖的软件包
在系统迁移过程中，迁移工具对特定的基础软件和系统参数存在依赖，本节介绍软件包和系统参数的准备工作。
1. 远程连接待迁移的操作系统。 根据弹性云服务器控制台操作指导，远程登录到待迁移虚拟机内部，远程登录的具体操作，请参见[连接方式概述](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)，并确保虚拟机能够与互联网建立正常通信。
   
2. 检查待迁移系统网络是否能够正常访问HCE的repo源，确保迁移工具可以获取到依赖的软件（来自HCE的repo源）。
   执行命令**curl https://repo.huaweicloud.com/hce/3.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. （可选）创建软连接。
      ![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
      **CentOS 8系列** 及**EulerOS 2.10/2.9**版本需执行以下步骤，其他操作系统版本请忽略。
      1. 安装python3基础软件包。
         ```
         [root@localhost ~]# yum install -y python3 //任意目录执行安装命令
         ```
         
      
      2. 执行下述命令检查是否存在python软链接。
         ```
         [root@localhost]# ll /usr/bin/ | grep python
         ```
         - 若显示"python -\> /usr/bin/python3"，但不显示"python3 -\> python3.9"，则代表python软链接已存在，但没有链接至python3，需执行如下命令删除原有python软链接，再执行[创建python软链接]。
           ```
           [root@localhost]# unlink /usr/bin/python
           ```
           
         
         - 若显示"python -\> /usr/bin/python3"，并且显示"python3 -\> python3.9"，请继续执行[安装迁移工具并检查迁移条件]。
         
         - 若无上述显示，则代表python软链接不存在，执行[创建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. 从[华为云开源镜像站](https://repo.huaweicloud.com/hce/2.0/updates/x86_64/)下载最新版本的迁移工具安装包centos2hce3-\*.rpm。
   -
     ```
     [root@localhost test]# dnf download centos2hce3 --nogpgcheck --repofrom=centos2hce3_repo,https://repo.huaweicloud.com/hce/3.0/updates/x86_64/   //下载centos2hce3-*.rpm
     [root@localhost test]# ls  //检查是否下载成功，此处软件的版本号可能会不同
     centos2hce3-1.0.0-0.0.18.hce3.x86_64.rpm
     ```
     
   
   -
     ```
     [root@localhost test]# echo -e "[centos2hce3]\nname=centos2hce3_repo\nbaseurl=https://repo.huaweicloud.com/hce/3.0/updates/x86_64/\nenabled=1\ngpgcheck=0" > /etc/yum.repos.d/centos2hce3.repo && yum install centos2hce3 --downloadonly --downloaddir=. && rm -f /etc/yum.repos.d/centos2hce3.repo && yum makecache   //下载centos2hce3-*.rpm
     [root@localhost test]# ls  //检查是否下载成功，此处软件的版本号可能会不同
     centos2hce3-1.0.0-0.0.18.hce3.x86_64.rpm
     ```
     
    
2. 安装迁移工具。
   ```
   [root@localhost test]# rpm -ivh centos2hce3-1.0.0-0.0.18.hce3.x86_64.rpm --nodeps // 注意将版本号替换为您实际下载到的版本
   warning: centos2hce3-1.0.0-0.0.18.hce3.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID a8def926: NOKEY
   Verifying...                          ################################# [100%]
   Preparing...                          ################################# [100%]
   Updating / installing...
   1:centos2hce3-1.0.0-0.0.18.hce3     ################################# [100%]
   ```
   
3. 配置待迁移系统的系统软件数据的备份路径。
   在系统迁移前，迁移工具将自动备份系统软件的所有数据至备份路径。
   执行**vim /etc/centos2hce3.conf** 命令，在**centos2hce3.conf**配置文件中配置backup_dir字段，配置备份路径。backup_dir默认为/mnt/sdb/.osbak。
   ```
   # backup dir
   backup_dir = "/mnt/sdb/.osbak"    #配置原系统软件数据的备份路径
   ```
   ![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
   - 为避免迁移过程中系统数据的丢失，建议配置备份目录。
   
   - 在系统迁移时，迁移工具会自动检查备份目录的空间。建议配置单独的数据盘（如/dev/sdb/，并将该分区挂载到/mnt/sdb/），避免因为空间不足导致的检查失败。
   
   - 请勿将tmpfs类型的文件系统（如/dev、/run等）作为备份目录，系统重启后tmpfs类型文件系统内的文件会丢失。
     
4. 设置系统迁移参数。
   1. 设置web迁移方式。 web迁移方式通过下载RPM包进行系统迁移，因此要求在下载RPM包的过程中不能断网。
      在centos2hce3.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/3.0/os/x86_64/;https://repo.huaweicloud.com/hce/3.0/updates/x86_64/"
      ```
      表1主要参数说明 
      | 参数                 | 说明                                                                                                                                                                                                                                                                                                                                                                      |
      |:---|:---|
      | default_yum_source | 迁移方式，设置为'web'。                                                                                                                                                                                                                                                                                                                                                          |
      | web_link_dir       | HCE的base repo源和updates repo源地址，多个repo源之间需用英文分号隔开。 设置为https://repo.huaweicloud.com/hce/3.0/os/x86_64/;https://repo.huaweicloud.com/hce/3.0/updates/x86_64/ 在此配置的HCE repo源地址会在迁移过程中暂时替换掉当前旧系统的repo源。迁移完成后，恢复被替换的repo源，此时系统中将存在HCE的repo源文件与旧系统的repo源文件，建议将/etc/yum.repos.d/目录下不再使用的repo源文件进行清理，只保留HCE的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"
      ```
      ![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
      - 执行命令**dnf module list**可查看待迁移系统中所有运行的module。
      
      - 执行命令**dnf module list \| grep '\\\[e\\\]'**可查看待迁移系统开启的module。
        
    
5. 执行**centos2hce3.py --check all** 命令，检查当前系统配置是否满足迁移条件。
   - 提示"Environment check passed!"时，表示满足迁移条件，可直接执行迁移操作。
   
   - 提示"call migration failed"时，表示不满足迁移条件，请根据步骤[6]自动处理相关异常信息。Error Number及其对应错误信息请参见[表2]。
      表2Error Number对应关系 
     | Error Number | 错误信息                                                                                                                                                 |
     |:---|:---|
     | 10001        | 非root用户下执行迁移工具命令时，需要切换至root。                                                                                                                         |
     | 10002        | URL存在问题，/etc/centos2hce3.conf配置文件中web_link_dir、web_link_tar参数填写有误导致无法下载对应repo文件、rpm文件或者无法连通。                                                         |
     | 10003        | 基础命令缺失，例如rpm、yum、yumdownloader命令。                                                                                                                    |
     | 10004        | 空间检查失败，磁盘空间不足或者内存大小不足。                                                                                                                               |
     | 10005        | 原系统无本地yum源或者yum源不通，需要重新配置。                                                                                                                           |
     | 10006        | 目标系统yum源配置有误，检查/etc/centos2hce3.conf配置文件中web_link_dir参数填写是否有误。                                                                                       |
     | 10007        | 安装sut失败，检查/etc/centos2hce3.conf配置文件中web_link_dir参数填写是否有误。                                                                                            |
     | 10008        | sut检查失败。                                                                                                                                             |
     | 10009        | 依赖检查失败，需要先执行centos2hce3.py --install all安装依赖。                                                                                                        |
     | 10010        | chroot升级方式，清理原有chroot文件夹失败，文件夹路径见/etc/centos2hce3.conf配置文件中的chroot_path。                                                                             |
     | 10011        | chroot路径配置错误，/etc/centos2hce3.conf配置文件中chroot_path配置有误。                                                                                              |
     | 10012        | chroot升级方式，并且配置了预构建环境tar包下载地址，解压tar包失败，检查/etc/centos2hce3.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/centos2hce3.conf配置文件中的exclude_dir字段。                                                    |
     | 10017        | /etc/sysconfig/ntpd文件存在-u ntp:ntp配置，需要删除/etc/sysconfig/ntpd文件中-u ntp:ntp字段。                                                                          |
     | 10018        | /etc/ssh/sshd_config配置文件存在HCE 3.0不支持的算法，需要按照提示删除这些算法。                                                                                                |
     | 10019        | 系统中含有重复的rpm包，请先卸载不再使用的低版本rpm包后再次检查。（如果不想卸载重复包例如多内核场景kernel、kernel-devel等，直接进行升级，可以通过配置/etc/centos2hce3.conf文件中的extra_check_switch = false选项，跳过额外检查。） |
        
     
    
6. 安装迁移工具依赖的软件。
   执行**centos2hce3.py --install all**命令，迁移工具会先进行备份，接着系统自动安装迁移工具依赖的软件包，并进行迁移前相关预处理操作。
   以下提示表明，已安装依赖的软件包及相关预处理操作，需再次执行步骤[5]进行环境检查。
   ```
   2025-08-19 03:12:58,373-INFO-centos2hce3.py-[line:832]: Dependency packages already exist!
   2025-08-19 03:12:58,373-INFO-centos2hce3.py-[line:891]: migrate install depend options finished
   ```
   在centos2hce3.conf配置文件中，进行如下设置：
   ```
   [check_config]
   ...
   # backup switch before upgrade
   backup_available = ""
   ```
   其中backup_available字段控制是否在install阶段进行备份动作，默认配置为空。
   - 当backup_available为空或不为false的任意值时，在install阶段进行备份。
   
   - 当backup_available为false(false不区分大小写)时，install阶段不进行备份，在upgrade阶段备份。
   
   - 对于centos8.0以上的系统，执行**centos2hce3.py --install all**命令，迁移工具会先进行备份，接着关闭centos的模块软件包管理机制，如果开启了此配置项，执行回滚后的系统内模块软件管理机制仍然是关闭的。
    
7. (可选) 重复备份。
 
执行**centos2hce3.py --backup force** 命令，迁移工具会根据步骤[3]中配置的备份路径，对当前系统中的文件进行备份。
![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
步骤[6]中安装的工具依赖软件包，在执行此命令之后也会被备份。
#### 迁移系统至HCE
1. 执行迁移命令**centos2hce3.py --upgrade all** 进行系统迁移。
   出现migrate success提示信息，表明系统迁移成功。迁移后支持回退至原系统，详见系统回退的步骤[1]。
   图1系统迁移   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002479929012.png "点击放大")
   图2迁移成功   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512128913.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
   - 迁移命令不能设置为Linux后台方式执行。
   
   - 可附加--simple_name参数，使得迁移后的grub菜单中显示Huawei Cloud EulerOS的简称。
   
   - 在升级过程中如果遇到因为网络中断、软件包冲突等情况导致的升级失败，可以通过重新执行迁移命令再次进行系统迁移。
   
   - 在升级过程中如果遇到报错如[图3]所示，表明升级过程因冲突包中断，需要处理冲突包后再次执行升级。冲突包处理请参见[冲突包列表](https://support.huaweicloud.com/usermanual-hce/hce_02_0105.html)。
    
   图3冲突包报错   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002479929014.png "点击放大") 
2. 系统迁移完毕后，执行**reboot** 命令（若**reboot** 无响应，执行**reboot -f** ）使系统完成切换。
   系统重启后，执行**cat /etc/hce-release** 命令查看迁移后的操作系统信息，执行**uname -a**命令查看系统内核信息。
   若显示Huawei Cloud EulerOS操作系统，则迁移成功；否则迁移失败，请联系技术工程师咨询。
   图4查看迁移后操作系统信息及系统内核信息   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002480088986.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
   待系统迁移到HCE后，控制台仍然显示迁移前的操作系统名称。您可手动更新控制台操作系统名称，具体操作详见[迁移系统后，如何更改控制台操作系统名称？](https://support.huaweicloud.com/hce_faq/faq_system_0001.html)
   
3. 清理旧版本组件的文件。 待系统迁移到HCE后，新版本组件替换旧版本组件，但此时旧版本组件的文件仍然保存在系统中。执行命令**centos2hce3.py --precommit upgrade**可清理旧版本组件的文件。
   返回信息中提示"upgrade precommit success"表示环境清理成功。
   图5清理旧版本组件的文件   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002480088984.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
   清理动作可执行多次。
   
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的版本详细信息，并且无任何错误信息。
      图6Cloud-init配置成功   
      ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512128905.png "点击放大") 
   
   3. 如果在升级完成后出现cloud-init不可用的情况，需要重新安装cloud-init软件，具体操作参照[安装Cloud-Init工具](https://support.huaweicloud.com/usermanual-ims/zh-cn_topic_0030730603.html)。
    
5. （可选）因迁移时会自动关闭SELinux服务，如迁移后需启用SELinux，执行**centos2hce3.py --precommit upg-selinux** 命令。此命令分为两个阶段，每次执行后都需重启系统（若迁移前未开启SELinux请忽略此步骤）。
   1. 执行**centos2hce3.py --precommit upg-selinux** 命令。
      ```
      [root@localhost ~]# centos2hce3.py --precommit upg-selinux
      2025-08-21 23:46:23,891-INFO-centos2hce3.py-[line:1239]: precommit migration
      2025-08-21 23:46:23,891-INFO-centos2hce3.py-[line:1149]: begin to set selinux
      2025-08-21 23:46:23,892-INFO-centos2hce3.py-[line:1157]: grub path is /boot/grub2/grub.cfg
      2025-08-21 23:46:23,895-INFO-centos2hce3.py-[line:1162]: sed selinux succeed
      2025-08-21 23:46:23,897-INFO-centos2hce3.py-[line:1167]: create autorelabel file succeed
      2025-08-21 23:46:23,901-INFO-centos2hce3.py-[line:1172]: modify selinux config succeed
      2025-08-21 23:46:23,901-INFO-centos2hce3.py-[line:1174]: create phase 1 flag file succeed
      2025-08-21 23:46:23,901-INFO-centos2hce3.py-[line:1184]: selinux has been set, please reboot now
      2025-08-21 23:46:23,901-INFO-centos2hce3.py-[line:1206]: upgrade precommit selinux success
      [root@localhost ~]# reboot
      ```
      
   
   2. 系统重启后，再次执行**centos2hce3.py --precommit upg-selinux** 命令。
      ```
      [root@localhost ~]# centos2hce3.py --precommit upg-selinux
      2025-08-21 23:57:07,576-INFO-centos2hce3.py-[line:1239]: precommit migration
      2025-08-21 23:57:07,576-INFO-centos2hce3.py-[line:1176]: now begin to set selinux phase 2
      2025-08-21 23:57:07,580-INFO-centos2hce3.py-[line:1181]: modify selinux config succeed
      2025-08-21 23:57:07,580-INFO-centos2hce3.py-[line:1183]: create phase 2 flag file succeed
      2025-08-21 23:57:07,580-INFO-centos2hce3.py-[line:1184]: selinux has been set, please reboot now
      2025-08-21 23:57:07,580-INFO-centos2hce3.py-[line:1206]: upgrade precommit selinux success
      [root@localhost ~]# reboot
      ```
      
   
   3. 第二次重启后，执行**getenforce** 查看SELinux状态，Enforcing表明SELinux为开启状态。
      ```
      [root@localhost ~]# getenforce
      Enforcing
      ```
      
    
6. （可选）确认迁移完毕后，清理原系统数据。 迁移操作完成后，原系统的系统数据仍然保留在新系统中，并占用较大的存储空间。建议执行**centos2hce3.py --commit all**命令清理数据。
   执行命令后，系统会自动清理原系统的系统数据，包括步骤[3]中备份路径下的系统数据。
   ![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/notice_3.0-zh-cn.png)
   执行命令后，操作系统无法回退。
   ```
   [root@localhost ~]# centos2hce3.py --commit all
   2025-08-22 04:45:32,601-INFO-centos2hce3.py-[line:1242]: commit migration
   ```
   
 
#### 系统回退
1. 系统回退。
   迁移操作支持系统回退，您可根据需要决定是否回退至原操作系统。
   1. 执行**centos2hce3.py --rollback all** 命令进行系统回退。回退后，执行**reboot** 命令对系统重启。
      图7系统回退\&重启   
      ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512088883.png "点击放大") 
   
   2. 执行**centos2hce3.py --precommit rollback** 命令，恢复环境。
      图8恢复环境   
      ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512128911.png "点击放大") 
     
2. （可选）若迁移前已开启SELinux，迁移时会自动关闭SELinux服务。如有需要，回退后请手动恢复SELinux状态。
   1. 执行**centos2hce3.py --precommit rbk-selinux** 命令。
      ```
      [root@localhost ~]# centos2hce3.py --precommit rbk-selinux
      2025-08-21 03:58:37,015-INFO-centos2hce3.py-[line:1401]: precommit migration
      2025-08-21 03:58:37,047-INFO-centos2hce3.py-[line:1319]: now begin to set selinux
      2025-08-21 03:58:37,051-INFO-centos2hce3.py-[line:1324]: modify selinux config succeed
      2025-08-21 03:58:37,051-INFO-centos2hce3.py-[line:1325]: selinux has been set, please reboot now
      2025-08-21 03:58:37,051-INFO-centos2hce3.py-[line:1340]: set rollback selinux succeed
      2025-08-21 03:58:37,051-INFO-centos2hce3.py-[line:1365]: upgrade precommit selinux success
      ```
      
   
   2. 执行**reboot** 命令，进行系统重启。
      ```
      [root@localhost ~]# reboot
      ```
      
   
   3. 系统重启后，可查看到SELinux状态为开启状态。
      ```
      [root@localhost ~]# getenforce
      Enforcing
      ```
      
    
3. 清理系统数据。 执行**centos2hce3.py --commit all**命令清理数据。
   执行命令后，系统会自动清理目标系统和原系统的系统数据，包括步骤[3]中备份路径下的系统数据。
   ```
   [root@localhost ~]# centos2hce3.py --commit all
   2025-08-22 04:45:32,601-INFO-centos2hce3.py-[line:1242]: commit migration
   ```
   
 
