Linux 服务器 OS 演进 —— 从 RHEL 到现代发行版

第七章讲操作系统。Linux 是服务器市场绝对主流——但”哪个发行版”、”用什么内核”、”哪种包管理器”这些选择会决定运维成本。本文按家族梳理。

一张全景

graph TB
  K[Linux Kernel
内核 / kernel.org] K --> RH[RHEL 系
RPM] K --> DB[Debian 系
DEB] K --> SU[SUSE 系
RPM] K --> SP[特殊
NixOS / Gentoo / Arch] RH --> RHEL[RHEL] RH --> CENTOS[CentOS
已转 Stream] RH --> ROCKY[Rocky Linux] RH --> ALMA[AlmaLinux] RH --> FEDORA[Fedora] RH --> ORACLE[Oracle Linux] DB --> DEBIAN[Debian] DB --> UBUNTU[Ubuntu Server] DB --> KALI[Kali] SU --> SLES[SLES] SU --> OPENSUSE[openSUSE Leap/Tumbleweed] RH -.- CN[国产基于 RPM] DB -.- CN CN --> EULER[openEuler] CN --> KYLIN[麒麟] CN --> ANOLIS[龙蜥 OpenAnolis] CN --> UOS[统信 UOS]

三大主流家族

Red Hat 系(RPM)

1
2
3
4
5
6
RHEL(Red Hat Enterprise Linux):     付费,企业级
CentOS: 原 RHEL 重编译,2021 年转 Stream(即"上游版")
Rocky Linux: CentOS 关闭后社区接力,RHEL 兼容
AlmaLinux: 另一支社区 RHEL 兼容
Oracle Linux: Oracle 维护的 RHEL 兼容
Fedora Red Hat 上游,新特性试验

CentOS Stream 风波(2020) 是 Linux 服务器界的大事件:

1
2
3
4
5
2020 年 12 月:Red Hat 宣布 CentOS 8 提前 EOL
CentOS 8 → CentOS Stream(变为 RHEL 上游)
影响: 几亿 CentOS 用户必须迁移
受益: Rocky Linux、AlmaLinux 一夜走红
国产 OS 路线(欧拉、龙蜥)加速

Debian 系(DEB)

1
2
3
Debian:       社区维护,稳定保守
Ubuntu: Canonical 商业发行,每 2 年 LTS(4-6 月发版)
22.04 LTS / 24.04 LTS / 26.04 LTS(即将)

Ubuntu LTS 是云市场最广泛——AWS / GCP / Azure 上 Ubuntu 占比都很高。

SUSE 系(RPM)

1
2
3
SLES(SUSE Linux Enterprise Server):付费企业级
openSUSE Leap: 社区版
openSUSE Tumbleweed: 滚动更新

SUSE 在欧洲企业、SAP 系统上份额高。中国市场较少。

RHEL 的版本节奏

1
2
3
4
5
6
7
RHEL 6(2010-2020):    服务器经典
RHEL 7(2014-2024): 引入 systemd,是变化最大的一代
RHEL 8(2019-2029): UBI 容器、模块化 AppStream
RHEL 9(2022-2032): OpenSSL 3、cgroup v2 默认
RHEL 10(2025-2035): 预计、ARM 架构第一公民

每代主要支持 10 年(5 年 full + 5 年 extended)

RHEL 8/9 是当前服务器市场的主流——大多数企业上 RHEL 8 或 RHEL 9。

Ubuntu Server 的版本节奏

1
2
3
4
5
6
7
Ubuntu 18.04 LTS(2018-2028):旧但还在用
Ubuntu 20.04 LTS(2020-2030):当前主力之一
Ubuntu 22.04 LTS(2022-2032):当前主力
Ubuntu 24.04 LTS(2024-2034):最新 LTS
Ubuntu 26.04 LTS(2026-2036):将在 2026 年 4 月发布

非 LTS 半年一发,9 月支持

LTS 是数据中心标配——10 年支持是企业刚需。

systemd:Linux 服务器的”分水岭”

2014 年 RHEL 7 / Debian 8 / Ubuntu 14.04 都默认换成 systemd——这是 Linux 历史上最有争议的变化:

graph TB
  OLD[传统 SysVinit + Upstart]
  OLD --> S1[/etc/init.d/ + 串行启动]
  
  NEW[systemd]
  NEW --> N1[unit 文件 + 并行启动]
  NEW --> N2[整合:网络/日志/挂载/cron]
  NEW --> N3[依赖关系图]
  NEW --> N4[journald 二进制日志]

systemd 集中管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
原来分散的功能被 systemd 接管:
init → systemd
cron → systemd-timer
syslog → journald
network → networkd(可选)
resolv.conf → resolved
mount → mount unit
inetd → socket activation

争议:
- "Unix 哲学"违反(一个工具只做一件事)
- 复杂度大
- 大型软件吸引大型 bug

