cgroup v1 还是 cgroup v2 ?

你可以通过以下方法快速判断当前系统使用的是 cgroup v1 还是 cgroup v2(Kubernetes 和容器资源限制等行为会受到这个区别的直接影响):


✅ 方法一:查看 /sys/fs/cgroup 目录结构(推荐)

mount | grep cgroup

或直接看:

ls /sys/fs/cgroup

判断依据:

情况使用的 Cgroup 版本
出现了多个子系统目录(如 cpu/memory/pids/ 等)cgroup v1
目录下只有一套统一控制器(无子目录,或只有单独文件如 cgroup.controllerscgroup 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 版本
cgroup2fsv2
tmpfs / cgroupv1

📌 小结:

方法命令判断依据
查看挂载点`mountgrep 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 输出,我可以帮你判断。是否需要我帮你写一个一键检测脚本?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值