CentOS Stream 9与CentOS 8对比:有哪些变化?

CentOS Stream 9 与 CentOS 8 对比:有哪些变化?

CentOS 项目的格局在过去几年发生了重大变化。曾经作为 Red Hat Enterprise Linux (RHEL) 稳定下游版本的 CentOS Linux 已经不复存在,取而代之的是 CentOS Stream。CentOS Stream 定位为 RHEL 的上游,充当一个滚动发布的发行版,介于 Fedora Linux 和 RHEL 之间。这种转变对 CentOS 用户和整个开源社区产生了深远的影响。本文将深入探讨 CentOS Stream 9 与 CentOS 8 之间的关键差异,涵盖内核、软件包管理、系统工具、安全特性、容器化支持、桌面环境以及对用户和开发者的影响等多个方面。

1. 项目定位与发布模式的根本转变

这是两者的最核心区别,理解这一点至关重要。

  • CentOS 8 (及之前的版本):传统上,CentOS 是 RHEL 的一个克隆,或者说是其下游版本。这意味着 Red Hat 首先发布 RHEL,然后 CentOS 社区会获取 RHEL 的源代码,去除 Red Hat 的商标和品牌,然后构建出一个几乎与 RHEL 完全相同的发行版。CentOS 的发布周期通常滞后于 RHEL 几个月,并且提供长期的支持(通常为 10 年)。这使得 CentOS 成为生产环境的理想选择,因为它稳定、可靠且有长期支持。

  • CentOS Stream 9 (及 Stream 系列):CentOS Stream 的定位发生了根本性的变化。它不再是 RHEL 的下游,而是成为了 RHEL 的上游。这意味着新的功能和更新会首先进入 CentOS Stream,经过测试和验证后,再被纳入未来的 RHEL 版本。CentOS Stream 采用滚动发布模式,这意味着它会不断地接收更新,而不是像 CentOS 8 那样进行大版本的发布。这种模式的优点是可以更快地获得新功能和技术,但缺点是稳定性可能会有所降低。

这种转变带来的影响是多方面的:

  • 稳定性:CentOS 8 以其稳定性著称,而 CentOS Stream 9 的稳定性相对较低。因为新功能会优先进入 Stream,可能会引入一些未被充分测试的 bug。
  • 支持周期:CentOS 8 提供长达 10 年的支持,而 CentOS Stream 9 的支持周期较短,与 RHEL 的次要版本(如 9.1, 9.2)保持一致。
  • 适用场景:CentOS 8 更适合对稳定性要求极高的生产环境,而 CentOS Stream 9 更适合希望尝鲜、参与 RHEL 开发过程、或者为 RHEL 的未来版本做准备的用户和开发者。

2. 内核版本的跃迁

内核是操作系统的核心,负责管理系统的硬件资源。

  • CentOS 8:默认内核版本为 4.18。这是一个相对较老的内核,虽然稳定,但可能缺乏对一些新硬件的支持,以及一些新的内核特性。

  • CentOS Stream 9:默认内核版本为 5.14 或更高。这是一个较新的内核,带来了许多改进:

    • 硬件支持:对最新的 CPU、GPU、网络设备等提供了更好的支持。
    • 性能优化:在 CPU 调度、内存管理、文件系统等方面进行了优化,提升了系统性能。
    • 新特性:引入了许多新的内核特性,例如 cgroup v2、BPF (Berkeley Packet Filter) 的增强、IO_uring 等。
    • 安全性:修复了旧内核中存在的一些安全漏洞。

内核版本的提升带来的好处是显而易见的:

  • 更好的硬件兼容性:能够支持更多的新硬件,让系统运行在最新的硬件平台上。
  • 更高的性能:通过内核的优化,提升系统的整体性能,让应用程序运行得更快。
  • 更强的功能:可以使用新的内核特性,例如 IO_uring 可以显著提升 I/O 密集型应用的性能。
  • 更高的安全性:修复已知的安全漏洞,降低系统被攻击的风险。

3. 软件包管理:DNF 的全面进化

CentOS 8 和 CentOS Stream 9 都使用 DNF (Dandified Yum) 作为默认的软件包管理器。但是,CentOS Stream 9 中的 DNF 得到了进一步的增强和优化。

  • CentOS 8:虽然已经使用 DNF,但一些旧的 Yum 命令仍然可以使用。

  • CentOS Stream 9:完全转向 DNF,旧的 Yum 命令不再推荐使用。DNF 本身也进行了许多改进:

    • 性能提升:通过优化依赖关系解析、元数据处理等,提升了软件包安装、更新的速度。
    • 模块化支持增强:对模块化仓库(AppStream)的支持更加完善,可以更方便地安装和管理不同版本的软件包。
    • 新的命令和选项:引入了一些新的命令和选项,例如 dnf module profile,可以更精细地控制模块化软件包的安装。
    • 更好的错误处理:改进了错误处理机制,可以提供更清晰的错误信息,帮助用户解决问题。

