奋斗
努力

云服务器上运行CentOS 8如何平滑迁移至AlmaLinux或Rocky Linux?

云计算

将 CentOS 8 平滑迁移至 AlmaLinux 或 Rocky Linux 是官方推荐且成熟的操作,因为两者都是 CentOS 的“下游”发行版(Downstream),旨在提供 1:1 的二进制兼容替代方案。CentOS 8 已于 2021 年 12 月停止维护,因此迁移非常必要。

以下是基于 AlmaLinux 的迁移指南(Rocky Linux 流程几乎完全相同,仅需替换安装源)。整个流程分为准备、执行迁移、验证和清理四个阶段。

⚠️ 重要前提与风险提示

  1. 备份数据:在执行任何系统级变更前,务必对关键数据进行完整备份(快照或文件备份)。
  2. 停机窗口:虽然目标是“平滑”,但迁移过程中需要重启服务器进入新内核/环境,建议安排在业务低峰期操作。
  3. 网络连通性:确保服务器能访问互联网以下载迁移脚本和依赖包。
  4. 兼容性检查:虽然大部分软件兼容,但部分专有软件或深度定制的内核模块可能不兼容,需提前确认。

第一阶段:准备工作

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 工具链。只要严格遵循 更新 -> 预检 -> 修复 -> 升级 -> 重启 的流程,绝大多数生产环境都能实现无感知的平滑过渡。

如果在预检阶段遇到复杂阻碍无法解决,建议先搭建一台测试机进行全流程演练,确认无误后再在生产环境操作。

未经允许不得转载:云服务器 » 云服务器上运行CentOS 8如何平滑迁移至AlmaLinux或Rocky Linux?