配置cgroup时启动挂在有问题,求解答
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置cgroup时启动挂在有问题,求解答相关的知识,希望对你有一定的参考价值。
这个界面应该是你配置了自动挂在,而且最后写入了1或者是2,而盘掉了,你开机的时候检测不通过就出现这个界面,可以按照这个界面进急救模式,将/etc/fstab文件里面对应挂载错误的盘的哪一行的最后是否启动时检测都改为0.就可以正常启动。 参考技术A cgroup配置1、Cgroup安装
安装Cgroups需要libcap-devel和libcgroup两个相关的包
yum install gcc libcap-devel
2、Cgroup挂载配置
Cgroup对应服务名称为cgconfig,cgconfig默认采用“多挂载点”挂载。经过实际测试,发现在CentOS环境中应采用“单挂载点”进行挂载,因此应当卸载原有cgroup文件系统,并禁用cgconfig。
cgclear或者sudo service cgconfig stop # 停止cgconfig,卸载cgroup目录
sudo chkconfig cgconfig off # 禁用cgconfig服务,避免其开机启动
然后采用“单挂载点”方式重新挂载cgroup。
可以直接手动挂载,这样仅当次挂载成功。
mount -t cgroup none /cgroup
然后编辑/etc/fstab/,输入下列内容。这样每次开机后都会自动挂载。
none /cgroup cgroup defaults 0 0
3、常用的Cgroup相关命令和配置文件
service cgconfig status|start|stop|restart #查看已存在子系统
lssubsys –am #查看已存在子系统
cgclear # 清除所有挂载点内部文件,相当于service cgconfig stop
cgconfigparser -l /etc/cgconfig.conf #重新挂载
Cgroup默认挂载点(CentOS):/cgroup
cgconfig配置文件:/etc/cgconfig.conf
CGroup系列二CGroup管理模式
写在前面
我们可以通过静态、动态的方式来配置cgroup以达到管控系统资源的目的。静态的方式就是在系统启动时通过系统服务挂载cgroup并加载cgroup配置策略。动态的方式就是根据系统运行时场景实时调整cgroup配置策略。
一、CGroup管理模式
CGroup是分层管理的,类似进程。子层级会继承父层级cgroup的属性。
Linux系统中的所有进程都是通用父进程init的子进程,该进程在引导时由内核执行并启动其他进程。所有进程都归结到一个父进程,所以Linux进程管理模式都是一个单一层级结构,或树结构。另外,init之外的每个Linux进程都会集成其父进程的环境和某些属性。
那么CGroup与Linux的进程管理模式由相似之处,主要体现在以下两点:
- CGroup同样分级
- 子CGroup会继承父CGroup的某些属性
不同之处在于cgroup不是单一树模式,可能是多个树并行的。这里可能不太好理解。如前面所述,CGroup支持多达十几个子系统,那么如果所有的子系统都合并挂载到一个层级上,我们可以直接用Linux系统中init进程管理模式来理解没问题的。但是大多数情况下,可能会有多个层级存在。最极端的情况下, 一个子系统就独立附加到一个层级上去。
以Ubuntu 18.04为例,如下图:
如上图,有多达13个层级,cpu子系统和cpuacct子系统合并挂载到了”cpu,cpuacct”层级中。每个层级都是一个独立的树结构。如果不理解没关系,读完本系列自然一目了然。
二、CGroup默认层级
默认情况下,systemd会自动创建slice,scope和service单位的层级,来为cgroup树提供统一结构。systemd也会自动为/sys/fs/cgroup/目录中重要的kernel子系统挂载层级。
系统中运行的所有进程,都是systemd init进程的子进程。这些进程类型大体上份为3类进程,分别是service、scope和slice。
2.1 service
一个或一组进程,由systemd根据unit配置文件启动。根据需求service对指定进程进行封装,可以作为一个整体来启动或者停止。命名方式如下:
name.service
2.2 scope
一组外部创建的进程,通过fork()函数启动,停止,之后被systemd在运行时注册的进程。这些进程会被标记为scope。如用户会话、容器和虚拟机等。
name.scope
2.3 slice
指按层级排列的类型。slice并不包含进程,但会创建一个层级,并将scope和service都放在其中。真正的进程包含在scope和service中。
parent-name.slice
parent-name-name2.
slice
如name.service属于parent-child.slice,会被映射到cgroup parent.slice/parent-child.lsice/name.service中。
系统默认会创建4种slice:
-
-.slice —— 根 slice;
-
system.slice —— 包含所有系统 service;
-
user.slice —— 包含所有用户会话;
-
machine.slice —— 包含所有虚拟机和 Linux 容器。
......
以上是关于配置cgroup时启动挂在有问题,求解答的主要内容,如果未能解决你的问题,请参考以下文章
mysql开记二进制日志即配置my.cnf中的log_bin参数后无法正常启动,求高手解答!