CGroup Namespace
Grundinformationen
Ein Cgroup-Namespace ist eine Funktion des Linux-Kernels, die Isolation von Cgroup-Hierarchien für Prozesse, die innerhalb eines Namespaces ausgeführt werden, bereitstellt. Cgroups, kurz für Control Groups, sind eine Kernel-Funktion, die es ermöglicht, Prozesse in hierarchischen Gruppen zu organisieren, um Grenzen für Systemressourcen wie CPU, Speicher und I/O zu verwalten und durchzusetzen.
Während Cgroup-Namensräume kein separater Namespace-Typ wie die anderen, die wir zuvor besprochen haben (PID, Mount, Netzwerk usw.), sind, stehen sie im Zusammenhang mit dem Konzept der Namespace-Isolation. Cgroup-Namensräume virtualisieren die Sicht auf die Cgroup-Hierarchie, sodass Prozesse, die innerhalb eines Cgroup-Namensraums ausgeführt werden, eine andere Sicht auf die Hierarchie haben als Prozesse, die im Host oder in anderen Namespaces ausgeführt werden.
So funktioniert es:
Wenn ein neuer Cgroup-Namespace erstellt wird, beginnt er mit einer Sicht auf die Cgroup-Hierarchie, die auf der Cgroup des erstellenden Prozesses basiert. Das bedeutet, dass Prozesse, die im neuen Cgroup-Namespace ausgeführt werden, nur einen Teil der gesamten Cgroup-Hierarchie sehen, der auf dem Cgroup-Teilbaum basiert, der an der Cgroup des erstellenden Prozesses verwurzelt ist.
Prozesse innerhalb eines Cgroup-Namensraums werden ihre eigene Cgroup als Wurzel der Hierarchie sehen. Das bedeutet, dass aus der Perspektive der Prozesse innerhalb des Namespaces ihre eigene Cgroup als Wurzel erscheint und sie Cgroups außerhalb ihres eigenen Teilbaums nicht sehen oder darauf zugreifen können.
Cgroup-Namensräume bieten nicht direkt Isolation von Ressourcen; sie bieten nur Isolation der Sicht auf die Cgroup-Hierarchie. Die Kontrolle und Isolation von Ressourcen werden weiterhin von den Cgroup-Subsystemen (z. B. CPU, Speicher usw.) selbst durchgesetzt.
Für weitere Informationen über CGroups siehe:
CGroupsLabor:
Erstellen Sie verschiedene Namespaces
CLI
Durch das Einhängen einer neuen Instanz des /proc
Dateisystems, wenn Sie den Parameter --mount-proc
verwenden, stellen Sie sicher, dass der neue Mount-Namespace eine genaue und isolierte Sicht auf die prozessspezifischen Informationen hat, die für diesen Namespace spezifisch sind.
Docker
Überprüfen, in welchem Namespace sich Ihr Prozess befindet
Alle CGroup-Namensräume finden
Betreten Sie einen CGroup-Namespace
Auch können Sie nur in einen anderen Prozess-Namespace eintreten, wenn Sie root sind. Und Sie können nicht in einen anderen Namespace eintreten, ohne einen Deskriptor, der darauf verweist (wie /proc/self/ns/cgroup
).
Referenzen
Last updated