RHEL7 使用libcgroup工具
libcgroup
软件包是是以前Red Hat Enterprise Linux(5/6)所使用的cgroup维护工具,在当前RHEL 7操作系统中已经不推荐使用,后续将从发行版中剥离。为了避免冲突,不要使用libcgroup
工具来操作默认的资源控制组(见Avaliable Controllers in Red Hat Enterprise Linux 7),因为默认资源控制组现在是systemd
的一个独立的domain。所以现在只有很少的地方使用libcgroup
工具,只在需要管理当前systemd
还不支持的控制组,例如net_prio
。
以下章节内容说明如何在不和默认系统的cgroup控制组冲突情况下使用libcgroup
。
注意:
要使用
libcgroup
工具,首先要确保libcgroup
和libcgroup-tools
软件包被安装到系统中
注意:
net_prio
控制器没有像其他控制器一样编译到内核,这是一个模块,所以在挂载前需要先加载:
挂载一个层次结构
要使用一个没有自动挂载的内核资源控制器,需要创建一个包含这个控制器的层次结构。通过编辑/etc/cgconfig.conf
配置文件添加或去除mount
段落的一个层次结构。这个方式使得控制器持久化,也就是操作系统重启依然生效。作为替代,使用mount
命令创建一个临时的挂载则只在当前会话有效。
使用cgconfig
服务
cgconfig
服务通过libcgroup-tools
软件包安装的cgconfig
服务提供了一种方法来挂载附加的资源控制组层次结构。默认,这个服务没有自动启动。当你启动cgconfig
,它会执行/etc/cgconfig.conf
配置文件中设置。这个配置就会从会话到会话重新创建并变成持久化。注意,如果你停止cgconfig
,它会umount
所有它挂载的层次结构。
libcgroup
软件包安装的默认/etc/gconfig.conf
配置文件没有包含任何配置,只是由systemd
自动挂载了系统主要的资源控制组。
在/etc/cgconfig.conf
的mount
,group
和template
三个类型。mount
部分用于作为虚拟文件系统来创建和挂载层次结构,然后添加控制器到这些层次结构。在Red Hat Enterprise Linux 7,默认的层次结构自动挂载到/sys/fs/cgroup/
目录,cgconfig
被单独用于添加非默认的控制器。
挂载对象的定义使用如下语法:
将上面的congroller_name
替换成你指定的内核资源控制器就可以。
举例:创建一个挂载点
然后重启cgconfig
服务使设置生效
使用mount
命令
mount
命令使用mount
命令可以临时挂载一个层次结构。要实现这个功能,首先创建一个挂载点/sys/fs/cgroup/
目录,用于systemd
挂载主资源控制器:
将name
替换成要挂载的目标,通常是使用的控制器的名字。然后执行挂载层次结构并同时附加一个或多个子系统:
将controller_name
替换成通过挂载目录挂载的控制器的名字,这里-t
参数是指定挂载的类型。
举例:使用
mount
命令添加控制器
要挂载net_prio
控制器的层次结构,首先创建挂载点:
然后挂载net_prio
通过lssubsys
命令可以检查挂载的所有层次结构
3.2. UNMOUNTING A HIERARCHY
Last updated