linux cgroup 无法彻底卸载问题一例

用mount -t cgroup -o cpu,memory my_virt_res /cgroup/my_cpu_and_mem 挂载cgroup文件系统后, 使用

cgcreate -g cpu:/my_cpu 创建控制组到/cgroup/my_cpu_and_mem/my_cpu下,

然后一个误操作将/cgroups/my_cpu_and_mem 上的文件系统卸载掉了: umount /cgroup/my_cpu_and_mem

此时,/proc/mounts 已经看不到cgroup文件系统了, 但/proc/cgroups里还有subsys位于层级中, lssubsys -i 也能看到:

cat /proc/cgroups
#subsys_name hierarchy num_cgroups enabled
cpuset 0 1 1
ns 0 1 1
cpu 30 2 1
cpuacct 0 1 1
memory 30 2 1
devices 0 1 1
freezer 0 1 1
net_cls 0 1 1
blkio 0 1 1
perf_event 0 1 1
net_prio 0 1 1

试图挂载仅包含cpu或memory的cgroup都失败,报错device busy

解决方法:将cpu,memory作为整体重新挂载cgroup文件系统,最后执行cgclear即可彻底卸载cgroup.

mount -t cgroup -o cpu,memory my_virt_res /cgroup/my_cpu_and_mem 

# cat /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=99188k,nr_inodes=24797,mode=755 0 0
......
my_virt_res /cgroup/my_cpu_and_mem cgroup rw,relatime,memory,cpu 0 0

 

# cat /proc/cgroups
#subsys_name hierarchy num_cgroups enabled
cpuset 0 1 1
ns 0 1 1
cpu 47 1 1
cpuacct 0 1 1
memory 47 1 1
devices 0 1 1
freezer 0 1 1
net_cls 0 1 1
blkio 0 1 1
perf_event 0 1 1
net_prio 0 1 1

# cgclear

# cat /proc/cgroups

#subsys_name hierarchy num_cgroups enabled
cpuset 0 1 1
ns 0 1 1
cpu 0 1 1
cpuacct 0 1 1
memory 0 1 1
devices 0 1 1
freezer 0 1 1
net_cls 0 1 1
blkio 0 1 1
perf_event 0 1 1
net_prio 0 1 1

恢复正常。

posted @ 2018-02-27 17:49  zcan  阅读(1597)  评论(0编辑  收藏  举报