systemd 的实战命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 服务管理
systemctl start/stop/restart nginx
systemctl enable/disable nginx
systemctl status nginx

# 看日志
journalctl -u nginx
journalctl -f # 跟踪模式
journalctl --since "1 hour ago"
journalctl -p err # 仅错误

# 单元配置
systemctl cat nginx.service
systemctl edit nginx.service # 临时覆盖
systemctl daemon-reload

# 启动分析
systemd-analyze
systemd-analyze blame # 看启动慢的服务
systemd-analyze critical-chain # 关键启动链

# 资源限制
systemctl set-property nginx MemoryLimit=2G
systemctl set-property nginx CPUQuota=200%

systemd 的资源限制其实就是 cgroup——它在自动管理 cgroup。

包管理器对比

graph TB
  RPM[RPM 系]
  RPM --> YUM[yum
RHEL 7] RPM --> DNF[dnf
RHEL 8+] RPM --> ZYPPER[zypper
SUSE] DEB[DEB 系] DEB --> APT[apt
Debian/Ubuntu] OTHER[其他] OTHER --> PACMAN[pacman
Arch] OTHER --> NIX[nix
NixOS] OTHER --> SNAP[snap / flatpak
跨发行版]
包管理器 命令例 配置文件
dnf / yum dnf install nginx /etc/yum.repos.d/
apt apt install nginx /etc/apt/sources.list
zypper zypper install nginx /etc/zypp/repos.d/
pacman pacman -S nginx /etc/pacman.conf

内核版本与发行版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LTS 内核版本(kernel.org):
4.19(2018): 仍在维护
5.4(2019): EOL 2025
5.10(2020): EOL 2026
5.15(2021): EOL 2026
6.1(2022): EOL 2026
6.6(2023): EOL 2026
6.12(2024): EOL 2027

每个发行版选一个 LTS 内核长期维护:
RHEL 9: 基于 5.14
Ubuntu 22.04:5.15
Ubuntu 24.04:6.8
Debian 12: 6.1
SLES 15 SP6: 6.4

数据中心服务器多年不会换内核——选好 LTS 后稳定运行 5-10 年。

内核新特性的”上游 → 发行版”路径

1
2
3
4
5
6
7
8
9
2017:BPF 抓包 / XDP 高速包处理(5.x)
2018:cgroup v2(4.20,2019 默认 RHEL 8)
2019:io_uring 异步 IO(5.1)
2020:BPF CO-RE,eBPF 程序通用
2021:folios(VM 子系统重构)
2022:BPF for tracing 大量工具(bpftrace)
2023:folio 完成 + multi-gen LRU
2024:sched_ext(可插拔调度器)
2025:NUMA / memory tiering 改进 / CXL

这些特性按发行版”渐进引入”——RHEL 9 才开始默认 cgroup v2,是 2019 上游引入后 3 年。

io_uring:异步 IO 革命

io_uring(5.1+,2019)是 Linux 几年最重要的 IO 子系统升级:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
传统 IO:     read() / write() / epoll
每次系统调用过 kernel 切换上下文
高并发吃 CPU

io_uring: 提交队列 + 完成队列
多个请求批量提交,批量完成
内核轮询模式可零系统调用
性能 5-10× 传统

应用:
- PostgreSQL(17+)
- MySQL
- Redis(部分)
- QEMU
- rusoto / Tokio

io_uring 是数据库 / 存储 / 高并发服务的”未来 IO”。

eBPF:内核可编程

eBPF(extended BPF)是 2014+ Linux 内核最深刻的扩展:

graph TB
  USER[用户程序
C / Rust / Go] USER --> BPF[BPF Verifier
安全检查] BPF --> JIT[JIT 编译] JIT --> KERNEL[内核中执行
挂钩点] KERNEL --> H1[网络包处理] KERNEL --> H2[系统调用追踪] KERNEL --> H3[安全策略] KERNEL --> H4[性能分析]

应用:

1
2
3
4
5
6
Cilium:       BPF-based K8s CNI
bpftrace: 动态 tracing 工具
Falco: BPF 安全审计
Pixie: BPF 可观测平台
Katran: BPF 负载均衡(Facebook)
Calico: BPF 数据面

BPF 让数据中心运维 / 排障 / 安全能力大幅提升——比传统 ftrace / strace 快 10-100 倍

服务器 OS 的几个”老坑”

坑 1:选错 EL 版本

1
2
3
4
5
6
RHEL 7:     2024 年 6 月 EOL
RHEL 8: 2029 年 EOL
RHEL 9: 2032 年 EOL

新部署上 RHEL 7 就是 1 年内 EOL ——非常糟
新部署应该 RHEL 9 / Ubuntu 24.04 起步

坑 2:CentOS 8 仍在跑

1
2
3
4
5
6
CentOS 8 已 EOL(2021 年)
但很多企业仍在用——补丁 / 安全洞危险
迁移路径:
CentOS 8 → Rocky Linux 8 / AlmaLinux 8(最容易)
CentOS 8 → RHEL 8(付费)
CentOS 8 → openEuler / 龙蜥(国产)

