GNU/Linux >> Znalost Linux >  >> Linux

7 nejpoužívanějších jmenných prostorů Linuxu

Chci uvést několik příkladů, které objasní technické definice týkající se jmenných prostorů . Wikipedie má následující definici:

Jmenné prostory jsou funkcí linuxového jádra, která rozděluje prostředky jádra tak, že jedna sada procesů vidí jednu sadu prostředků a druhá sada procesů jinou sadu prostředků. Tato funkce funguje tak, že má stejný jmenný prostor pro skupinu zdrojů a procesů, ale tyto jmenné prostory odkazují na odlišné zdroje.

Tato definice je pro některé lidi docela srozumitelná, takže možná pomůže tato analogie. Představte si můj bytový dům. Technicky jde o dvě odlišné budovy s vlastními vchody. Parkovací garáž, posilovna, bazén a společenské místnosti jsou však společné. Budovy mají svá vlastní jména, City Place a Město 2 . Mají své vlastní adresy, patra a výtahy. Přesto jsou připojeni ke stejnému fyzickému komplexu.

Fyzický komplex je stejná myšlenka jako počítač. Dva jmenné prostory (nebo více) mohou být umístěny na stejném fyzickém počítači a podobně jako v bytovém domě mohou jmenné prostory sdílet přístup k určitým zdrojům nebo mít výhradní přístup.

V dnešní době se široce používá sedm běžných typů jmenných prostorů. Použijeme-li byt jako našeho průvodce, pojďme si projít souhrn toho, co jednotlivé typy dělají. Níže je uveden stručný přehled každého typu jmenného prostoru. V následujících článcích si ukážeme, jak jednotlivé jmenné prostory fungují na příkladu.

Izolace procesů (jmenný prostor PID)

PID nebo ID procesu pomáhá systému sledovat konkrétní úlohu v počítači. Když spustíte Firefox na vašem počítači, bude mít přiřazený PID. Aby bylo zajištěno, že počítač správně spolupracuje s úlohou, odkazuje na úlohu PID. Předpokládejme, že máte současně otevřený Firefox a Brave Browser. V každém prohlížeči spustíte svůj preferovaný vyhledávač, jako je DuckDuckGo, a vyhledáte obrázky koček v jednom a obrázky psů v tom druhém. Oba prohlížeče odesílají podobný požadavek na stejný web. Jak počítač zajistí, že se správné výsledky vyhledávání vrátí do správného prohlížeče? Jedním z hlavních způsobů je sledování požadavků, které každý PID vznese, a následné vrácení výsledků procesu žádosti.

"Skvělé, ztratil jsem se," říkáte. Co to má společného s bytovými domy a jmennými prostory? Řekněme, že chcete spouštět identické kopie určitého softwaru. Některý software nebyl napsán tak, aby měl otevřenou více než jednu kopii najednou. Abyste toho dosáhli, možná budete muset izolovat PID, aby si nebyl vědom toho, co se děje mimo jeho vlastní procesy. To je to, co může izolace procesů pomoci vyřešit.

Jinak řečeno, vrátíme-li se zpět k našemu bytovému domu, jednotlivé byty v komplexu jsou podobné jmennému prostoru PID. Každá domácnost v bytovém komplexu si chce zapnout televizi a sledovat různorodý obsah. V hloupém paralelním vesmíru si představte, že když jeden člověk v činžovním domě zapnul svou televizi, nikdo jiný by nemohl sledovat televizi, protože jinak by poskytovatel kabelové televize nevěděl, která televize by měla sledovat „The Office“ a která „The Office“. Učeň." Jmenné prostory by kabelové společnosti umožnily izolovat každou domácnost a poskytovat odlišné programy pro každého obyvatele, protože již nezáleží na tom, co si ostatní lidé ve vašem komplexu prohlížejí.

[ Další informace o jmenných prostorech PID. ]

Síťová rozhraní (síťový jmenný prostor)

