加油
努力

CentOS 7.9停止维护后,迁移到CentOS 8或CentOS 9有哪些注意事项?

CentOS 7.9(2020年11月发布)已于 2024年6月30日 正式结束生命周期(EOL),Red Hat 官方停止提供安全更新、错误修复和官方支持。需要特别注意:CentOS 8 也已于 2021年12月31日提前终止维护(EOL),因此不建议迁移到 CentOS 8——它早已不可用且存在严重安全风险。

✅ 正确的迁移路径应是:
CentOS 7.9 → ✅ Rocky Linux 8/9 / AlmaLinux 8/9 / Oracle Linux 8/9(推荐)
或直接升级至 RHEL 8/9(需订阅)
⚠️ 而非 CentOS 8/9(因 CentOS Stream ≠ CentOS Linux,且 CentOS 9 已于 2024年5月31日 EOL)


⚠️ 关键事实澄清(务必先了解)

项目 状态 说明
CentOS 7 EOL:2024-06-30 不再接收任何更新,继续使用存在高危漏洞风险(如未修补的CVE)
CentOS 8 EOL:2021-12-31(已废弃超2年半 ❌ 绝对不可作为目标系统迁移!无安全补丁,仓库已下线(mirrors.centos.org 仅存存档)
CentOS 9 EOL:2024-05-31 ❌ 同样已终止支持;且 CentOS 9 是基于 CentOS Stream 9 的滚动预发布版,并非稳定版,不适用于生产环境
CentOS Stream 持续发布(8/9/10) 是 RHEL 的上游开发分支(非稳定发行版),适合开发者测试,不推荐生产环境替代 CentOS Linux

🔍 Red Hat 官方明确声明:
“CentOS Linux is discontinued. CentOS Stream is the new upstream for RHEL.”
这意味着:没有 CentOS 8/9 ‘稳定版’可迁移——只有社区重建的兼容发行版(如 Rocky/Alma)是实际可行选择。


✅ 推荐迁移方案与注意事项

✅ 首选:迁移到 Rocky Linux 8 或 AlmaLinux 8/9(免费、100%二进制兼容 RHEL)

  • ✅ 兼容性:与 RHEL 8/9 完全 ABI/API 兼容,所有 CentOS 7 软件包(经适配后)可平滑迁移
  • ✅ 支持周期:Rocky Linux 8 → 支持至 2029-05;AlmaLinux 8 → 至 2029-05;AlmaLinux 9 → 至 2032-05
  • ✅ 生态成熟:拥有完整软件仓库、EPEL、Modular repos、Ansible、Docker/Podman、Kubernetes 支持完善

⚠️ 迁移关键注意事项(按阶段)

1️⃣ 迁移前评估与规划
  • 硬件兼容性检查
    • CentOS 7 → RHEL 8+ 要求:内核 ≥ 4.18,建议 BIOS/UEFI 固件更新;部分旧网卡/RAID 卡驱动需确认(如 mpt3sas, megaraid_sas 在 RHEL 8+ 中默认启用)。
  • 应用兼容性验证
    • python2 已被彻底移除 → 必须迁移至 Python 3.6+(RHEL 8)或 3.9+(RHEL 9);
    • systemd 成为唯一 init 系统(无 SysV init 回退);
    • iptables 默认被 nftables 替代(但 iptables-nft 兼容层可用);
    • GCC 8.5+(RHEL 8)、GCC 11+(RHEL 9)→ 编译型应用需重新构建;
    • 数据库:MySQL → 替换为 mysql80(模块化)或推荐 mariadb:10.3+;PostgreSQL 升级至 10+/13+(注意数据格式变更)。
  • 内核模块与第三方驱动
    • 如 NVIDIA、CUDA、ZFS(需 zfs-dkms)、某些监控X_X(如 Zabbix agent 5.x+)需确认 RHEL 8/9 兼容版本;
    • 建议使用 dnf module list 查看可用模块流(如 postgresql:13, nodejs:18)。
2️⃣ 迁移方式选择
方式 适用场景 风险提示
就地升级(leapp) Rocky/Alma 官方提供 leapp-upgrade 工具(支持 7→8) ⚠️ 仅支持 7→8(不支持直升9);需严格遵循预检清单;不支持 GUI、LVM Thin、Btrfs、加密卷等复杂配置;强烈建议先在测试环境全流程验证
全新安装 + 数据迁移 生产环境强烈推荐 需规划停机窗口;备份 /etc, /home, /var/www, DB 数据等;使用 rsync + mysqldump/pg_dump + 应用配置审计;可结合自动化工具(Ansible)重建环境
容器化迁移(长期演进) 适合微服务/云原生架构 将应用打包为 OCI 镜像(Podman/Docker),运行在 RHEL 8/9 主机上,实现 OS 解耦
3️⃣ 系统级变更重点
  • 网络与防火墙
    • firewalld 成为默认(iptables-services 已废弃);
    • NetworkManager 全面接管网络配置(ifconfig/route 仅作诊断,配置须用 nmcli/etc/sysconfig/network-scripts/ → RHEL 8+ 中后者仅读取,不写入)。
  • 存储与文件系统
    • XFS 成为默认(ext4 仍支持);RHEL 9 默认启用 daxreflink(需检查应用兼容性);
    • LVM 配置语法不变,但 lvm2 包升级带来新特性(如 lvmsnapshot 弃用,改用 lvcreate --snapshot)。
  • 安全强化
    • SELinux 默认 enforcing(策略更严格,需检查 audit.log 并用 ausearch -m avc -ts recent | audit2why 诊断);
    • crypto-policies 框架统一管理 OpenSSL/TLS/curl/GnuTLS 等密码策略(默认 DEFAULT:OSPP,可能禁用弱算法如 TLS 1.0/1.1、SHA1);
    • sudo 默认启用 tty_ticketsrequiretty(CI/自动化脚本需调整)。
4️⃣ 运维与生态适配
  • 包管理dnf 全面替代 yumyumdnf 的符号链接,但插件生态不同);
  • 模块化(Modularity):关键组件(httpd, nginx, postgresql, python3)以流(stream)形式提供多版本共存,例如:
    dnf module list python3
    dnf module enable python3:3.9   # 启用 3.9 流
    dnf install python3             # 安装该流默认包
  • 容器与编排
    • Podman(rootless 默认)替代 Docker(Docker CE 需手动安装,非原生支持);
    • Buildah + Skopeo 构建生态成熟;
    • Kubernetes:RHEL 8/9 官方支持 OpenShift 4.x,kubeadm 需适配 CRI-O(而非 dockershim)。
