EL 9:cgroup v2 成为默认
EL 9 把默认控制组层级切换为 cgroup v2(统一层级,挂载为 cgroup2fs)。对容器用户,这意味着 rootless Podman 也能做完整的 CPU/内存限制;对运维用户,这意味着所有硬编码 /sys/fs/cgroup/memory/… 这类 v1 路径的监控与代理工具需要适配。
这是什么变化
Section titled “这是什么变化”cgroup v1 按控制器划分多个层级(/sys/fs/cgroup/cpu、/sys/fs/cgroup/memory……),同一进程在不同控制器里属于不同路径,语义混乱且有竞态。cgroup v2 改为单一统一层级:
- 一棵树,每个进程组一个节点,所有控制器(cpu、memory、io、pids)在同一节点配置;
- 更安全的委派模型:非特权用户可以被安全地委派一棵子树——这是 rootless 容器资源限制的前提;
- 新增 PSI(Pressure Stall Information)等压力指标,成为新一代调度/自动扩缩容的数据源。
EL 8 已提供 v2 但默认混合模式(hybrid),EL 9 起默认为纯 v2。
EL 8 → EL 9 对比
Section titled “EL 8 → EL 9 对比”| 项 | EL 8 | EL 9 |
|---|---|---|
| 默认层级 | hybrid(v1+v2 并存) | 纯 v2(unified) |
| 挂载点 | 多个 v1 层级 + /sys/fs/cgroup/unified | /sys/fs/cgroup(cgroup2fs) |
| rootless 容器资源限制 | 受限 | 完整支持 |
v1 路径(如 …/memory/memory.limit_in_bytes) | 存在 | 不存在 |
- 监控/安全代理/旧版容器运行时:读取 v1 路径或期望 v1 布局的工具会拿到空数据或报错;需升级到支持 cgroup v2 的版本。
- systemd 服务与切片:
systemctl set-property等接口不变,但底层落点变为统一层级;自定义的 cgroup 手工操作脚本需要改写。 - 容器:Podman 4 在 v2 上获得更精确的内存记账与 OOM 处理;rootless 场景的限制(
podman run --memory …)真正生效。 - 回退:内核参数
systemd.unified_cgroup_hierarchy=0可临时退回 hybrid,但仅作过渡手段,不建议长期。
stat -fc %T /sys/fs/cgroup # cgroup2fs = v2mount | grep cgroupcat /sys/fs/cgroup/system.slice/sshd.service/memory.current- Podman 基础 — rootless 容器与资源限制实操
- EL 9:工具链全面更新 — 同版本的内核与工具链变化
- EL 8:nftables 取代 iptables — 上一代的默认后端切换