Každý počítač, který je připojen k síti (jako je internet), vyžaduje IP adresu. Toto je jedinečné číslo, které umožňuje počítačům efektivně komunikovat. Když se přistupuje ke konkrétnímu typu zdroje, řekněme k webové stránce, je pro tuto komunikaci použit konkrétní port. Je to proto, že počítač může hostit webový server, herní server a možná i e-mailový server na stejném hostiteli. Porty mohou být 80 nebo 443 pro webový provoz, 8888 pro herní provoz a 25 pro e-mail. Když do prohlížeče napíšu https:// , počítač to přeloží tak, aby odesílal provoz na adresu IP xxx.xxx.xxx.xxx prohlížeče na portu 443 . Server na druhém konci pak odpoví příslušným obsahem prostřednictvím zdrojové IP adresy. Některé technologické zásobníky, jak bylo zmíněno výše, nepodporují více instancí softwaru spuštěného současně. Na rozdíl od izolace PID však když software, jako je e-mailový server, přijímá připojení, očekává se, že bude na konkrétním portu. Takže i kdybyste PID izolovali, e-mailový server by měl spuštěnou pouze jednu instanci, protože port 25 se již používá. Síťové jmenné prostory umožňují procesům uvnitř každé instance jmenného prostoru mít přístup k nové IP adrese spolu s celou řadou portů. Můžete tedy provozovat více verzí e-mailového serveru naslouchajícího na portu 25 bez jakýchkoli softwarových konfliktů.

V mém scénáři budovy jsou budovy připojeny ke stejnému fyzickému komplexu a jsou navzájem zrcadlovými obrazy. To znamená, že v každé budově je stejný počet obytných prostor. Navíc se řídí stejným schématem číslování bytů. To znamená, že každá budova má například jednotku 707. V tomto příkladu je IP adresa jako adresa ulice bytových domů a číslo bytu je port. Každý bytový komplex je součástí stejné fyzické budovy, ale mají různé adresy. Protože budovy nejsou fyzicky oddělené, bez tohoto síťového jmenného prostoru společnost zasílající účet Steve Ovens, 123 Fake Street Unit 707 nemusí nikdy dostat odpověď, protože byla odeslána na špatnou adresu. Pravděpodobnější je, že se pošta jednoduše nepokusí doručit dopis kvůli nejednoznačnosti adresy. Síťové jmenné prostory nám však umožňují mít 123 Fake Street a Falešná ulice 125 ve stejné fyzické budově.

[ Další informace o síťových jmenných prostorech. ]

Unixový systém sdílení času (jmenný prostor uts)

Tento jmenný prostor je bohužel pojmenován podle dnešních standardů. Pochází z počátků Unixu a souvisí s tím, jak byly informace ukládány pro konkrétní systémové volání. Dnes je tento detail do značné míry ztracen v historii a to, co opravdu potřebujete vědět, je, že jmenný prostor UTS umožňuje segregaci názvů hostitelů. Názvy hostitelů jsou často pouhou pohodlností. Jak již bylo zmíněno dříve, s některými výjimkami se většina komunikace do az hostitele provádí prostřednictvím IP adresy a čísla portu. Nám lidem však velmi usnadňuje život, když máme k procesu připojeno nějaké jméno. Prohledávání souborů protokolu je například mnohem jednodušší při identifikaci názvu hostitele. V neposlední řadě proto, že v dynamickém prostředí se IP adresy mohou měnit.

V naší analogii budovy je název hostitele podobný názvu bytového domu. Říkám taxikáři, že bydlím v City Place byty je obvykle efektivnější než uvedení skutečné adresy. Mít více názvů hostitelů na jednom fyzickém hostiteli je velkou pomocí ve velkých kontejnerových prostředích.

[ Další informace o jmenných prostorech uts. ]

Uživatelský jmenný prostor

Každý počítačový systém má nějaký způsob, jak sledovat, který uživatel vlastní které soubory. To umožňuje systému omezit přístup k citlivým systémovým souborům. Zabraňuje také lidem používajícím stejný počítač ve vzájemném přístupu k souborům ostatních. Koncovému uživateli je ukázáno, že soubory jsou vlastněny přihlašovacím jménem, ​​jako je stratus . Pro počítač je to však pouze libovolná kombinace alfanumerických znaků. Aby bylo možné tato oprávnění správně sledovat, existuje proces mapování stratu uživatele na konkrétní identifikační číslo uživatele (UID), jako je 1001. Toto UID se pak použije na metadata souboru. To vám umožní změnit své uživatelské jméno na stratus1 aniž by systém musel provádět významnou aktualizaci metadat. Mapovací soubor se aktualizuje tak, aby bylo UID 1001 spojeno s stratus1 místo stratus . Záznam je změněn na jediném (nebo malém počtu) míst.

