挂载cgroup时cgroup与none设备的差异及通用挂载选择
cgroup vs none 设备挂载的区别及跨发行版适配方案
背景信息
关闭cgroup v2的Ubuntu 22.04中,cgroup挂载信息:
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
CentOS 9 Stream(原生支持cgroup v1)中,挂载信息:
none on /run/cgroups/cpu type cgroup (rw,relatime,seclabel,cpu)
一、cgroup设备和none设备的核心区别
- 功能完全一致,仅为发行版配置习惯差异
两者挂载的都是同一套cgroup虚拟文件系统,对CPU、内存等资源的限制管理能力没有任何区别,只是不同发行版的标识和挂载偏好不同。 - 设备名的含义差异
cgroup:是cgroup v1早期实现的传统写法,直接明确这是cgroup文件系统的挂载,Debian/Ubuntu系发行版偏爱这种表述。none:是虚拟文件系统的通用占位符,说明该挂载没有对应的物理块设备(cgroup本身是内核虚拟出来的),RHEL/CentOS系常用这种标识。
- 挂载路径与参数差异
- 用
cgroup的场景一般挂载到/sys/fs/cgroup/下,按子系统拆分独立挂载点,参数偏向基础权限控制(如nosuid、noexec)。 - 用
none的场景常挂载到/run/cgroups/,会带上发行版特有的安全参数(如CentOS的seclabel)。
- 用
二、跨发行版的最优挂载选择
优先选择以cgroup为设备名,挂载到/sys/fs/cgroup/[子系统名称]路径,理由:
- 这是cgroup v1的标准挂载路径,Debian/Ubuntu、Fedora、openSUSE等绝大多数主流发行版默认遵循这个规范。
- 即使是RHEL/CentOS系,手动按此方式挂载也能正常工作,不会出现兼容性问题。
- 如果需要兼容cgroup v2,可先检查
/sys/fs/cgroup/unified是否存在(v2默认挂载点),不存在再按v1的标准方式挂载即可。
内容的提问来源于stack exchange,提问作者JenyaKh
相关产品推荐
相关产品推荐

