cgroup 是一种命名空间吗?

cgroup 是一种命名空间吗?

cgroup 是一种命名空间吗?

我问这个问题是因为我看到一些博客谈论 cgroup 和命名空间是不同的。然而,在不同的linux命令中,cgroup被认为是一种命名空间。例如,

% unshare --help | grep cgroup
 -C, --cgroup[=<file>]     unshare cgroup namespace
% lsns --help | grep cgroup
 -t, --type <name>      namespace type (mnt, net, ipc, user, pid, uts, cgroup)

这里到底发生了什么?

答案1

许多不同的命名空间类型,Cgroup 就是其中之一:

  • C组
  • 工控机
  • 网络
  • PID
  • 时间
  • 用户
  • UTS(主机名和 NIS 域名)

但是 cgroup 和cgroup命名空间受到不同的操纵; cgroup 命名空间虚拟化 cgroup 层次结构。大多数时候您只直接使用 cgroup,而不关心 cgroup 命名空间。

答案2

我发现斯蒂芬·基特的回答是准确的。但是,如果您仍然无法理解,也许以下看待问题的方式可能会有所帮助。

选择一个具有您熟悉的功能的命名空间。也许是网络(net)。并问这个问题:“网络和网络命名空间是同一件事吗?”。不,它们不是同一件事,但两者之间存在关系。在 Linux 中,网络可以表示接口、IP 地址、路由表、过滤规则(例如 iptables/nft)等内容。然后,您的系统上可以有许多网络命名空间,在每个网络命名空间内,您都有自己的一组接口、IP 地址、路由表、过滤规则。命名空间为特定的 Linux 功能(在我的示例中为网络)创建了一些虚拟环境。

cgroup 也是如此。在Linux 中,cgroup 意味着一种限制和跟踪资源(例如CPU 和内存)的方法。然后,您的系统上可以有许多 cgroup 命名空间,在每个组命名空间内,您都有自己的一组限制和资源跟踪。

相关内容