努力
加油

CentOS 8.2 引入了哪些 7.6 中没有的新特性或工具?

这是一个非常典型但容易让人产生误解的问题。要回答这个问题,首先得厘清一个核心事实:CentOS 8 和 CentOS 7 属于两个完全不同的代际(Major Version),它们之间的差异不仅仅是“新特性”,而是底层架构、包管理器和系统初始化方式的根本性变革。

如果你是从 CentOS 7.6 迁移或升级到 CentOS 8.2,你面对的不是简单的功能增强,而是一次“换血”。以下是从实际运维和技术角度梳理的核心差异和新引入的关键组件:

1. 包管理器革命:从 YUM 到 DNF

这是最直观的变化。

  • CentOS 7:使用 yum(Yellowdog Updater, Modified)。虽然稳定,但在处理依赖解析时速度较慢,且缺乏现代包管理器的许多特性。
  • CentOS 8:默认使用 dnf(Dandified YUM)。DNF 是 YUM 的重写版本,基于 Python 3 和 libsolv 库。
    • 优势:更快的依赖解析速度、更好的内存效率、支持模块化(Modularity)、更清晰的错误提示。
    • 注意:yum 命令在 CentOS 8 中依然存在,但它只是一个指向 dnf 的软链接或前端包装器,底层逻辑已完全改变。

2. 系统初始化:从 SysVinit 到 Systemd 的全面主导

  • CentOS 7:虽然引入了 systemd,但大量遗留脚本仍兼容 SysVinit 和 LSB 格式,服务管理较为混杂。
  • CentOS 8:彻底拥抱 systemd。所有服务单元文件均为 .service,启动顺序、并行化、资源控制完全由 systemd 管理。
    • 新工具:systemctl 成为唯一标准的服务管理接口。chkconfig 等旧命令被弃用或仅作为兼容层存在。
    • 影响:你需要重新学习如何查看日志(journalctl 变得极其重要)、如何管理服务状态以及如何配置开机自启。

3. 容器与虚拟化:Podman 取代 Docker(默认)

  • CentOS 7:默认安装的是 docker 或 docker-ce,守护进程模式运行。
  • CentOS 8:红帽生态(包括 CentOS)正式转向 Podman 作为默认的容器引擎。
    • 为什么? Podman 是无守护进程(daemonless)的,更安全,支持 rootless 模式,且能生成 OCI 兼容镜像。
    • 现状:docker 命令在 CentOS 8 中通常不可用,除非你手动安装 podman-docker 包来提供兼容性别名。buildah 和 skopeo 也成为官方推荐的构建和扫描工具。
    • Kubernetes:CentOS 8 更好地集成了 Kubernetes 相关工具链,如 minikube 和 openshift 的支持更加原生。

4. 内核与硬件支持:ELRepo 与更新的内核

  • CentOS 7:主要基于 RHEL 7 内核(3.10.x),长期支持但较老。
  • CentOS 8:基于 RHEL 8 内核(最初为 4.18,后续通过 AppStream 仓库可更新至更高版本如 5.4+)。
    • 新特性:更好的 NVMe 存储支持、改进的 Btrfs 文件系统稳定性、对新一代 CPU(如 Intel Skylake-X, AMD Zen)的原生调度优化。
    • 实时内核:提供了 kernel-rt(Real-Time Kernel)的官方支持,适合低延迟场景。

5. 开发语言栈升级:Python 3 和 Go 1.12+

  • CentOS 7:默认 Python 2.7,Go 语言需自行编译或安装旧版。
  • CentOS 8:
    • Python 3.6+ 成为默认 Python 版本(python3 命令直接可用)。Python 2 虽仍存在但已被标记为废弃,不再接收安全更新。
    • Go 1.12+ 作为模块(Module)提供,方便开发者快速搭建微服务环境。
    • Node.js 10+ 也通过 AppStream 仓库提供。

6. 模块化应用流(AppStreams)—— 最重要的架构变化

这是 CentOS 8 区别于 7 的最核心设计理念之一。

  • 问题:在 CentOS 7 中,如果你想安装新版 PostgreSQL 或 PHP,要么打补丁,要么启用第三方源(如 EPEL),这可能导致依赖冲突。
  • 解决方案:CentOS 8 引入 AppStream 仓库。
    • 你可以同时安装多个版本的软件,例如:
      dnf module install python36:3.6
      dnf module install php:7.2
    • 这意味着你可以在同一系统中并行运行不同版本的运行时环境,而不必担心覆盖系统级依赖。这对于多租户服务器、CI/CD 环境非常友好。

7. 安全与加密:TLS 1.3 和 FIPS 合规性增强

  • CentOS 7:默认 TLS 1.2,部分旧服务仍可能协商 TLS 1.0/1.1。
  • CentOS 8:
    • 默认启用 TLS 1.3(在 OpenSSL 1.1.1 支持下)。
    • 更强的密码套件默认策略。
    • 更好的 FIPS 140-2 合规性支持,适用于对数据安全有严格要求的行业客户。

8. 存储技术:Btrfs 和 LVM 的改进

  • CentOS 7:主要使用 ext4。
  • CentOS 8:
    • Btrfs 不再是实验性文件系统,而是生产就绪(Production Ready),支持快照、压缩、子卷等高级功能。
    • LVM 集成度更高,支持更多类型的快照和克隆操作,便于测试环境快速部署。

⚠️ 重要提醒:关于“升级”的现实

你不能直接将 CentOS 7.6 升级到 CentOS 8.2。

Red Hat/CentOS 官方不提供跨大版本的在线升级路径(In-place Upgrade)。你必须:

  1. 备份数据
  2. 全新安装 CentOS 8.2
  3. 迁移配置和数据

总结建议

特性 CentOS 7.6 CentOS 8.2
包管理器 yum dnf (yum 兼容)
初始化系统 systemd + SysVinit 混合 纯 systemd
容器引擎 docker podman (推荐), buildah
默认 Python 2.7 3.6+
软件版本管理 单版本为主 AppStream 模块化多版本
内核 3.10.x 4.18+ (可更新至 5.4+)
安全协议 TLS 1.2 TLS 1.3

给运维人员的建议:

  • 如果你正在维护 CentOS 7 系统,请密切关注其生命周期(已于 2024 年 6 月 30 日结束主流支持,进入维护期)。
  • 新项目或迁移计划应优先考虑 Rocky Linux 9 / AlmaLinux 9 或 Ubuntu LTS,因为 CentOS 8 本身也已进入尾声(EOL 日期为 2029 年底,但社区活跃度已大幅下降)。
  • 学习 dnf、podman 和 systemd 是掌握 CentOS 8 及后续 RHEL 8+ 系列的关键。