迁移基本流程


迁移原理
迁移前检查
迁移前的检查阶段主要进行一些只读操作,以确保系统满足迁移工具运行的要求。如果不满足,将抛出异常。此阶段不会对系统进行任何侵入性操作。
1. 权限检查
迁移工具需要在 root 权限下运行,此处检查系统是否为 root 用户。
2. 系统资源检查
检查内存和系统盘是否有足够的空间,确保迁移能够正常进行,要求:
空闲内存大于500MB。
系统盘剩余空间大于10GB。
3. yum 检查
检查系统上是否有 yum 工具包以确保能够正常下载软件包。
4. efi 检查
检查当前系统是否以 efi 启动。
发行版切换
从这一步开始,我们将修改系统内容,进行迁移前的准备工作,包括配置 YUM 源,以及提前卸载和安装必要的软件包。
1. 备份和配置迁移 yum 源
备份原系统release 包提供的 yum 源,为系统配置 TencentOS Server 的源,根据命令行选项可配置本地,远程,自定义的 yum 源。
2. 切换 release 软件包
将原系统的 release 包替换为 TencentOS Server 的 release 包。
迁移预测检查
迁移工具核心算法,根据当前命令行配置,计算出一个最大集合,这个集合中的包可以同步替换成 TencentOS Server 发行版本的软件包,如:glibc-2.17-326.el7.x86_64 —> glibc-2.17-326.tl2.x86_64。
上例将有 centos7 发行版 release 标志 el7 的软件包通过 yum 源替换成带有 TencentOS Server 发行版 release 标志 tl2 的软件包,替换后的软件包基本功能没有变化,将对迁移后的操作系统具有更好的兼容性,用户可以通过更新软件包来接收腾讯云官方对该软件包的维护,如安全补丁,错误修复,性能改进等。
预测的过程中并不会实际修改当前系统的软件包环境,在使用 --check 命令行时将在预测后结束程序并输出预测信息,用户可以根据预测的结果再进行下一步操作。
由于预测过程只能从 yum 的 transaction 层面的可行性进行预测,如果实际执行迁移的时候存在因网络波动、文件权限等问题导致的某些软件包无法替换,实际迁移的结果也可能与预测的结果存在偏差。
预测原理
通过一个基础的软件包列表,从一个小集合开始,逐步执行。
yum 的 transaction 的创建和依赖处理的过程,当前的集合成功处理之后,从当前集合加入下一个集合继续执行,失败则找到不可加入的软件包,将其排除,最终得到一个最大的可成功处理软件包的集合,如图:

考虑到迁移的安全性,通过命令行选项可以进行上图中的软件包预设,用户可以根据实际系统情况配置哪些软件需要迁移,哪些软件不要迁移,或是通过预设的软件组只迁移基础的系统软件包,同时也有定制版工具可以选择只迁移相同版本号的软件包。迁移工具在这个计算过程中可以通过此方式很大程度上照顾系统的安全性。
迁移执行
1. 操作系统切换
卸载原操作系统的一些脚本软件和 log 软件,替换为 TencentOS Server 的,同时安装 ts 的 grub 软件和 kernel 包。
2. 软件包同步
使用 yum distro-sync 命令将计算获得的可同步软件包集合替换为 TencentOS Server 的发行版软件包,即实际执行阶段。
迁移后处理
迁移后系统上的一些处理,如 grub 处理,yum cache 处理,输出迁移信息等。
1. grub 配置启动内核
根据是否为 efi 启动和是否选择替换默认启动内核,更新 grub 相关配置。
2. yum cache 处理
清理原来的 yum 缓存,用最新 yum 源创建本地软件包缓存。
3. 输出迁移信息
将软件包替换的数量统计信息输出到终端,详细软件包内容信息收集到指定的目录下。