cgroups是什么?
cgroups(control groups,控制组),是linux内核的一个重要功能。它可以将进程划分成若干个组,按组限制进程的资源使用情况,限制的资源包括cpu,内存,io等。
cgroups版本
cgroups v2自Linux内核4.5版本加入支持,但并未作为默认使用,系统默认仍然使用cgroups v1版本;RHEL/Alma Linux 8默认内核4.18支持cgoups v2,但默认仍然为v1版本;RHEL/Alma Linux 9默认内核5.14支持cgroups v2,并且默认为v2版本。
Linux各发行版将cgroups v2作为默认的情况如下:
- Container-Optimized OS(从 M97 开始)
- Ubuntu(从 21.10 开始,推荐 22.04+)
- Debian GNU/Linux(从 Debian 11 Bullseye 开始)
- Fedora(从 31 开始)
- Arch Linux(从 2021 年 4 月开始)
- RHEL 和类似 RHEL 的发行版(从 9 开始)
查看Linux内核、cgroups版本及默认版本
RHEL/CentOS 7 内核3.10
# uname -a
Linux chefserver 3.10.0-693.11.6.el7.x86_64 #1 SMP Thu Jan 4 01:06:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
RHEL/CentOS 7 内核3.10仅支持cgroups v1,默认那必然是cgroups v1。
# grep cgroup /proc/filesystems
nodev cgroup
# stat -fc %T /sys/fs/cgroup/
tmpfs # tmpfs,说明默认为 cgroups v1
RHEL/Alma Linux 8 内核4.18
[root@pxe ~]# uname -a
Linux pxe 4.18.0-372.9.1.el8.x86_64 #1 SMP Tue May 10 08:57:35 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux
RHEL/Alma Linux 8 内核4.18支持cgroups v1 v2,默认为cgroups v1。
[root@pxe ~]# grep cgroup /proc/filesystems
nodev cgroup
nodev cgroup2
[root@pxe ~]# mount|grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
[root@pxe ~]# stat -fc %T /sys/fs/cgroup/
tmpfs # tmpfs,说明默认为 cgroups v1
RHEL/Alma Linux 9 内核5.14
# stat -fc %T /sys/fs/cgroup/
cgroup2fs # cgroup2fs,说明默认为 cgroups v2
在默认开启cgroups v1的系统上启用v2
查看当前cgourps v1
[root@pxe ~]# mount|grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
在grub2启动中添加打开cgroup的unified属性的参数: --args=systemd.unified_cgroup_hierarchy=1
[root@pxe ~]# grubby --update-kernel=ALL --args=systemd.unified_cgroup_hierarchy=1
重启系统
[root@pxe ~]# reboot
查看cgroups版本
[root@pxe ~]# mount|grep cgroup
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
[root@pxe ~]# stat -fc %T /sys/fs/cgroup/
cgroups文件系统挂载说明
Linux 挂载文件系统格式
fs_spec on fs_file type fs_vfstype (fs_mntopts)
fs_spec:挂载的块设备或远程文件系统
fs_file:文件系统的挂载点
fs_vfstype:文件系统的类型
fs_mntopts:与文件系统相关的更多选项,不同的文件系统其选项也不太一样
[root@pxe ~]# mount |grep cgroup
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup2:挂载的文件系统为 cgroup2
/sys/fs/cgroup:挂载点为目录/sys/fs/cgroup
type cgroup2:文件系统的类型为 cgroup2
(rw,nosuid,nodev,noexec,relatime,nsdelegate):挂载文件系统参数,比如读写rw
[root@pxe ~]# mount |grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
tmpfs:挂载的文件系统为 tmpfs
/sys/fs/cgroup:挂载点为目录/sys/fs/cgroup
type tmpfs:文件系统的类型为 tmpfs
(ro,nosuid,nodev,noexec,mode=755):挂载文件系统参数,比如只读ro
参考URL
https://www.oomspot.com//post/kubernetesjiagouguanyucgroupv2
未完待续。。。
网友评论