软件包管理的改进带来的好处:

  • 更快的软件包操作:无论是安装新的软件包,还是更新现有的软件包,速度都更快。
  • 更灵活的软件包管理:通过模块化支持,可以更灵活地选择不同版本的软件包,满足不同的需求。
  • 更好的用户体验:更清晰的错误信息,更方便的命令和选项,让软件包管理更加容易。

4. 系统工具与服务的更新

CentOS Stream 9 引入了许多新的系统工具和服务,并对现有的工具进行了升级。

  • Podman:CentOS Stream 9 将 Podman 作为默认的容器运行时。Podman 是一个无守护进程的容器引擎,与 Docker 兼容,但提供了更高的安全性。
  • Cockpit:Cockpit 是一个基于 Web 的服务器管理界面,CentOS Stream 9 对其进行了增强,提供了更多的功能和更好的用户体验。
  • systemd:systemd 是 Linux 系统的初始化系统和服务管理器,CentOS Stream 9 使用了更新版本的 systemd,带来了许多改进,例如更好的资源管理、更快的启动速度等。
  • NetworkManager:NetworkManager 是网络管理工具,CentOS Stream 9 使用了更新版本的 NetworkManager,提供了更好的网络配置和管理功能。
  • OpenSSL:CentOS Stream 9 默认使用 OpenSSL 3.0,这是一个重要的安全更新,带来了许多新的加密算法和安全特性。
  • chrony: chrony 作为默认的 NTP(网络时间协议)实现,在 CentOS Stream 9 中也得到了更新。

这些系统工具和服务的更新带来的好处:

  • 更好的容器化支持:Podman 提供了更安全、更高效的容器管理方式。
  • 更方便的服务器管理:Cockpit 提供了直观的 Web 界面,可以轻松管理服务器。
  • 更稳定的系统运行:systemd 的改进提升了系统的稳定性和可靠性。
  • 更好的网络管理:NetworkManager 的更新让网络配置和管理更加方便。
  • 更高的安全性:OpenSSL 3.0 的更新提升了系统的安全性。

5. 安全特性的增强

安全性是任何操作系统都非常重视的方面,CentOS Stream 9 在安全性方面进行了许多增强。

  • SELinux:SELinux (Security-Enhanced Linux) 是一个强制访问控制系统,CentOS Stream 9 对 SELinux 进行了改进,提供了更细粒度的安全策略。
  • 防火墙:CentOS Stream 9 默认使用 nftables 作为防火墙后端,取代了 iptables。nftables 提供了更灵活、更强大的防火墙规则配置。
  • 内核锁定 (Kernel Lockdown):CentOS Stream 9 支持内核锁定功能,可以限制内核的某些功能,防止恶意软件对内核进行攻击。
  • IMA (Integrity Measurement Architecture):IMA 可以检测系统文件的完整性,防止恶意软件篡改系统文件。
  • 加密库更新: OpenSSL 3.0 提供了更强的加密算法和协议,提高了数据传输和存储的安全性。

这些安全特性的增强带来的好处:

  • 更强的系统安全性:SELinux、防火墙、内核锁定等功能的增强,可以有效防止各种安全威胁。
  • 更好的数据保护:加密库的更新可以保护数据在传输和存储过程中的安全。
  • 更高的合规性:满足各种安全标准和法规的要求。

6. 容器化支持的演进

容器化技术已经成为现代软件开发和部署的标准,CentOS Stream 9 对容器化支持进行了重大改进。

  • Podman 作为默认:如前所述,CentOS Stream 9 默认使用 Podman 作为容器运行时,取代了 Docker。Podman 的优势在于:

    • 无守护进程:Podman 不需要运行一个守护进程,减少了系统资源的占用,也降低了安全风险。
    • Rootless 模式:Podman 支持 Rootless 模式,允许普通用户运行容器,而不需要 root 权限,提高了安全性。
    • 与 Docker 兼容:Podman 的命令行接口与 Docker 兼容,用户可以无缝切换。
  • cgroups v2:CentOS Stream 9 默认使用 cgroups v2,这是 Linux 内核的控制组功能的最新版本。cgroups v2 提供了更精细的资源控制,可以更好地管理容器的资源使用。

  • Buildah: 用于构建容器镜像的工具,与 Podman 紧密集成。
  • Skopeo: 用于检查、复制和签名容器镜像的工具。

