Linux 4.4.123内核部署PALLOC缓存分区时cgroup创建失败求助
解决Ubuntu 16.04部署PALLOC时的cgroup挂载失败问题
我来帮你搞定这个在Linux 4.4.123内核(Ubuntu 16.04)上部署PALLOC时遇到的cgroup挂载问题——这个场景我之前处理过好几次,咱们一步步来排查修复:
1. 先搞清楚当前cgroup的挂载状态
首先执行这条命令,看看系统里cgroup已经怎么挂载了:
mount | grep cgroup
Ubuntu 16.04默认是用systemd来管理cgroup的,它会把不同的cgroup控制器(比如cpuset、memory)分别挂载到/sys/fs/cgroup下的子目录里,这就是为什么你直接按PALLOC官方文档的命令执行会提示“already mounted”或者“busy”——默认的cgroup hierarchy已经被systemd占用了。
2. 为PALLOC创建独立的cgroup挂载点
别去动默认的cgroup挂载(强制卸载可能搞崩系统服务),咱们给PALLOC单独建一个挂载路径:
- 先创建目录:
sudo mkdir -p /sys/fs/cgroup/palloc - 然后挂载一个包含PALLOC需要的控制器的cgroup hierarchy到这个路径:
这里的sudo mount -t cgroup -o cpuset,memory,pids palloc /sys/fs/cgroup/palloccpuset,memory,pids是PALLOC通常需要的控制器,你可以根据官方文档调整需要的参数。
3. 处理非systemd的进程占用(如果有的话)
如果执行上面的命令还是提示busy,那可能有其他用户进程在占用cgroup资源:
- 找出占用的进程:
sudo lsof | grep /sys/fs/cgroup - 仔细看输出里的PID,绝对不要终止systemd、init这类核心进程,只处理你自己启动的、非系统必需的进程。终止进程用:
如果进程不响应,再用sudo kill -TERM <PID>kill -KILL <PID>,但一定要确认进程可以安全终止。
4. 调整PALLOC的配置适配新挂载点
因为咱们用了自定义的cgroup路径,需要告诉PALLOC使用这个路径:
- 如果是运行PALLOC的脚本,在命令里加上
--cgroup-root /sys/fs/cgroup/palloc这类参数(具体参数看PALLOC的文档); - 如果需要编译PALLOC,你可以修改源码里默认的cgroup根路径,然后重新编译安装。
5. 验证挂载是否成功
挂载完成后,执行这条命令查看:
ls /sys/fs/cgroup/palloc
如果能看到cpuset、memory等相关目录,说明挂载成功了,接下来就可以按照PALLOC的文档创建需要的cgroup了。
内容的提问来源于stack exchange,提问作者Janne Suuronen
相关产品推荐
相关产品推荐

