迁移操作
准备迁移工具依赖的软件包
在系统迁移过程中,迁移工具对特定的基础软件和系统参数存在依赖,本节介绍软件包和系统参数的准备工作。
- 远程连接待迁移的操作系统。
根据弹性云服务器控制台操作指导,远程登录到待迁移虚拟机内部,远程登录的具体操作,请参见连接方式概述,并确保虚拟机内部与Internet相通。
- 检查待迁移系统网络是否能够正常访问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; } ......
- 配置repo源(指原操作系统的repo源),确保迁移工具可以获取到依赖的软件。
- 安装依赖的软件包。
- 安装python基础软件包。
[root@localhost ~]# yum install -y python //任意目录执行安装命令
- (可选)创建软连接。
CentOS 8系列及EulerOS 2.10/2.9版本需执行以下步骤,其他操作系统版本请忽略。
- 安装python3基础软件包。
[root@localhost ~]# yum install -y python3 //任意目录执行安装命令
- 检查是否存在python软链接。
- 若不存在,继续执行创建python软链接。
- 若已存在,但没有链接至python3,须执行如下命令删除原有python软链接,再执行创建python软链接。
[root@localhost]# unlink /usr/bin/python
- 若已存在,并已链接至python3,请继续执行安装迁移工具并检查迁移条件。
- 创建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退出上述界面
- 安装python3基础软件包。
- 安装python基础软件包。
安装迁移工具并检查迁移条件
- 从华为云开源镜像站下载最新版本的迁移工具安装包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
- 安装迁移工具。
[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%]
- 配置待迁移系统的系统软件数据的备份路径。
在系统切换前,迁移工具将自动备份系统软件的所有数据至备份路径。
执行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类型文件系统内的文件会丢失。
- 设置系统迁移参数。
- 设置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源。
- 配置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。
- 设置web迁移方式。
- 执行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选项,跳过额外检查。)
- 安装迁移工具依赖的软件。
执行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
- 执行迁移命令centos2hce2.py --upgrade all 进行系统迁移。
出现migrare sucess提示信息,表明系统迁移成功。迁移后支持回退至原系统,详见操作步骤1。
- 系统迁移完毕后,执行reboot命令(若reboot无响应,执行reboot -f)使系统完成切换。
系统重启后,执行cat /etc/hce-release命令查看迁移后的操作系统信息,执行uname -a命令查看系统内核信息。
若显示Huawei Cloud EulerOS操作系统,则迁移成功;否则迁移失败,请联系技术工程师咨询。
操作系统迁移为Huawei Cloud EulerOS后,控制台仍然显示迁移前的操作系统名称。您可手动更新控制台操作系统名称。
- 清理旧版本组件的文件。
待迁移系统迁移到HCE后,新版本组件替换旧版本组件,但此时旧版本组件的文件仍然保存在系统中。执行命令centos2hce2.py --precommit upgrade可清理旧版本组件的文件。
返回信息中提示“upgrade precommit success”表示环境清理成功。
清理动作可执行多次。
- (可选)修改Cloud-init相关配置。
- 若迁移之前的操作系统中存在Cloud-init,服务状态正常,且Cloud-init为rpm包形式,请跳过此步骤。
- 若迁移之前的操作系统存在Cloud-init服务,服务状态正常,且Cloud-init为某个文件(如CentOS 7系列),非rpm包形式,迁移后请对/etc/cloud/cloud.cfg文件进行如下配置。
- 设置开放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
- 执行/usr/bin/cloud-init init --local命令,无错误发生,说明Cloud-init配置成功。
正确安装的Cloud-init会显示Cloud-init的版本详细信息,并且无任何错误信息。
- 如果在升级完成后出现cloud-init不可用的情况,需要重新安装cloud-init软件,具体操作参照安装Cloud-Init工具。
- (可选)因迁移时会自动关闭selinux服务,如迁移后需启用selinux,执行centos2hce2.py --precommit upg-selinux命令。此命令分为两个阶段,每次执行后都需重启系统(若迁移前未开启selinux请忽略此步骤)。
- 执行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
- 系统重启后,再次执行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
- 执行centos2hce2.py --precommit upg-selinux命令。
- (可选)确认迁移完毕后,清理原系统数据。
迁移操作完成后,原系统的系统数据仍然保留在新系统中,并占用较大内存。建议执行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
系统回退
- 系统回退。
- (可选)若迁移前已开启selinux,迁移时会自动关闭selinux服务。如有需要,回退后请手动恢复selinux状态。
- 执行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
- 执行reboot命令,进行系统重启。
[root@localhost ~]# reboot
- 系统重启后,可查看到selinux状态为开启状态。
[root@localhost ~]# getenforce Enforcing
- 执行centos2hce2.py --precommit rbk-selinux命令。
- 清理系统数据。
执行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