将 CentOS 8(已于 2021 年 12 月停止维护)平滑迁移到 AlmaLinux 或 Rocky Linux 是许多用户当前的刚需。由于这两个发行版与 RHEL 完全兼容,且都提供了官方推荐的迁移工具,整个过程可以相对安全地完成。
以下是基于 AlmaLinux(以 Rocky Linux 为例,两者操作几乎一致)的完整迁移指南。
⚠️ 迁移前重要准备
- 全量备份:这是最重要的一步。在云环境中,建议先对当前实例创建快照(Snapshot)。如果迁移失败,可以随时回滚。
- 数据备份:除了系统快照,建议手动备份
/etc、/var/www、数据库文件等关键业务数据。 - 网络连通性:确保服务器能访问网络(用于下载迁移脚本和依赖包)。
- 确认架构:CentOS 8 主要运行在 x86_64 架构上,请确保目标机器也是该架构。
第一步:安装迁移工具
AlmaLinux 和 Rocky Linux 都推荐使用官方的 leapp (Leapp Upgrade) 工具进行升级,或者使用更轻量的 migrate-to-rocky/alma 脚本。这里推荐最通用的 migrate-to-rocky / migrate-to-alma 脚本方案,因为它自动化程度高且经过广泛验证。
1. 更新系统并清理缓存
sudo dnf update -y
sudo dnf clean all
2. 安装迁移脚本
根据你选择的目标发行版,执行以下命令之一:
如果你选择迁移至 AlmaLinux:
# 安装 EPEL 源(部分脚本依赖)
sudo dnf install epel-release -y
# 安装迁移脚本
curl -o migrate-to-alma.sh https://raw.githubusercontent.com/almalinux/migration-scripts/master/migrate-to-alma.sh
chmod +x migrate-to-alma.sh
如果你选择迁移至 Rocky Linux:
# 安装 EPEL 源
sudo dnf install epel-release -y
# 安装迁移脚本
curl -o migrate-to-rocky.sh https://raw.githubusercontent.com/rocky-linux/migration-scripts/master/migrate-to-rocky.sh
chmod +x migrate-to-rocky.sh
第二步:执行预检查(Dry Run)
在正式执行迁移之前,必须先进行模拟运行。这一步会分析当前的软件包配置,列出所有可能导致迁移失败的冲突项,但不会修改系统。
- AlmaLinux 预检查:
sudo ./migrate-to-alma.sh --dry-run - Rocky Linux 预检查:
sudo ./migrate-to-rocky.sh --dry-run
检查结果处理:
如果输出中有 ERROR 或 WARN,脚本通常会提示需要移除或替换哪些软件包。你需要根据提示修复问题(例如卸载不兼容的第三方 RPM 包),然后再次运行预检查,直到显示 Ready to proceed。
第三步:执行正式迁移
当预检查通过后,即可开始正式迁移。此过程会自动替换基础系统包(如 kernel, glibc, systemd 等)并重启服务器。
注意:迁移过程中不要中断 SSH 连接。如果使用的是云控制台 VNC,建议在本地终端保持连接。
- AlmaLinux 正式迁移:
sudo ./migrate-to-alma.sh - Rocky Linux 正式迁移:
sudo ./migrate-to-rocky.sh
流程说明:
- 脚本会下载新的仓库元数据。
- 自动解决依赖关系并替换核心包。
- 生成新的内核镜像。
- 最后,脚本会提示是否立即重启。务必选择
Yes。
第四步:迁移后验证
服务器重启后,登录系统并进行以下检查:
-
确认版本信息:
cat /etc/os-release # 应该看到 NAME="AlmaLinux" 或 NAME="Rocky Linux",且 VERSION_ID 对应新版本 -
检查内核版本:
uname -r # 确认已切换到新内核 -
验证服务状态:
检查你的关键服务(如 Nginx, Apache, MySQL, Docker 等)是否正常运行:systemctl status nginx mysql docker如果服务未启动,尝试手动启动并查看日志排查原因。
-
清理旧包:
迁移完成后,旧的 CentOS 8 包已被替换,可以运行一次清理:sudo dnf autoremove -y sudo dnf clean all
常见问题与注意事项
- 第三方源问题:迁移工具通常只处理官方 RHEL 兼容的包。如果你的系统安装了大量非官方的第三方 RPM(如某些特定的 PHP 扩展或专有软件),可能会在预检查阶段报错。这些软件可能需要重新编译或寻找对应的 Alma/Rocky 版本源。
- Docker/容器:Docker 本身通常不受影响,但 Docker 守护进程依赖的系统库如果发生变动,可能需要重启 Docker 服务。
- 时间同步:迁移后请检查
chronyd或ntpd服务是否正常,确保时间同步准确。 - Cloud-init:如果是云服务器,确保
/etc/cloud/cloud.cfg配置正确,避免重启后 IP 地址变更导致无法连接。
总结
通过上述步骤,你可以将 CentOS 8 平滑过渡到 AlmaLinux 9 或 Rocky Linux 9。这两个系统在功能上与 RHEL 1:1 兼容,能够完美承接 CentOS 8 原有的业务负载。
核心口诀:先快照 -> 跑预检 -> 修冲突 -> 再执行 -> 查服务。只要严格遵循预检查阶段的提示,迁移成功率非常高。
CLOUD云计算