坑 3:systemd 资源限制忘记设

1
2
3
4
5
6
默认 systemd 单元没有资源限制
进程内存泄漏 → 把整机吃光 → OOM 全杀

补救:
systemctl set-property myapp MemoryLimit=4G
写入 .service 文件中持久化

坑 4:journald 日志爆盘

1
2
3
4
5
journald 默认无限保留 → 磁盘满
配置 /etc/systemd/journald.conf:
SystemMaxUse=2G
RuntimeMaxUse=1G
MaxRetentionSec=1month

坑 5:NetworkManager 与 networkd 冲突

1
2
3
RHEL 默认 NetworkManager
Ubuntu Server 默认 networkd
两个都开:互相覆盖配置 → 网络抖动

坑 6:firewalld vs nftables

1
2
3
4
5
6
RHEL 8+ 默认 firewalld(nftables 后端)
直接 iptables 命令在 RHEL 8+ 上是模拟层
建议:
- 用 firewalld 命令(系统层)
- 或直接 nftables(更现代)
- 不要混用

坑 7:内核升级踩坑

1
2
3
4
5
6
RHEL minor 升级(9.2 → 9.3):通常 OK
RHEL major 升级(9 → 10): 重新装更安全
内核单独升级(不是发行版):
- 5.14 → 6.x:驱动可能缺
- GPU / 存储驱动必须验证
- 第三方模块(kABI)不一定兼容

服务器 OS 的几个”硬核”特性

Live Patching(在线打补丁)

1
2
3
4
kpatch(RHEL)/ livepatch(Ubuntu):
- 内核安全补丁不重启即生效
- 主要打 CVE 漏洞
- 临时方案,下次重启永久打

kdump(内核崩溃转储)

1
2
3
4
5
6
7
内核崩溃时把内存 dump 到文件:
- 第二个 kernel 接管
- dump 到 /var/crash/
- 用 crash 工具分析

配置: /etc/kdump.conf
启用: systemctl enable --now kdump

tuned(性能调优)

1
2
3
4
tuned-adm list           # 看可用 profile
tuned-adm profile latency-performance # 低延迟
tuned-adm profile throughput-performance # 高吞吐
tuned-adm profile virtual-host # 虚拟化宿主

每个 profile 自动调 CPU 调度、内核参数、IRQ。

服务器 OS 选型实战

graph TD
  Q1{业务场景?}
  Q1 -- "传统企业 + 商业支持" --> S1[RHEL 9 + 订阅]
  Q1 -- "云原生 / K8s" --> S2[Ubuntu 22.04/24.04 LTS]
  Q1 -- "自管 + 免费" --> S3[Rocky Linux 9 / AlmaLinux 9]
  Q1 -- "SAP / 欧洲企业" --> S4[SLES 15]
  Q1 -- "国产化要求" --> S5[openEuler / 麒麟 / 龙蜥]
  Q1 -- "AI 训练集群" --> S6[Ubuntu 22.04 + 内核 5.15+]

一些查询命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 看发行版
cat /etc/os-release
hostnamectl

# 看内核
uname -r
uname -a

# 看包管理器
dnf list installed
apt list --installed

# 看 systemd 单元
systemctl list-units --type=service
systemctl list-timers

# 内核参数
sysctl -a | grep <param>
cat /proc/cmdline # 启动参数

# 看启动时间
systemd-analyze
systemd-analyze blame | head -10

一些数字直觉

1
2
3
4
5
6
7
8
RHEL 9 全新安装:    ~1.5 GB 磁盘 / 系统启动 < 30 秒
Ubuntu 22.04 LTS: ~1.2 GB
最小 Alpine Linux: ~5 MB(容器用)

RHEL 订阅: $349/年 起(标准)
SLES 订阅: $1499/年 起(标准)
openEuler: 免费 + 商业服务(华为)
龙蜥: 免费 + 商业服务(阿里、统信等)

第七章 Roadmap

接下来会展开:

  • 虚拟化(KVM / Xen / Hyper-V)
  • 容器化(Docker / containerd / K8s)
  • 内核内部(调度 / 网络栈 / FS)
  • AI 时代 OS 适配(vGPU / NPU 调度)
  • 国产服务器 OS(欧拉 / 麒麟 / 龙蜥 / 统信)

小结

  • Linux 是服务器市场绝对主流,三大家族 RHEL / Debian / SUSE
  • CentOS 8 风波改变格局,Rocky / AlmaLinux 接力
  • systemd 是 2014 后服务器 OS 的”分水岭”
  • io_uring + eBPF 是近年内核最重要的两个新特性
  • RHEL 订阅 vs 免费衍生 vs 国产 OS 是当前选型核心问题

下一篇讲虚拟化——KVM、Xen、Hyper-V,以及 SR-IOV / vGPU。