我有一个Debian挤压内核(linux-image-2.6.32-5-openvz-amd64),根据Doku应该支持cgroups。 当我查看内核configuration时,它确实(或者需要其他一些内核configuration?)
# zgrep -i cgroup /boot/config-2.6.32-5-openvz-amd64 # CONFIG_CGROUP_SCHED is not set CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set CONFIG_CGROUP_DEVICE=y CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set CONFIG_NET_CLS_CGROUP=y
而且,根据http://wiki.debian.org/LXC ,内核参数cgroup_enable = memory可能是必要的。 我用它开始了内核:
# cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-openvz-amd64 root=UUID=6332fe39-7eaa-4519-b6c1-e05808284586 ro cgroup_enable=memory quiet console=ttyS0,57600n8
但是,系统仍然没有cgroup的支持! cgroup文件系统无法挂载,因为文件系统types甚至不知道系统:
# mount -t cgroup none /cgroup mount: unknown filesystem type 'cgroup'
和:
# grep -i cgroup /proc/filesystems #
所以有一个错误或者我错过了一些东西。 谁能告诉我什么? 是否有内核参数丢失? 内核configuration?
你必须传递一个-o来告诉它要挂载什么。
mount -t cgroup -o memory cgroup_memory /sys/fs/cgroup/memory
假设/ sys / fs / cgroup被挂载。
mount -t tmpfs cgroup /sys/fs/cgroup
Ubuntu有一个名为cgroup-lite的软件包,可以在启动时完成所有这些。 它似乎不在Debian中,所以我不确定相当于什么。
注:我不能添加评论,所以我不得不简单地回答你的问题。 例如:我想问你是否检查了内核日志( dmesg | grep cgroup )。
你应该像这样安装[1] :
$ mount -t cgroup -o <cgroup_subsystem> name /cgroup/name
cgroup_subsystem可以是[2] :{blkio,cpu,cpuacct,cpuset,devices,freeze,memory,net_cls,net_prio,ns}
您也可以在fstab(关于文件系统的静态信息)的帮助下挂载cgroup。 将此行添加到/ etc / fstab以使用默认cgroup子系统在系统引导时进行挂载。
$ cgroup /sys/fs/cgroup cgroup defaults 0 0
这取决于你的发行版和内核版本。 您可以使用Docker的以下脚本来testingcgroups和容器相关的function:
wget https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh -O cgroups_check && chmod +x cgroups_check ./cgroups_check