这只是一个简单的问题,我一直找不到答案:
OpenVZ 的作者们一直向 Linux 内核贡献大量代码,以便在操作系统中直接获得虚拟化功能。
其中一个例子就是 Cgroups。
无论如何,我的问题是:是否有人知道 CGroups 在容器内部是否可用,或者是否计划可用?
我尝试在 OpenVZ 容器之一上运行它,但服务无法启动。我明白原因:它很可能是一个面向硬件节点的服务 - 看看它如何管理内核中的方面。
不过,我也想在容器本身内使用它们。
我看到命名空间在容器内运行,并且认为如果 CGroups 也可以在容器内运行,这可能是一个好主意。
我之所以问这个问题,是因为也许我没有运行支持所需的最新内核版本,或者也许我忽略了一些东西。
谢谢!
答案1
您可以在 LXC 容器中使用 cgroup,因为它们是命名空间,但 OpenVZ 是一项非常古老的技术,我非常怀疑您是否能找到让它工作的方法。如果可以的话,您应该开始从 OpenVZ 转换到 LXC,因为前者迟早会被放弃。所有那些 OpenVZ 开发人员一直在构建的就是 LXC。
答案2
人们出于某些原因喜欢讨厌 OVZ,但似乎忘记了 LXC 是 OVZ 的衍生物。如果 OVZ 是如此古老的技术,那么为什么它的 DNA 会出现在全新技术中?
除了对 cgroups 进行一些操作外,我认为 OVZ 不会很快消失。它与 LXC 存在交叉融合,如果 LXC 可以替代 OVZ,那么 OVZ 就会消失。但不会很快消失,因为 OVZ 功能更强大、更成熟。此外,现在新的主线内核中也包含 OVZ 功能。所以 OVZ 肯定不会消失。
答案3
旧线程-但是,可以通过将 CentOS6 视为 debian wheezy 来找到解决方案(在 docker 上下文中,但仍然如此),此链接如下: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
}