目录标题
你可以通过以下方法快速判断当前系统使用的是 cgroup v1 还是 cgroup v2(Kubernetes 和容器资源限制等行为会受到这个区别的直接影响):
✅ 方法一:查看 /sys/fs/cgroup 目录结构(推荐)
mount | grep cgroup
或直接看:
ls /sys/fs/cgroup
判断依据:
| 情况 | 使用的 Cgroup 版本 |
|---|---|
出现了多个子系统目录(如 cpu/、memory/、pids/ 等) | cgroup v1 |
目录下只有一套统一控制器(无子目录,或只有单独文件如 cgroup.controllers) | cgroup v2 |
✅ 示例 1:Cgroup v1
$ ls /sys/fs/cgroup
blkio cpu cpuacct cpuset devices freezer memory net_cls perf_event pids systemd
说明使用的是 cgroup v1,每个子系统单独挂载。
✅ 示例 2:Cgroup v2
$ ls /sys/fs/cgroup
cgroup.controllers cgroup.procs cgroup.subtree_control memory.current cpu.max ...
说明使用的是统一的 cgroup v2 控制器。
✅ 方法二:查看 /proc/filesystems
cat /proc/filesystems | grep cgroup
输出样例:
-
cgroup v1
nodev cgroup -
cgroup v2
nodev cgroup2
如果只出现 cgroup2,说明使用 v2;如果有 cgroup,就是 v1。
✅ 方法三:查看内核启动参数
cat /proc/cmdline
查找 systemd.unified_cgroup_hierarchy 参数:
| 参数值 | 含义 |
|---|---|
systemd.unified_cgroup_hierarchy=1 或省略 | 使用 cgroup v2(或默认行为) |
systemd.unified_cgroup_hierarchy=0 | 使用 cgroup v1 |
✅ 方法四:使用 stat -fc %T /sys/fs/cgroup
这是 Linux 原生命令检测方式,非常直接:
stat -fc %T /sys/fs/cgroup
输出解释:
| 输出结果 | Cgroup 版本 |
|---|---|
cgroup2fs | v2 |
tmpfs / cgroup | v1 |
📌 小结:
| 方法 | 命令 | 判断依据 | |
|---|---|---|---|
| 查看挂载点 | `mount | grep cgroup` | 看是否是 cgroup2 或多个子系统 |
| 看目录结构 | ls /sys/fs/cgroup | 单一结构是 v2,多个子目录是 v1 | |
| 文件系统类型 | stat -fc %T /sys/fs/cgroup | 返回 cgroup2fs 是 v2 | |
| 内核参数 | cat /proc/cmdline | 看是否开启 unified hierarchy | |
| 文件系统支持 | cat /proc/filesystems | 是否包含 cgroup2 |
如你需要进一步确认某个 K8s 节点或容器运行在哪个 cgroup 版本上,也可以提供你的系统版本或 uname -a 输出,我可以帮你判断。是否需要我帮你写一个一键检测脚本?

915

被折叠的 条评论
为什么被折叠?



