Назад | Перейти на главную страницу

Можете ли вы использовать CGroups внутри контейнера OpenVZ?

просто быстрый вопрос, на который мне не удалось найти ответ:

Авторы OpenVZ внесли большой объем кода в ядро ​​Linux, чтобы получить функции виртуализации непосредственно внутри вашей операционной системы.

Один из примеров - Cgroups.

в любом случае, мой вопрос: кто-нибудь знает, доступны ли CGroups или планируются ли они быть доступны в самом контейнере?

Я попытался запустить это в одном из контейнеров OpenVZ, но служба не запускается. Я понимаю, почему: это, скорее всего, сервис, ориентированный на аппаратный узел - видя, как он управляет аспектами внутри ядра.

Однако я бы также хотел использовать их в самом контейнере.

Я вижу, что пространства имен работают внутри контейнеров, и подумал, может быть, было бы неплохо, если бы CGroups могли работать и внутри контейнера.

Я спрашиваю, потому что, возможно, я не использую последнюю версию ядра, необходимую для поддержки. или, может быть, я что-то не замечаю.

Спасибо!

Люди почему-то любят ненавидеть OVZ, но, похоже, забывают, что LXC является производным от OVZ. Если OVZ - такая старая технология, почему это ДНК в совершенно новой технологии?

Я не думаю, что OVZ исчезнет в ближайшее время, кроме как сделать что-нибудь с cgroups. Существует кросс-полинация с LXC, и если и когда LXC является каплей для замены OVZ, то OVZ может исчезнуть. Это произойдет не скоро, потому что OVZ намного более способный и зрелый. Также в новых основных ядрах теперь есть функции OVZ. Так что ОВЗ точно никуда не денется.

Старый поток - однако решение (в контексте докеров, но все же) можно найти, рассматривая CentOS6, как если бы это был debian wheezy по этой ссылке: https://openvz.org/Docker_inside_CT

По сути, в /etc/init.d/docker делаем:

prestart() {
# ALF   service cgconfig status > /dev/null
# ALF
# ALF    if [[ $? != 0 ]]; then
# ALF        service cgconfig start
# ALF    fi
mount -t tmpfs tmpfs /sys/fs/cgroup
mkdir /sys/fs/cgroup/freezer,devices
mount -t cgroup cgroup /sys/fs/cgroup/freezer,devices -o freezer,devices
mkdir /sys/fs/cgroup/cpu,cpuacct,cpuset
mount -t cgroup cgroup /sys/fs/cgroup/cpu,cpuacct,cpuset/ -o cpu,cpuacct,cpuset

}

Вы можете использовать контрольные группы в контейнере LXC, поскольку они имеют пространство имен, но OpenVZ - очень старая технология, и я очень сомневаюсь, что вы найдете способ заставить ее работать. Если вы можете, вам следует начать преобразование OpenVZ в LXC, так как от первого, вероятно, рано или поздно откажутся. Это LXC, над которым работали все разработчики OpenVZ.