5️⃣ 验证与回滚计划
  • ✅ 必验项:
    • 所有业务端口连通性(ss -tlnp);
    • 关键服务启动依赖(systemctl list-dependencies --reverse <service>);
    • 日志完整性(journalctl -u <service> --since "1 hour ago");
    • SELinux AVC 拒绝(ausearch -m avc -ts today | audit2why);
    • 备份恢复演练(至少1次全量+增量恢复)。
  • 🛑 回滚方案:
    • 若使用就地升级,必须在升级前创建 LVM 快照或全盘镜像(如 dd if=/dev/sda of=centos7-backup.img
    • 新装模式下,保留旧系统磁盘分区(不格式化),故障时可快速切回。

📌 总结:行动建议清单

步骤 操作
立即行动 停止使用 CentOS 7/8/9;禁用所有 centos.org 仓库;启用 vault.centos.org 仅作临时应急(不安全)
评估优先级 使用 leapp preupgrade(Rocky/Alma)扫描兼容性;导出所有 rpm -qasystemctl list-unit-files --state=enabledcrontab -l
选定目标 Rocky Linux 8(短期)或 AlmaLinux 9(长期);下载 ISO + 验证 SHA256;准备 PXE/Kickstart 自动化部署
测试先行 在虚拟环境完成全链路测试(升级/重装 → 应用部署 → 压力测试 → 安全扫描)
生产切换 选择业务低峰期;采用蓝绿部署或滚动更新(如负载均衡器切流);全程监控(Prometheus + Grafana + ELK)
持续治理 启用自动安全更新(dnf-automatic);订阅 Rocky Security Announcements 或 AlmaLinux Security;定期 dnf update --security

💡 补充资源

  • 📘 Rocky Linux 迁移指南:https://docs.rockylinux.org/guides/migration/centos7_to_rocky8/
  • 📘 AlmaLinux 迁移工具:almalinux-deploy(支持 7→8/9) https://wiki.almalinux.org/deployment/
  • 📊 兼容性矩阵:https://access.redhat.com/support/policy/updates/errata (RHEL 生命周期)
  • 🔍 CVE 查询:https://access.redhat.com/security/cve (搜索 CVE-2024-* 确认是否影响 CentOS 7)

⚠️ 最后提醒:不要尝试 yum update 升级到 CentOS 8/9 —— 该操作必然失败且破坏系统。所有迁移必须通过官方认可路径(leapp 或重装)。

如需具体场景(如:Oracle DB 迁移、Java Tomcat 集群、Ceph 存储节点)的详细步骤,欢迎提供环境细节,我可为您定制迁移checklist。

云服务器