容器化支持的改进带来的好处:

  • 更安全、更高效的容器运行:Podman 的无守护进程和 Rootless 模式提高了容器运行的安全性和效率。
  • 更好的资源管理:cgroups v2 可以更精细地控制容器的资源使用。
  • 更方便的容器开发和部署:Podman、Buildah 和 Skopeo 等工具提供了完整的容器生态系统,方便用户进行容器的开发、构建、部署和管理。

7. 桌面环境的选择 (GNOME 的升级)

虽然 CentOS 主要用于服务器环境,但也可以作为桌面操作系统使用。

  • CentOS 8:默认桌面环境为 GNOME 3.28。

  • CentOS Stream 9:默认桌面环境为 GNOME 40 或更高版本。GNOME 40 带来了许多重大的变化:

    • 全新的 UI 设计:采用了全新的水平工作区和垂直应用程序启动器,提供了更现代、更直观的用户体验。
    • 性能优化:对图形渲染、输入处理等方面进行了优化,提升了桌面环境的流畅度。
    • 新的手势操作:引入了新的多点触控手势,方便用户在触摸屏设备上操作。
    • 改进的应用程序:许多核心应用程序都进行了更新,提供了更好的功能和用户体验。

桌面环境的升级带来的好处:

  • 更现代、更美观的用户界面:GNOME 40 的全新设计让桌面环境更加时尚、美观。
  • 更流畅、更高效的操作体验:性能优化和新的手势操作提升了桌面环境的流畅度和操作效率。
  • 更好的应用程序体验:核心应用程序的更新提供了更好的功能和用户体验。

8. 对用户和开发者的影响

CentOS Stream 9 的变化对用户和开发者都有重要的影响。

  • 对于 CentOS 8 用户

    • 迁移挑战:由于 CentOS 8 的支持将在 2021 年底结束(CentOS Linux 8,非 CentOS Stream 8),用户需要考虑迁移到其他发行版,例如 CentOS Stream 9、RHEL、AlmaLinux、Rocky Linux 等。迁移过程可能需要一些时间和精力,特别是对于大型的生产环境。
    • 学习曲线:CentOS Stream 9 的一些新特性和工具可能需要用户重新学习和适应。
  • 对于开发者

    • 参与 RHEL 开发:CentOS Stream 9 为开发者提供了一个参与 RHEL 开发过程的机会。开发者可以在 CentOS Stream 9 上测试新的功能和补丁,并向 Red Hat 提交反馈。
    • 为 RHEL 的未来做准备:CentOS Stream 9 可以作为 RHEL 的一个预览版,开发者可以在 CentOS Stream 9 上开发和测试应用程序,为未来的 RHEL 版本做准备。
    • 更快的获取新特性:CentOS Stream 9 的滚动发布模式可以让开发者更快地获得新的功能和技术。
  • 对于整个开源社区

    • CentOS 项目的转型:CentOS Stream 的出现标志着 CentOS 项目的重大转型。它不再是一个单纯的 RHEL 克隆,而是一个更加开放、更加活跃的社区项目。
    • 对 RHEL 生态系统的影响:CentOS Stream 的定位可能会对 RHEL 生态系统产生影响。一些用户可能会选择使用 CentOS Stream,而不是 RHEL,这可能会减少 Red Hat 的收入。
    • 促进开源创新:CentOS Stream 的滚动发布模式可以促进开源创新,让新的技术更快地进入社区。

总结

CentOS Stream 9 与 CentOS 8 之间的差异是显著的,这些差异不仅仅体现在版本号上,更体现在项目定位、发布模式、技术架构等多个方面。CentOS Stream 9 作为 RHEL 的上游,带来了许多新的功能和改进,但也牺牲了一定的稳定性。用户和开发者需要根据自己的需求和情况,选择合适的发行版。

对于希望尝鲜、参与 RHEL 开发过程、或者为 RHEL 的未来版本做准备的用户和开发者来说,CentOS Stream 9 是一个不错的选择。但对于那些对稳定性要求极高的生产环境,可能需要考虑其他更稳定的发行版,例如 RHEL、AlmaLinux、Rocky Linux 等。

无论选择哪个发行版,都需要充分了解其特性和变化,做好充分的准备和测试,以确保系统的稳定运行和业务的持续发展。

THE END