从 CentOS 迁移到 CentOS Stream:完整指南
介绍
2020年底,红帽(Red Hat)宣布将战略重心从传统的 CentOS Linux 转移到 CentOS Stream。这一变化标志着 CentOS 项目的重大转型。本文旨在为系统管理员和开发者提供一份详尽的指南,帮助您理解这一变化,并顺利地将现有的 CentOS 8 系统迁移到 CentOS Stream 8。
- CentOS Linux (传统版):作为 Red Hat Enterprise Linux (RHEL) 的下游重建版本,它在 RHEL 发布之后进行编译,因此以其稳定性和与 RHEL 的高兼容性而闻名,被广泛用于生产环境。
- CentOS Stream (滚动版):定位在 Fedora 和 RHEL 之间,是 RHEL 的上游开发分支。它作为一个“滚动预览版”,持续接收即将集成到下一个 RHEL 次要版本中的新功能和补丁。
CentOS Linux 8 已于 2021 年 12 月 31 日停止维护(EOL),这意味着它将不再接收任何官方的安全更新和错误修复。因此,迁移到一个受支持的操作系统变得至关重要。
为什么要迁移到 CentOS Stream?
迁移到 CentOS Stream 对许多用户来说是一个合乎逻辑的选择,原因如下:
- 更早获得新功能:您可以提前体验并测试计划用于 RHEL 的新软件和功能。
- 影响 RHEL 的未来:社区成员和开发者可以通过贡献和反馈,直接参与到 RHEL 的开发流程中。
- 官方支持的迁移路径:红帽官方提供了从 CentOS Linux 8 到 CentOS Stream 8 的平滑迁移工具。
- 持续更新:系统可以持续接收最新的软件包更新,而不是等待 RHEL 的次要版本发布。
关键区别:CentOS Linux vs. CentOS Stream
为了做出明智的决策,请务必理解两者之间的核心差异:
| 特性 | CentOS Linux | CentOS Stream |
|---|---|---|
| 与 RHEL 的关系 | 下游 (Downstream) | 上游 (Upstream) |
| 发布模式 | 定点发布 (Point Release) | 滚动发布 (Rolling Release) |
| 稳定性 | 非常稳定,适合生产 | 相对稳定,但更前沿 |
| 目标用户 | 寻求免费、稳定 RHEL 替代品的生产环境 | 开发者、测试者以及希望影响 RHEL 的用户 |
| 更新频率 | 较低,随 RHEL 次要版本更新 | 较高,通常为每日或每周 |
| 社区贡献 | 间接 | 直接,可影响 RHEL |
迁移前的准备工作
在开始迁移之前,请务必完成以下准备工作,以确保数据安全和系统稳定:
-
创建完整备份!
这是最重要的一步。请使用您偏好的工具(如rsync、tar或云服务商的快照功能)为您的整个系统创建一个完整、可恢复的备份。如果迁移过程中出现任何问题,备份是您唯一的保障。 -
更新现有系统
确保您当前的 CentOS Linux 8 系统已安装所有可用的更新。bash
sudo dnf update -y -
重启系统
如果更新中包含内核升级,强烈建议重启系统以加载最新的内核。bash
sudo reboot
Step-by-Step 迁移指南 (从 CentOS Linux 8 到 CentOS Stream 8)
官方提供的迁移过程非常简单。只需几个命令即可完成。
第 1 步:安装 CentOS Stream 发布包
此命令会安装包含 CentOS Stream 仓库信息和 GPG 密钥的软件包。
bash
sudo dnf install centos-release-stream -y
第 2 步:切换仓库
使用 dnf 的 swap 命令,将系统的仓库配置从 CentOS Linux 切换到 CentOS Stream。
bash
sudo dnf swap centos-{linux,stream}-repos -y
第 3 步:同步软件包
这是迁移的核心步骤。distro-sync 命令会将您系统上安装的所有软件包同步到 CentOS Stream 仓库中的最新版本。它可能会升级、降级或保持现有软件包不变,以匹配 Stream 的状态。
bash
sudo dnf distro-sync -y
注意:此过程会下载大量软件包,可能需要一些时间,具体取决于您的网络速度和系统已安装的软件数量。请耐心等待其完成。
迁移后的验证
迁移完成后,您需要验证系统是否已成功切换到 CentOS Stream。
-
重启系统
为了确保所有更新(包括可能的新内核)都已正确加载,请重启您的服务器。bash
sudo reboot -
检查操作系统版本
登录系统后,运行以下命令来检查操作系统版本信息:bash
cat /etc/os-release您应该能看到类似以下的输出,明确标识为
CentOS Stream:NAME="CentOS Stream"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Stream 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"或者,使用更简洁的命令:
bash
cat /etc/redhat-release输出应为:
CentOS Stream release 8。
潜在的挑战和注意事项
- 第三方仓库:如果您使用了如 EPEL 或其他第三方仓库,请确保它们与 CentOS Stream 兼容。在大多数情况下,为 RHEL 8 设计的仓库(如 EPEL 8)可以继续工作。
- 内核:CentOS Stream 的内核版本会比 RHEL 的更新。这可能会影响依赖特定内核版本的驱动程序或软件。
- 回滚困难:迁移到 CentOS Stream 是一个单向操作,没有简单的官方方法可以回滚到 CentOS Linux。唯一的恢复方式是使用您在迁移前创建的备份。
结论
从 CentOS Linux 迁移到 CentOS Stream 是一个直接且受官方支持的过程。对于希望继续在 RHEL 生态系统中工作的用户来说,这是一个自然的选择。虽然 CentOS Stream 的滚动发布模式可能不适合所有生产环境,但它为开发者和希望紧跟技术前沿的用户提供了一个绝佳的平台。
替代方案
如果 CentOS Stream 的模式不符合您的稳定性要求,社区还创建了多个与 RHEL 1:1 兼容的下游发行版,作为传统 CentOS Linux 的精神继承者:
- Rocky Linux: 由 CentOS 创始人 Gregory Kurtzer 发起。
- AlmaLinux: 由 CloudLinux 公司支持和维护。
这两个发行版都提供了从 CentOS 8 迁移的脚本,并且致力于长期维护,是寻求稳定生产环境的绝佳选择。