加油
努力

从 CentOS 7.9 迁移到 CentOS Stream 9 有哪些需要注意的地方?

CentOS 7.9 迁移到 CentOS Stream 9 是一次重大的系统升级,不仅跨越了多个主版本(从 RHEL 7 系列到 RHEL 9 系列),还涉及从传统的“稳定发布”模式(CentOS Linux)转向滚动更新的“开发流”模式(CentOS Stream)。因此,迁移过程中需要特别注意以下关键点:


一、架构和核心变化

  1. 内核和基础库的重大更新

    • 内核从 3.10 升级到 5.14+
    • glibc、GCC、systemd 等核心组件版本大幅更新
    • ABI 兼容性可能受影响,某些旧二进制程序或依赖可能无法运行
  2. 文件系统和目录结构

    • /bin, /sbin, /lib, /lib64 被符号链接到 /usr
    • 更严格的 FHS(文件系统层次标准)
    • 某些传统路径不再独立存在
  3. Python 版本变更

    • CentOS 7 默认使用 Python 2.7(已 EOL)
    • CentOS Stream 9 默认使用 Python 3.9+,不再默认安装 Python 2
    • 脚本需更新 #!/usr/bin/python#!/usr/bin/python3
  4. 防火墙工具变更

    • 建议使用 firewalld(与 CentOS 7 类似),但配置语法和模块有更新
    • iptables 仍可用,但推荐使用 nftables 后端
  5. 网络管理

    • 推荐使用 nmcli 和 NetworkManager
    • 传统 network-scripts(ifcfg 文件)在 Stream 9 中被弃用

二、软件包生态差异

  1. YUM → DNF

    • 包管理器从 yum 切换为 dnf(基于新版 YUM)
    • 命令兼容,但插件和行为略有不同
    • 使用 dnf 替代所有 yum 命令
  2. EPEL 和第三方仓库兼容性

    • EPEL 9 存在,但并非所有 EPEL 7 的包都已移植
    • 检查所需软件是否在 EPEL 9 或其他仓库中提供
    • 一些旧的第三方 RPM 可能不兼容(如 Nux Dextop 已停止)
  3. 编译环境变化

    • GCC 从 4.8.x 升级到 11+
    • C/C++ 项目可能需要重新编译,部分旧代码需适配新标准
    • 开发工具集(devtoolset)不再以相同方式提供,改用 gcc-toolset-11 等模块

三、安全与认证机制

  1. OpenSSL 升级到 3.0

    • 加密算法支持变化(如移除弱算法)
    • 某些旧应用(如自签名证书、旧 TLS 配置)可能出错
  2. SSH 默认配置更严格

    • 默认禁用 SSHv1、弱加密算法(如 CBC 模式)
    • 检查 sshd_config 是否兼容旧客户端
  3. SELinux 策略更新

    • 策略更严格,可能导致旧服务启动失败
    • 使用 ausearch / sealert 排查问题

四、系统和服务管理

  1. systemd 单元文件格式变化

    • 某些选项已被弃用或更改
    • 自定义服务脚本需检查兼容性
  2. 时间同步机制

    • 推荐使用 chronyd(默认),ntpd 仍可用但不推荐
  3. 日志系统

    • journalctl 功能增强,但 rsyslog 配置可能需要调整

五、迁移策略建议

⚠️ 重要提示:不能原地升级(in-place upgrade)

  • CentOS 7 → CentOS Stream 9 不支持直接升级
  • 必须采用 全新安装 + 数据迁移 的方式

推荐迁移步骤:

  1. 评估现有环境

    • 列出所有运行的服务、软件、依赖、配置文件
    • 检查是否有闭源或老旧软件(如 Oracle Java 旧版、商业中间件)
  2. 准备测试环境

    • 在虚拟机或容器中部署 CentOS Stream 9
    • 测试关键应用的兼容性
  3. 备份数据和配置

    • 备份 /etc, /var, 用户数据、数据库等
    • 记录网络、用户、权限设置
  4. 全新安装 CentOS Stream 9

    • 使用官方 ISO 安装
    • 配置网络、存储、用户等基础设置
  5. 迁移应用和服务

    • 重新安装软件包(使用 dnf + EPEL)
    • 恢复配置文件并测试
    • 重新编译或替换不兼容的二进制程序
  6. 验证和切换

    • 充分测试功能、性能、安全性
    • 更新 DNS、负载均衡等指向新服务器

六、替代方案考虑

如果对 CentOS Stream 的滚动更新模式有顾虑,可考虑:

  • Rocky Linux 9AlmaLinux 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 备用节点直至完全验证。

云服务器