Berte to jako obdobu poštovních schránek v patře mého činžovního domu. Každá poštovní schránka má název nebo je s ní spojeno více jmen. Když mi někdo chce doručit poštu, vloží poštu například do schránky 707. Pokud se rozhodnu změnit si jméno, nebo přidat do schránky jméno manželky, nic se nemění. Pošta stále chodí na stejné místo, tyto soubory mohou prohlížet pouze oprávněné osoby a můj klíč k odemknutí schránky zůstává nezměněn.

[ Další informace o uživatelských jmenných prostorech. ]

Připojit (jmenný prostor mnt)

Jmenný prostor připojení se používá k izolaci přípojných bodů, takže procesy v různých jmenných prostorech nemohou vzájemně prohlížet soubory ostatních. Pokud znáte příkaz chroot, funguje podobně.

V našem přirovnání se trochu odkloním od bytu. Předpokládejme, že se dva lidé vezmou. V tomto scénáři existuje spousta věcí, které obvykle skončí sdílené. Pravděpodobně jste uvedli jejich jméno na seznam adres, můžete mít obě jména na účtech, mít obě jména na jakémkoli vlastnictví auta a přidat je na své kreditní karty atd. V tomto smyslu sdílíte stejný přípojný bod s jiná osoba. Jejich kredit však může být oddělený, mohou platit vlastní daně a tak dále. Jejich číslo sociálního pojištění (číslo sociálního pojištění pro naše přátele v USA) zůstává odlišné od vašeho a naopak. I když tedy váš partner může vidět podobný pohled na finanční situaci, nebude to úplně stejné. Nemají žádnou skutečnou schopnost vidět jakékoli finanční záležitosti, které jsou legálně ve vašem výhradním vlastnictví.

Totéž platí pro přípojné body souborového systému. Ve výchozím nastavení nemohou různé jmenné prostory připojení zobrazit obsah toho druhého. Pokud jde o jmenný prostor, je v kořenovém adresáři souborového systému a nic jiného neexistuje. Můžete však připojit části základního souborového systému do jmenného prostoru připojení, čímž mu umožníte zobrazit další informace.

[ Další informace o jmenných prostorech mnt. ]

Meziprocesová komunikace (IPC)

Tento jmenný prostor je vysoce technický a složitý na pochopení a popis. Natolik, že Marty Kalin má na Opensource.com sérii článků popisujících meziprocesovou komunikaci (IPC). Pokud vás to opravdu zajímá, odkážu vás na Martyho sérii, protože jsem nemohl toto téma spravedlivě posoudit. IPC řeší komunikaci mezi procesy pomocí oblastí sdílené paměti, front zpráv a semaforů. Pokud vám to všechno zní cizí, nebojte se, nejste sami. Nejběžnější aplikací pro tento typ správy je možná použití databází.

Pokud si přiblížíme jeden aspekt IPC, sdílenou paměť, můžeme získat základní pochopení důležitosti. Při programování, kdykoli aplikace potřebuje dočasně sledovat nějaké informace, požaduje, aby operační systém věnoval určité množství paměti RAM (random access memory) svému procesu. Můžete si to představit podobně, jako když s někým začnete konverzovat v chatovacím programu. Ve výchozím nastavení jsou pouze dva příjemci, vy a osoba na druhém konci, nebo jiný způsob, operační systém a aplikace. Oba účastníci vidí celou historii konverzace, ale nikdo jiný. Pokud je však do chatu pozván někdo nový, může také číst a zapojit se do diskuse. Sdílená paměť může fungovat podobně a umožňuje dvěma nebo více programům mít přístup ke stejným informacím. Změna jednoho programu bude okamžitě viditelná pro druhý program.

Cgroups

