2020年12月8日,CentOS官方发布公告称CentOS 8将于2021年12月31日结束支持,取而代之的是CentOS Stream。

以前centos作为RHEL的重新编译版,即下游发型版: Fedora -> RHEL -> CentOS
现在是和Fedora一样专注于RHEL的上游测试分支: Fedora -> CentOS Stream -> RHEL

CentOS Stream发布方式改为滚动更新,不像传统的操作系统有着明确的系统版本号,而是在升级过程中使用来自上游的最新软件包版本以及内核功能等。其定位是吸收Fedora中测试稳定的软件,制作成相对稳定的滚动发型版,即给RHEL做测试,又为RHEL培养客户。对于稳定性要求不高的场景,可以直接从CentOS 8迁移至CentOS Stream。

迁移之前,先备份好数据及重要的配置!!备份好数据及重要的配置!!备份好数据及重要的配置!!

一、更新CentOS 8系统至最新

dnf update 

重启后查看版本号:

cat /etc/redhat-release 
CentOS Linux release 8.3.2011

二、安装CentOS Stream 软件源

dnf install centos-release-stream

将当前的CentOS 8源替换成CentOS Stream源:

dnf swap centos-{linux,stream}-repos

三、迁移并替换系统软件及内核

distro-sync工具会比对本地软件和CentOS Steam源中的软件及内核,并进行必要的升级、降级或者保持不变,这一步中有差异的软件选择Y替换成CentOS Stream提供的版本:

dnf distro-sync

这一步骤会下载比较多的软件并安装,耗时比较久。下载安装完成后,重启系统并验证版本:

cat /etc/redhat-release 
CentOS Stream release 8

四、收尾验证

移除无用和冲突的软件包:

dnf  autoremove

CentOS默认会保留5个旧内核,移除旧版的内核和旧版的kernel-headers、kernel-devel等软件包,有三种方式:

  1. 更改/etc/yum.conf中的 installonly_limit=5,之后使用dnf autoremove移除
  2. 安装yum-utils,并使用命令:package-cleanup --oldkernels --count=1进行移除
  3. rpm -qa 找出旧版内核,手动删除

清除了旧内核之后,如果之前使用了内核模块的软件,如wireguard等,需重新配置。

检查并重新设置开启启动,如firewalld等软件。另外,由于很多系统内核、系统软件和库文件被替换或升级,有些配置可能被更改或者软件无法启动,需一一进行验证。

总体来说,过程比较简单,也比较容易迁移。但是迁移毕竟是高风险操作,容易导致软件无法启动及灵异问题,排查起来比较麻烦,有条件仍然建议重新安装。

红帽官方不建议将CentOS Stream用于生产环境中,随着CentOS Stream的发布,Red Hat宣布放宽RHEL系统的独立开发者订阅,允许最多免费使用16个RHEL系统。如果服务器比较多,可以考虑迁移到Oracle Linux、Rocky Linux、AlmaLinux等基于RHEL的下游系统。