从 CentOS 7.9 迁移到 CentOS Stream 9 是一次重大的系统升级,不仅跨越了多个主版本(从 RHEL 7 系列到 RHEL 9 系列),还涉及从传统的“稳定发布”模式(CentOS Linux)转向滚动更新的“开发流”模式(CentOS Stream)。因此,迁移过程中需要特别注意以下关键点:
一、架构和核心变化
-
内核和基础库的重大更新
- 内核从 3.10 升级到 5.14+
- glibc、GCC、systemd 等核心组件版本大幅更新
- ABI 兼容性可能受影响,某些旧二进制程序或依赖可能无法运行
-
文件系统和目录结构
/bin,/sbin,/lib,/lib64被符号链接到/usr- 更严格的 FHS(文件系统层次标准)
- 某些传统路径不再独立存在
-
Python 版本变更
- CentOS 7 默认使用 Python 2.7(已 EOL)
- CentOS Stream 9 默认使用 Python 3.9+,不再默认安装 Python 2
- 脚本需更新
#!/usr/bin/python→#!/usr/bin/python3
-
防火墙工具变更
- 建议使用
firewalld(与 CentOS 7 类似),但配置语法和模块有更新 iptables仍可用,但推荐使用 nftables 后端
- 建议使用
-
网络管理
- 推荐使用
nmcli和 NetworkManager - 传统
network-scripts(ifcfg 文件)在 Stream 9 中被弃用
- 推荐使用
二、软件包生态差异
-
YUM → DNF
- 包管理器从
yum切换为dnf(基于新版 YUM) - 命令兼容,但插件和行为略有不同
- 使用
dnf替代所有yum命令
- 包管理器从
-
EPEL 和第三方仓库兼容性
- EPEL 9 存在,但并非所有 EPEL 7 的包都已移植
- 检查所需软件是否在 EPEL 9 或其他仓库中提供
- 一些旧的第三方 RPM 可能不兼容(如 Nux Dextop 已停止)
-
编译环境变化
- GCC 从 4.8.x 升级到 11+
- C/C++ 项目可能需要重新编译,部分旧代码需适配新标准
- 开发工具集(devtoolset)不再以相同方式提供,改用
gcc-toolset-11等模块
三、安全与认证机制
-
OpenSSL 升级到 3.0
- 加密算法支持变化(如移除弱算法)
- 某些旧应用(如自签名证书、旧 TLS 配置)可能出错
-
SSH 默认配置更严格
- 默认禁用 SSHv1、弱加密算法(如 CBC 模式)
- 检查
sshd_config是否兼容旧客户端
-
SELinux 策略更新
- 策略更严格,可能导致旧服务启动失败
- 使用
ausearch/sealert排查问题
四、系统和服务管理
-
systemd 单元文件格式变化
- 某些选项已被弃用或更改
- 自定义服务脚本需检查兼容性
-
时间同步机制
- 推荐使用
chronyd(默认),ntpd仍可用但不推荐
- 推荐使用
-
日志系统
journalctl功能增强,但rsyslog配置可能需要调整
五、迁移策略建议
⚠️ 重要提示:不能原地升级(in-place upgrade)
- CentOS 7 → CentOS Stream 9 不支持直接升级
- 必须采用 全新安装 + 数据迁移 的方式
推荐迁移步骤:
-
评估现有环境
- 列出所有运行的服务、软件、依赖、配置文件
- 检查是否有闭源或老旧软件(如 Oracle Java 旧版、商业中间件)
-
准备测试环境
- 在虚拟机或容器中部署 CentOS Stream 9
- 测试关键应用的兼容性
-
备份数据和配置
- 备份
/etc,/var, 用户数据、数据库等 - 记录网络、用户、权限设置
- 备份
-
全新安装 CentOS Stream 9
- 使用官方 ISO 安装
- 配置网络、存储、用户等基础设置
-
迁移应用和服务
- 重新安装软件包(使用 dnf + EPEL)
- 恢复配置文件并测试
- 重新编译或替换不兼容的二进制程序
-
验证和切换
- 充分测试功能、性能、安全性
- 更新 DNS、负载均衡等指向新服务器
六、替代方案考虑
如果对 CentOS Stream 的滚动更新模式有顾虑,可考虑:
- Rocky Linux 9 或 AlmaLinux 9:RHEL 9 的二进制兼容替代品,更接近传统 CentOS 体验
- Ubuntu LTS / Debian:若愿意切换发行版
- 容器化迁移:将应用打包为容器(Docker/Podman),降低 OS 依赖
七、参考资源
- CentOS Stream 9 Release Notes
- RHEL 9 Migration Guide
- EPEL 9 Packages
总结
| 注意项 | 说明 |
|---|---|
| ❌ 不支持原地升级 | 必须重新安装 |
| ✅ 新内核和工具链 | 性能更好,但兼容性需验证 |
| 🔧 包管理器为 DNF | 替代 YUM |
| 📦 第三方软件兼容性 | 需逐一确认 |
| 🔐 安全策略更严格 | SSH、TLS、SELinux 需调整 |
| 🔄 建议使用替代发行版 | 如 Rocky/AlmaLinux 更稳定 |
建议在迁移前制定详细计划,并在非生产环境充分测试。如有关键业务系统,建议逐步迁移或保留 CentOS 7 备用节点直至完全验证。
云小栈