7

我有一个关于 cgroups 的问题,特别是考虑到隔离。

维基百科指出,您可以使用 cgroups 来隔离组,以便“组有单独的命名空间,因此他们看不到彼此的进程、网络连接或文件”。

我已经知道,如何在组之间共享或划分内存或 cpu,但想知道,组或用户如何只能看到他们自己的进程(例如必须在 cgrules.conf 和 cgconfig.conf 中的内容)。

例子:

当指定组的用户在他的控制台中输入 ps(或 ps -aux)时,应该只列出他的进程,而不是其他用户/组的进程(如 ps -u)。我知道我可以做一个快速而肮脏的编程方法来完成这样的事情,但我想知道它如何与 cgroups 一起工作。

非常感谢您的专业知识!

4

2 回答 2

4

Cgroups 并没有能力提供完整的命名空间隔离。您正在寻找的是 Linux Containers (LXC) -- http://lxc.sourceforge.net/。LXC 使用 cgroups 进行资源管理,并允许您将进程容器化并将它们与主机系统隔离。Libvirt 还提供了一个 LXC 驱动程序,它可以轻松设置容器,甚至可以在容器中运行完整的操作系统。

更多来源:

于 2013-03-21T14:49:41.240 回答
0

虽然 lxc 是提供隔离的一个很好的答案,但 cgroups 即使在缓存级别(如果处理器支持它)也具有此功能。许多集群管理器/资源管理器(如 Mesos)都在使用这些功能。使用 cgset,您可以为 cgroup 设置 IO、CPU 和内存的限制。您可以在此处找到一些文档。

于 2017-04-05T06:26:28.590 回答