将 CentOS 8 平滑迁移至 AlmaLinux 或 Rocky Linux 是官方推荐且成熟的操作,因为两者都是 CentOS 的“下游”发行版(Downstream),旨在提供 1:1 的二进制兼容替代方案。CentOS 8 已于 2021 年 12 月停止维护,因此迁移非常必要。
以下是基于 AlmaLinux 的迁移指南(Rocky Linux 流程几乎完全相同,仅需替换安装源)。整个流程分为准备、执行迁移、验证和清理四个阶段。
⚠️ 重要前提与风险提示
- 备份数据:在执行任何系统级变更前,务必对关键数据进行完整备份(快照或文件备份)。
- 停机窗口:虽然目标是“平滑”,但迁移过程中需要重启服务器进入新内核/环境,建议安排在业务低峰期操作。
- 网络连通性:确保服务器能访问互联网以下载迁移脚本和依赖包。
- 兼容性检查:虽然大部分软件兼容,但部分专有软件或深度定制的内核模块可能不兼容,需提前确认。
第一阶段:准备工作
1. 更新现有系统
在迁移前,先将当前的 CentOS 8 系统更新到最新状态,以减少冲突概率。
sudo dnf update -y
sudo reboot
重启后再次登录,确保系统处于最新状态。
2. 安装迁移工具
CentOS 8 默认不包含迁移脚本,需要从 EPEL 或官方仓库安装 leapp 工具。
# 安装 leapp 及其依赖
sudo dnf install -y leapp leapp-upgrade leapp-data
# 可选:安装 leapp-repository (如果未自动包含)
sudo dnf install -y leapp-repository
3. 运行预检(Pre-check)
这是最关键的一步,它会扫描当前系统,识别可能导致迁移失败的问题(如缺少依赖、不兼容的软件包、配置冲突等)。
sudo leapp preupgrade --target alma-9
注意:目标版本通常选择 alma-9,因为 AlmaLinux 8 已不再作为主要长期支持版本推广,且 AlmaLinux 9 使用较新的内核。如果你必须停留在 RHEL 8 生态(即 AlmaLinux 8),请将参数改为 --target alma-8。
查看报告:
命令执行完毕后,会生成一份报告。
- 如果看到
[ERROR]或[WARNING],请根据提示修复问题(例如移除不兼容的包、修改配置文件)。 - 只有当报告显示
No issues found或所有警告均可忽略时,才能继续下一步。
第二阶段:执行迁移
一旦预检通过,即可执行实际的升级操作。此过程会自动下载新的软件包、替换核心组件并重建 initramfs。
sudo leapp upgrade
注意事项:
- 该过程可能需要较长时间,取决于服务器性能和磁盘 IO。
- 请勿中断进程。
- 如果过程中出现错误,
leapp通常会回滚更改,保持系统原状。
第三阶段:重启与验证
迁移完成后,系统需要重启以加载新的内核和新版本的系统库。
1. 重启系统
sudo reboot
2. 验证系统信息
重启登录后,检查以下信息以确认迁移成功:
# 查看操作系统版本
cat /etc/os-release
# 预期输出应显示 "ID=almalinux" 或 "ID=rocky",以及对应的版本号
# 查看内核版本
uname -r
# 检查服务状态
systemctl status
3. 功能回归测试
- 启动你的 Web 服务、数据库、应用容器等。
- 检查日志 (
/var/log/messages,/var/log/secure) 是否有异常报错。 - 测试业务功能是否正常(如 API 调用、文件读写等)。
第四阶段:清理与后续优化
1. 清理旧缓存
迁移完成后,可以清理旧的 RPM 缓存。
sudo dnf clean all
2. 调整镜像源(可选)
CentOS 8 迁移后,默认的 yum/dnf 源可能仍然指向 CentOS 或已失效的地址。建议配置 AlmaLinux/Rocky 的官方镜像源以获得更好的速度和稳定性。
以 AlmaLinux 为例:
# 安装 AlmaLinux 官方 release 包(会自动配置 repo)
sudo dnf install -y https://repo.almalinux.org/almalinux/9/BaseOS/x86_64/os/Packages/almalinux-release-9-*.noarch.rpm
sudo dnf swap -y dnf-plugins-core almalinux-release
(如果是 Rocky Linux,请使用对应的 rocky-release 包)
3. 禁用旧仓库
检查 /etc/yum.repos.d/ 目录,确保没有残留的 centos.repo 或 epel 中指向旧源的配置,防止包管理器混淆。
常见问题与故障排除
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| Leapp 报错 "Package not found" | 本地安装了非标准源或第三方 RPM | 尝试移除该包,或将其标记为保留 (leapp skip --packages <pkg_name>) |
| 内核模块不兼容 | 使用了自定义编译的内核模块(如某些驱动) | 需在迁移前重新编译适配新内核,或暂时卸载相关驱动 |
| SELinux 报错 | 策略规则在新系统中不匹配 | 运行 setenforce 0 临时关闭测试,若正常则需重新生成策略 (audit2allow) |
| 时间不同步 | 迁移导致时钟漂移 | 迁移后立即运行 chronyd 或 ntpdate 同步时间 |
总结
从 CentOS 8 迁移至 AlmaLinux 或 Rocky Linux 的核心在于使用官方提供的 leapp 工具链。只要严格遵循 更新 -> 预检 -> 修复 -> 升级 -> 重启 的流程,绝大多数生产环境都能实现无感知的平滑过渡。
如果在预检阶段遇到复杂阻碍无法解决,建议先搭建一台测试机进行全流程演练,确认无误后再在生产环境操作。
云服务器