Pro podrobný pohled na cgroups doporučuji přečíst si moji sérii na redhat.com. V této čtyřdílné sérii se podrobně zabývám tím, jak cgroups fungují a jak je můžete uvést do praxe. Stručně řečeno, cgroups jsou mechanismem pro řízení systémových zdrojů. Když je cgroup aktivní, může řídit množství CPU, RAM, blokové I/O a některé další aspekty, které může proces spotřebovat. Ve výchozím nastavení jsou cgroups vytvořeny ve virtuálním souborovém systému /sys/fs/cgroup . Vytvoření jiného jmenného prostoru cgroup v podstatě přesune kořenový adresář cgroup. Pokud by cgroup byla například /sys/fs/cgroup/mycgroup , nový jmenný prostor cgroup by to mohl použít jako kořenový adresář. Hostitel může vidět /sys/fs/cgroup/mycgroup/{group1,group2,group3} ale vytvoření nového jmenného prostoru cgroup by znamenalo, že nový jmenný prostor by viděl pouze {group1,group2,group3} .

Možná se divíte, proč je to potřeba. Část toho souvisí s bezpečností. Pokud nebyl vytvořen nový jmenný prostor cgroup, existuje možnost úniku informací. Manová stránka to říká nejlépe:

Zabraňuje úniku informací, kdy by cesty k adresářům cgroup mimo kontejner byly jinak viditelné pro procesy v kontejneru. Takové úniky by mohly například kontejnerizovaným aplikacím odhalit informace o kontejnerovém rámci.

V tradiční hierarchii cgroup existuje možnost, že by vnořená cgroup mohla získat přístup ke svému předkovi. To znamená, že proces v /sys/fs/cgroup/mycgroup/group1 má potenciál číst a/nebo manipulovat s čímkoli vnořeným pod mycgroup .

A konečně, když uvažujeme konkrétně o kontejnerech, jmenné prostory cgroup umožňují kontejnerům být agnostické vůči předchůdcům cgroups. To je důležité pro něco jako OpenShift, který může migrovat kontejnery mezi hostiteli. Bez izolace poskytované jmennými prostory by bylo nutné při migraci kontejneru replikovat úplné názvy cest cgroup na novém hostiteli. Protože cesta musí být jedinečná, jmenné prostory cgroup pomáhají vyhnout se konfliktům na novém hostitelském systému.

Pokud jde o analogii budovy, cgroup je podobná utilitám v každé jednotce. Zatímco cgroups mohou omezit využití zdrojů, mohou také fungovat jako účetní. Takže i když mi můj byt nebrání v používání určitého množství energie nebo vody, rozhodně sleduje (a účtuje) moji spotřebu. Toto využití je jen malou částí využití budovy jako celku. Neznám celkové využití budovy (předek mého bytu), ani nemohu vědět, kolik využívá můj soused. Jsou ve zcela jiném jmenném prostoru cgroup.

[ Získejte tuto bezplatnou e-knihu:Správa clusterů Kubernetes pro figuríny. ]

Koneckonců

Zde tedy máte stručný přehled o sedmi nejpoužívanějších jmenných prostorech. Doufám, že moje analogie byla užitečná a jasná. V několika následujících článcích prozkoumám některé z těchto jmenných prostorů a jak jsou ručně vytvářeny. To vám umožní lépe porozumět užitečnosti jmenných prostorů. V závěrečném článku to vše spojuji dohromady, včetně použití skupin cgroups k vysvětlení, jak kontejnery fungují „pod kapotou“.


Linux
  1. Zvládněte příkaz Linux ls

  2. Linuxové jmenné prostory

  3. Linux:Jak najít ovladač zařízení používaný pro zařízení?

  1. Který příkaz terminálu Linuxu používáte nejčastěji?

  2. Jaký byl nejdůležitější okamžik v historii Linuxu?

  3. 25 Nejčastěji používané příklady pravidel Linux IPTables

  1. Linux – Jak vypsat jmenné prostory v Linuxu?

  2. 80 nejpoužívanějších základních linuxových aplikací roku 2021

  3. Jak vyřešit nejběžnější internetové problémy v Linuxu