CGroup Namespace
Podstawowe informacje
Przestrzeń nazw CGroup to funkcja jądra Linux, która zapewnia izolację hierarchii cgroup dla procesów działających w przestrzeni nazw. Cgroups, skrót od grup kontrolnych, to funkcja jądra, która umożliwia organizowanie procesów w hierarchiczne grupy w celu zarządzania i narzucania ograniczeń na zasoby systemowe, takie jak CPU, pamięć i I/O.
Podczas gdy przestrzenie nazw CGroup nie są oddzielnym typem przestrzeni nazw, jak te, o których wcześniej rozmawialiśmy (PID, montowanie, sieć, itp.), są one związane z koncepcją izolacji przestrzeni nazw. Przestrzenie nazw CGroup wirtualizują widok hierarchii cgroup, dzięki czemu procesy działające w przestrzeni nazw CGroup mają inny widok hierarchii w porównaniu do procesów działających w hostingu lub innych przestrzeniach nazw.
Jak to działa:
Po utworzeniu nowej przestrzeni nazw CGroup, rozpoczyna się ona od widoku hierarchii cgroup opartego na cgroup procesu tworzącego. Oznacza to, że procesy działające w nowej przestrzeni nazw CGroup zobaczą tylko podzbiór całej hierarchii cgroup, ograniczony do poddrzewa cgroup zakorzenionego w cgroup procesu tworzącego.
Procesy w przestrzeni nazw CGroup zobaczą swoją własną cgroup jako korzeń hierarchii. Oznacza to, że z perspektywy procesów wewnątrz przestrzeni nazw, ich własna cgroup wydaje się być korzeniem, i nie mogą zobaczyć ani uzyskać dostępu do cgroup spoza swojego poddrzewa.
Przestrzenie nazw CGroup nie zapewniają bezpośredniej izolacji zasobów; zapewniają tylko izolację widoku hierarchii cgroup. Kontrola i izolacja zasobów są wciąż egzekwowane przez podsystemy cgroup (np. cpu, pamięć, itp.) samodzielnie.
Aby uzyskać więcej informacji na temat CGroups, sprawdź:
pageCGroupsLaboratorium:
Utwórz różne przestrzenie nazw
CLI
Montując nową instancję systemu plików /proc
przy użyciu parametru --mount-proc
, zapewniasz, że nowa przestrzeń montowania ma dokładny i izolowany widok informacji o procesach specyficznych dla tej przestrzeni.
Docker
Sprawdź, w jakim przestrzeni nazw znajduje się Twój proces
Aby sprawdzić, w jakiej przestrzeni nazw znajduje się Twój proces, wykonaj poniższą komendę:
Wynik pokaże informacje o przestrzeniach nazw, w których działa Twój proces.
Znajdź wszystkie przestrzenie nazw CGroup
```bash nsenter -C TARGET_PID --pid /bin/bash ``` Ponadto, możesz **wejść do innego przestrzeni nazw procesu tylko jeśli jesteś rootem**. I **nie możesz** **wejść** do innej przestrzeni nazw bez deskryptora wskazującego na nią (np. `/proc/self/ns/cgroup`).
Referencje
Last updated