首先得纠正一个核心前提:CentOS 8 系列(包括 8.3)和 CentOS 7 系列属于两个完全不同的生命周期分支,且两者的底层架构、包管理器以及生态逻辑都有巨大差异。
更重要的是,CentOS 8 已于 2021 年 12 月 31 日停止维护(EOL)。如果你现在还在生产环境使用 CentOS 8.3,或者考虑从 7 迁移到 8,请务必注意这一风险。目前主流趋势是转向 Rocky Linux、AlmaLinux 或 Oracle Linux 等 RHEL 下游发行版,或者直接拥抱 Ubuntu/Debian 生态。
不过,既然你问的是“增加了哪些新功能”,我们可以从技术演进的角度,客观对比 CentOS 8 (基于 RHEL 8) 相比 CentOS 7 (基于 RHEL 7) 的主要变化和新特性。这些变化不仅仅是功能增加,更是架构层面的重构。
1. 包管理系统:从 RPM/YUM 到 DNF
这是最直观的变化。CentOS 7 使用 yum,而 CentOS 8 默认使用 DNF (Dandified YUM)。
- 优势:DNF 解决了依赖解析速度慢的问题,支持模块化安装,内存占用更合理。
- 兼容性:虽然命令名仍是
yum(它是 dnf 的软链接),但底层逻辑已变。例如,yum-config-manager的行为在某些场景下与旧版略有不同。 - 模块流(Modularity):引入了 AppStream 仓库概念,允许在同一系统上并行安装不同版本的应用程序(如 Python 3.6, 3.8, 3.9)。这在 CentOS 7 中是不支持的,你需要通过 IUS/CentOS SCLo 等第三方源来实现类似功能。
2. 容器化原生支持:Podman & Buildah
CentOS 7 时代,Docker 是绝对主力,但 Docker 需要守护进程(daemon),存在权限和安全问题。
- CentOS 8 的变化:默认不再预装 Docker,而是推广 Podman(无守护进程的容器引擎)和 Buildah(构建镜像工具)。
- 意义:这标志着 Red Hat 生态向 Kubernetes 原生和 OCI 标准靠拢。Podman 兼容 Docker 命令,可以无缝替换,但更安全、更适合在容器中运行容器(nested containers)。
- 注意:如果你习惯用 Docker,依然可以通过
dnf install docker-ce安装社区版,但官方推荐路径是 Podman。
3. 文件系统与存储:Btrfs 成为可选默认,XFS 强化
- CentOS 7:默认文件系统是 XFS,稳定但功能相对基础。
- CentOS 8:
- Btrfs:首次作为可选文件系统引入,并启用了子卷(subvolume)、快照(snapshot)等高级功能。虽然生产环境仍建议谨慎使用,但它为未来提供了更多灵活性。
- LVM 增强:对 LVM 的逻辑卷管理进行了优化,支持更快的快照创建和克隆。
4. 安全机制:SELinux 策略更新与 FIPS 合规
- SELinux:CentOS 8 的 SELinux 策略更加精细,默认策略集更大,覆盖更多应用。同时,引入了 libsemanage 的改进,使得策略管理更高效。
- FIPS 140-2:CentOS 8 原生支持 FIPS 模式,满足XX和高安全等级行业的需求。CentOS 7 也支持,但配置更为复杂。
- 加密套件:默认启用 TLS 1.2+,禁用不安全的 SSL/TLS 协议和弱加密算法。
5. 内核与硬件支持:新硬件驱动与虚拟化改进
- 内核版本:CentOS 7 使用 3.10.x 内核,CentOS 8 使用 4.18.x 内核(后续小版本会更新到更高)。这意味着对 Intel 第 8/9/10 代 CPU、NVMe SSD、USB 3.1/3.2 等新硬件的支持更好。
- 虚拟化:
- KVM/QEMU:升级至 QEMU 4.x,支持更好的 GPU 直通(VFIO)和 NUMA 感知调度。
- Libvirt:版本更高,API 更完善,支持更多虚拟机类型。
6. 网络栈:NetworkManager 成为唯一权威
- CentOS 7:
network-scripts是主流,NetworkManager并存但非强制。 - CentOS 8:废弃了 network-scripts,全面转向 NetworkManager。所有网络配置必须通过 NM 或其命令行工具
nmcli管理。这意味着传统的/etc/sysconfig/network-scripts/ifcfg-*文件不再被推荐使用,迁移成本高。
7. 开发语言环境:Python 3 正式入主
- CentOS 7:默认 Python 2.7,Python 3 需额外安装。
- CentOS 8:默认提供 Python 3.6(可通过模块流切换其他版本),并移除了一些 Python 2 的依赖。这对现代 Web 开发(Django, Flask 等)更友好。
8. 时间同步:Chrony 默认取代 NTP
- CentOS 7:默认使用
ntpd。 - CentOS 8:默认使用 Chrony,它在处理网络延迟波动、虚拟机时钟漂移方面表现更好,尤其适合云环境和数据中心。
总结与建议
| 特性 | CentOS 7 | CentOS 8 |
|---|---|---|
| 包管理器 | YUM | DNF (兼容 yum) |
| 容器方案 | Docker (守护进程) | Podman/Buildah (无守护进程) |
| 默认 Shell | Bash | Bash (Zsh 可选) |
| Python 版本 | 2.7 (主要) | 3.6+ (主要) |
| 网络配置 | ifcfg-scripts | NetworkManager |
| 时间同步 | NTPD | Chrony |
| 生命周期 | EOL: 2024 年 6 月 | EOL: 2021 年 12 月 (已终止) |
关键提醒:
- CentOS 8 已死:不要在新项目中使用 CentOS 8。它的结束意味着没有安全补丁。
- CentOS 7 也将终结:CentOS 7 将于 2024 年 6 月 30 日正式 EOL。即使它比 CentOS 8 活得久一点,也不应作为长期选择。
- 替代方案:
- 如果你想保持 RHEL 兼容性:Rocky Linux 8/9、AlmaLinux 8/9、Oracle Linux 8/9。
- 如果你偏好 Debian/Ubuntu 风格:Ubuntu LTS、Debian Stable。
- 如果你关注轻量级和快速启动:Alpine Linux、Fedora Server(短周期,适合开发者)。
结论:CentOS 8 相比 7 的主要“新增”不是简单的功能堆砌,而是现代化转型——拥抱容器化、模块化软件供应链、更强的安全基线和对新硬件的支持。但由于其生命周期已结束,这些“新功能”仅具有历史参考价值,不应指导当前的生产选型。
云技术博客