CentOS 7 升级到 CentOS Stream 8 有哪些风险

文章导读
在 CentOS 7 到 CentOS Stream 8 的迁移过程中,主要风险集中在安装路径、软件仓库、内核驱动、数据回滚和配置文件兼容这几个方面。以下内容整理自日常维护中的常见卡点,操作前需要结合你的业务对停机时间和数据安全的要求。
📋 目录
  1. 没有现成的原地升级路径:先确认停机窗口和迁移边界
  2. 软件仓库结构不同:epel 配置需要重新初始化
  3. 内核与驱动差异:4.18 内核下的模块验证
  4. 数据迁移与回滚:保留旧系统是关键
  5. 迁移后容易忽略的配置文件检查
A A

在 CentOS 7 到 CentOS Stream 8 的迁移过程中,主要风险集中在安装路径、软件仓库、内核驱动、数据回滚和配置文件兼容这几个方面。以下内容整理自日常维护中的常见卡点,操作前需要结合你的业务对停机时间和数据安全的要求。

没有现成的原地升级路径:先确认停机窗口和迁移边界

CentOS 7 无法直接原地升级到 CentOS Stream 8,官方并没有提供类似 leapp 的自动升级工具。常见的可行路径是先备份数据,再在全新分区上安装 CentOS Stream 8,最后手工迁移应用配置和用户数据。如果业务对停机时间敏感,建议先在测试环境完整演练迁移流程,尤其要确认依赖旧内核模块或动态链接库的程序能否在新系统上正常运行,否则可能需要在迁移后重新编译或调整部署方式。

无法原地升级,意味着只有两种可行方案:一是在新分区上安装 Stream 8,把应用和数据手动迁移过去;二是保留原系统,用新增机器切换流量。方案一适合可以接受短时间停机的环境,操作上要把旧系统的 /etc、/home、/var/lib 等目录先做快照,并在新系统启动后逐项核对服务状态。方案二适合对可用性要求较高的业务,但需要事先准备反向代理或 DNS 切换脚本,并且验证新旧系统在同一网络下不会冲突。风险边界是,依赖旧内核模块或动态链接库的程序可能在新系统上直接无法运行,这类程序必须在测试环境里先跑通再决定是否迁移。

软件仓库结构不同:epel 配置需要重新初始化

CentOS Stream 8 的软件包版本比 CentOS 7 新,但仓库结构和默认启用模块与 RHEL 8 保持一致。升级后原有的 epel-release 和相关第三方仓库需要重新安装或更新,否则 yum 命令会报错或拉取不到软件包。建议在切换前导出已安装软件包清单,执行 yum list installed 保存到文件,并在新系统上用 epel-release 对应版本重新配置。注意部分 CentOS 7 的 rpm 包在 Stream 8 中可能因依赖冲突而无法直接安装,需优先使用 AppStream 模块流。

CentOS 7 升级到 CentOS Stream 8 有哪些风险

仓库变更的直接影响是安装源不可用。迁移后第一步应运行 dnf repolist 查看当前仓库,再对照旧系统导出的软件包清单逐个确认。仓库变更时还要特别留意 AppStream 模块流:部分 CentOS 7 下直接安装的 rpm 包,在 Stream 8 里可能被拆到不同模块,需要用 dnf module enable 提前启用对应版本。操作上不建议对依赖冲突的包使用 --nodeps,否则可能在运行阶段暴露问题。验证方式是挑几个核心服务包,在干净的新系统上用 dnf install 试装,确认依赖链完整。

内核与驱动差异:4.18 内核下的模块验证

CentOS Stream 8 默认使用 4.18 内核,比 CentOS 7 的 3.10 内核有明显差异。升级前需要检查硬件尤其是网卡、阵列卡、GPU 驱动是否在 4.18 内核下有可用驱动。如果使用第三方内核模块(如某些安全软件或性能监控工具),请先向厂商确认兼容性,否则系统启动时可能因模块加载失败进入紧急模式。建议在物理机或同等虚拟化环境启动安装介质,用救援模式挂载原系统盘,确认 /lib/modules 下是否存在对应内核版本的驱动文件。

CentOS 7 升级到 CentOS Stream 8 有哪些风险

内核兼容性检查不能只看硬件型号。除了确认 /lib/modules 下是否存在驱动文件,还要用 modinfo 查看模块版本和 vermagic 是否与当前内核一致。如果使用厂家提供的源码包驱动,需要在新内核下重新编译。操作上可以在系统安装完成后启动到 rescue 模式,挂载原系统盘,运行 dracut --force 重建 initramfs,观察启动时是否出现 module not found 或 kernel panic 提示。容易忽略的是网卡命名变化,例如 eth0 可能变成 eno1 或 ens3,迁移后 ssh 会断连,所以要提前在控制台或带外管理口操作。

数据迁移与回滚:保留旧系统是关键

数据迁移的关键是让旧系统随时可以复活。建议在执行安装前用 rsync 把业务数据目录同步到外部存储,例如备份数据库数据目录、应用上传目录和配置文件。同步命令可以类似:

rsync -avxP /var/lib/mysql/ /backup/mysql/

同步完成后不要直接删原系统,而是在另一块磁盘或另一台机器上验证备份能启动。如果新系统安装失败,可以立刻把原系统盘挂回原来的槽位,从 grub 选择旧内核启动。风险边界在于,如果原系统盘已经被新系统初始化,回滚会变得非常困难,所以至少保留一份完整磁盘镜像或准备一个可用的备用启动盘。

CentOS 7 升级到 CentOS Stream 8 有哪些风险

迁移后容易忽略的配置文件检查

网络和防火墙配置是迁移后最常出错的环节。CentOS 7 的 /etc/sysconfig/network-scripts/ifcfg-* 文件在 Stream 8 中仍能被读取,但 NetworkManager 默认使用 /etc/NetworkManager/system-connections/ 下的 keyfile。检查时用 nmcli con show 确认当前活动连接,再用 ip addr 核对 IP。防火墙方面,Stream 8 的 firewalld 后端是 nftables,如果以前依赖 /etc/sysconfig/iptables 文件,需要迁移到 firewalld 的 rich rule 或 nft 规则,否则自定义规则不会加载。解释型应用也要注意运行时版本,例如 PHP 默认版本从 5.4 变成 7.2,旧程序可能因为缺少扩展而无法启动。

如果你的业务需要长期固定版本,不打算跟随 Stream 8 的滚动更新,可以优先考虑 Rocky Linux 或 AlmaLinux 等 RHEL 重建版。在做决定前,把上面几个检查点整理成 checklist,先在测试环境完整跑一遍,再申请维护窗口。迁移本身并不复杂,复杂的是提前识别依赖和回滚路径。