У меня есть сжатое ядро Debian (linux-image-2.6.32-5-openvz-amd64), которое, согласно Doku, должно поддерживать контрольные группы. Когда я смотрю на конфигурацию ядра, она есть (или требуется какая-то другая конфигурация ядра?)
# 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 не может быть смонтирована, так как тип файловой системы даже не известен системе:
# mount -t cgroup none /cgroup
mount: unknown filesystem type 'cgroup'
и:
# grep -i cgroup /proc/filesystems
#
Так что либо ошибка, либо я что-то упускаю. Кто-нибудь может мне сказать что? Отсутствует ли параметр ядра? Конфигурация ядра?
Вы должны передать -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).
Это зависит от вашего дистрибутива и версии ядра. Вы можете использовать следующий скрипт из Docker для тестирования cgroups
и функции, связанные с контейнером:
wget https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh -O cgroups_check && chmod +x cgroups_check
./cgroups_check
Ты должен так садиться[1]:
$ mount -t cgroup -o <cgroup_subsystem> name /cgroup/name
cgroup_subsystem может быть[2]: {blkio, cpu, cpuacct, cpuset, devices, freezer, memory, net_cls, net_prio, ns}
Вы также можете монтировать контрольные группы с помощью fstab (статическая информация о файловых системах). Добавьте эту строку в / etc / fstab, чтобы смонтировать ее при загрузке системы с подсистемами cgroup по умолчанию.
$ cgroup /sys/fs/cgroup cgroup defaults 0 0