第七章讲操作系统。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
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。