CGroup Namespace
Basiese Inligting
'n Cgroup-namespace is 'n Linux-kernelkenmerk wat afsondering van cgroup-hierargieë vir prosesse wat binne 'n namespace loop, bied. Cgroups, afkorting vir beheergroepe, is 'n kernelkenmerk wat dit moontlik maak om prosesse in hiërargiese groepe te organiseer om grense op stelselhulpbronne soos CPU, geheue en I/O te bestuur en af te dwing.
Alhoewel cgroup-namespaces nie 'n aparte tipe namespace is soos die ander wat ons vroeër bespreek het (PID, berg, netwerk, ens.), is hulle verwant aan die konsep van namespace-afsondering. Cgroup-namespaces virtualiseer die siening van die cgroup-hierargie, sodat prosesse wat binne 'n cgroup-namespace loop, 'n ander siening van die hierargie het in vergelyking met prosesse wat in die gasheer of ander namespaces loop.
Hoe dit werk:
Wanneer 'n nuwe cgroup-namespace geskep word, begin dit met 'n siening van die cgroup-hierargie gebaseer op die cgroup van die skeppende proses. Dit beteken dat prosesse wat in die nuwe cgroup-namespace loop, slegs 'n subset van die volledige cgroup-hierargie sal sien, beperk tot die cgroup-subboom wat wortel by die skeppende proses se cgroup.
Prosesse binne 'n cgroup-namespace sal hul eie cgroup as die wortel van die hierargie sien. Dit beteken dat, vanuit die perspektief van prosesse binne die namespace, hul eie cgroup as die wortel voorkom, en hulle kan nie cgroups buite hul eie subboom sien of toegang daartoe verkry nie.
Cgroup-namespaces bied nie direkte afsondering van hulpbronne nie; hulle bied slegs afsondering van die siening van die cgroup-hierargie. **Hulpbronbeheer en afsondering word steeds afgedwing deur die cgroup-subsisteme (bv. cpu, geheue, ens.) self.
Vir meer inligting oor CGroups, kyk na:
pageCGroupsLaboratorium:
Skep verskillende Namespaces
CLI
Deur 'n nuwe instansie van die /proc
-lêersisteem te monteer as jy die parameter --mount-proc
gebruik, verseker jy dat die nuwe berg-namespace 'n akkurate en geïsoleerde siening van die prosesinligting spesifiek vir daardie namespace het.
Docker
Kyk watter namespace jou proses is
Om te bepaal in watter namespace jou proses is, kan jy die volgende opdrag gebruik:
Hierdie opdrag sal die inhoud van die cgroup
-lêer vir jou huidige proses ($$
) vertoon. Die cgroup
-lêer bevat inligting oor die groepe waaraan jou proses behoort, insluitend die namespace-inligting.
As jy die uitset van hierdie opdrag sien, sal jy 'n pad sien wat die woord "namespace" bevat. Byvoorbeeld:
In hierdie voorbeeld is die proses in die session-1.scope
-namespace.
Vind alle CGroup-ruimtes
Betree 'n CGroup-namespace
Om toegang te verkry tot 'n CGroup-namespace, kan jy die volgende stappe volg:
Identifiseer die proses ID (PID) van die teikenproses waarin jy wil binnekom.
Voer die volgende opdrag uit om die PID van die proses te bekom:
Identifiseer die CGroup-vlak waarin die proses bestaan. Jy kan dit doen deur die inhoud van die
/proc/<PID>/cgroup
-lêer te ondersoek.Voer die volgende opdrag uit om binne die CGroup-namespace van die proses in te gaan:
Hiermee sal jy binne die CGroup-namespace van die proses ingaan en toegang verkry tot die verbandhoudende hulpbronne en beperkings.
Dit is belangrik om te onthou dat jy oor voldoende bevoorregting moet beskik om hierdie stappe uit te voer.
Verder kan jy slegs toegang verkry tot 'n ander proses-namespace as jy root is. En jy kan nie toegang kry tot 'n ander namespace sonder 'n beskrywer wat daarna verwys nie (soos /proc/self/ns/cgroup
).
Verwysings
Last updated