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+ 中默认启用)。
- CentOS 7 → RHEL 8+ 要求:内核 ≥ 4.18,建议 BIOS/UEFI 固件更新;部分旧网卡/RAID 卡驱动需确认(如
- 应用兼容性验证:
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)。
- 如 NVIDIA、CUDA、ZFS(需
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 默认启用
dax和reflink(需检查应用兼容性); - LVM 配置语法不变,但
lvm2包升级带来新特性(如lvmsnapshot弃用,改用lvcreate --snapshot)。
- XFS 成为默认(ext4 仍支持);RHEL 9 默认启用
- 安全强化:
- 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_tickets和requiretty(CI/自动化脚本需调整)。
- SELinux 默认 enforcing(策略更严格,需检查
4️⃣ 运维与生态适配
- 包管理:
dnf全面替代yum(yum是dnf的符号链接,但插件生态不同); - 模块化(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); - 新装模式下,保留旧系统磁盘分区(不格式化),故障时可快速切回。
- 若使用就地升级,必须在升级前创建 LVM 快照或全盘镜像(如
📌 总结:行动建议清单
| 步骤 | 操作 |
|---|---|
| ✅ 立即行动 | 停止使用 CentOS 7/8/9;禁用所有 centos.org 仓库;启用 vault.centos.org 仅作临时应急(不安全) |
| ✅ 评估优先级 | 使用 leapp preupgrade(Rocky/Alma)扫描兼容性;导出所有 rpm -qa、systemctl list-unit-files --state=enabled、crontab -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。
云小栈