走啊走
奋斗

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

服务器价格表

将 CentOS 8(已于 2021 年 12 月停止维护)平滑迁移到 AlmaLinux 或 Rocky Linux 是许多用户当前的刚需。由于这两个发行版与 RHEL 完全兼容,且都提供了官方推荐的迁移工具,整个过程可以相对安全地完成。

以下是基于 AlmaLinux(以 Rocky Linux 为例,两者操作几乎一致)的完整迁移指南。

⚠️ 迁移前重要准备

  1. 全量备份:这是最重要的一步。在云环境中,建议先对当前实例创建快照(Snapshot)。如果迁移失败,可以随时回滚。
  2. 数据备份:除了系统快照,建议手动备份 /etc/var/www、数据库文件等关键业务数据。
  3. 网络连通性:确保服务器能访问网络(用于下载迁移脚本和依赖包)。
  4. 确认架构: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

检查结果处理
如果输出中有 ERRORWARN,脚本通常会提示需要移除或替换哪些软件包。你需要根据提示修复问题(例如卸载不兼容的第三方 RPM 包),然后再次运行预检查,直到显示 Ready to proceed


第三步:执行正式迁移

当预检查通过后,即可开始正式迁移。此过程会自动替换基础系统包(如 kernel, glibc, systemd 等)并重启服务器。

注意:迁移过程中不要中断 SSH 连接。如果使用的是云控制台 VNC,建议在本地终端保持连接。

  • AlmaLinux 正式迁移
    sudo ./migrate-to-alma.sh
  • Rocky Linux 正式迁移
    sudo ./migrate-to-rocky.sh

流程说明

  1. 脚本会下载新的仓库元数据。
  2. 自动解决依赖关系并替换核心包。
  3. 生成新的内核镜像。
  4. 最后,脚本会提示是否立即重启。务必选择 Yes

第四步:迁移后验证

服务器重启后,登录系统并进行以下检查:

  1. 确认版本信息

    cat /etc/os-release
    # 应该看到 NAME="AlmaLinux" 或 NAME="Rocky Linux",且 VERSION_ID 对应新版本
  2. 检查内核版本

    uname -r
    # 确认已切换到新内核
  3. 验证服务状态
    检查你的关键服务(如 Nginx, Apache, MySQL, Docker 等)是否正常运行:

    systemctl status nginx mysql docker

    如果服务未启动,尝试手动启动并查看日志排查原因。

  4. 清理旧包
    迁移完成后,旧的 CentOS 8 包已被替换,可以运行一次清理:

    sudo dnf autoremove -y
    sudo dnf clean all

常见问题与注意事项

  • 第三方源问题:迁移工具通常只处理官方 RHEL 兼容的包。如果你的系统安装了大量非官方的第三方 RPM(如某些特定的 PHP 扩展或专有软件),可能会在预检查阶段报错。这些软件可能需要重新编译或寻找对应的 Alma/Rocky 版本源。
  • Docker/容器:Docker 本身通常不受影响,但 Docker 守护进程依赖的系统库如果发生变动,可能需要重启 Docker 服务。
  • 时间同步:迁移后请检查 chronydntpd 服务是否正常,确保时间同步准确。
  • Cloud-init:如果是云服务器,确保 /etc/cloud/cloud.cfg 配置正确,避免重启后 IP 地址变更导致无法连接。

总结

通过上述步骤,你可以将 CentOS 8 平滑过渡到 AlmaLinux 9Rocky Linux 9。这两个系统在功能上与 RHEL 1:1 兼容,能够完美承接 CentOS 8 原有的业务负载。

核心口诀:先快照 -> 跑预检 -> 修冲突 -> 再执行 -> 查服务。只要严格遵循预检查阶段的提示,迁移成功率非常高。