我对cgroup有疑问,特别是考虑隔离。
维基百科指出,你可以使用cgroup来隔离组,这样就有了“组的独立命名空间,所以他们看不到彼此的进程,网络连接或文件”。
我已经知道,如何在组之间共享或划分内存或cpu,但是想知道,组或用户如何只能看到自己的进程(例如cgrules.conf和cgconfig.conf中的内容) )。
示例:
当指定组的用户在其控制台中输入ps(或ps -aux)时,只应列出其进程,而不是其他用户/组的进程(如ps -u中所示)。 我知道我可以做一个快速而肮脏的编程方法来完成这样的事情,但我想知道它如何与cgroup一起工作。
非常感谢您的专业知识!
答案 0 :(得分:3)
Cgroup实际上没有能力提供全面的命名空间隔离。您正在寻找的是Linux容器(LXC) - http://lxc.sourceforge.net/。 LXC使用cgroup进行资源管理,并允许您将进程容器化并将它们与主机系统隔离。 Libvirt还提供了一个LXC驱动程序,可以轻松设置容器,甚至可以在容器中运行完整的操作系统。
更多消息来源:
答案 1 :(得分:0)
虽然lxc是提供隔离的一个很好的答案,但cgroups即使在缓存级别也具有此功能(如果处理器支持它)。像Mesos这样的许多集群管理器/资源管理器都在使用这些功能。使用cgset,您可以为cgroup设置IO,CPU和内存的限制。您可以在here中找到一些文档。