просто быстрый вопрос, на который мне не удалось найти ответ:
Авторы 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.