Virtualizace na úrovni OS - OS-level virtualization
![]() | tento článek potřebuje další citace pro ověření.Listopad 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Virtualizace na úrovni OS je operační systém paradigma, ve kterém jádro umožňuje existenci více izolovaných uživatelský prostor instance. Takové instance, tzv kontejnery (LXC, Kontejnery Solaris, Přístavní dělník ), Zóny (Kontejnery Solaris ), virtuální privátní servery (OpenVZ ), oddíly, virtuální prostředí (VE), virtuální jádra (DragonFly BSD ), nebo vězení (Vězení FreeBSD nebo chroot vězení ),[1] mohou vypadat jako skutečné počítače z pohledu programů v nich spuštěných. Počítačový program spuštěný v běžném operačním systému vidí všechny zdroje (připojená zařízení, soubory a složky, sdílení v síti, Výkon procesoru, kvantifikovatelné hardwarové schopnosti) daného počítače. Programy spuštěné uvnitř kontejneru však mohou vidět pouze obsah kontejneru a zařízení přiřazená kontejneru.
Na Unixový operačních systémů lze tuto funkci považovat za pokročilou implementaci standardu chroot mechanismus, který mění zdánlivou kořenovou složku pro aktuální spuštěný proces a jeho podřízené položky. Kromě izolačních mechanismů jádro často poskytuje řízení zdrojů funkce omezující dopad činností jednoho kontejneru na jiné kontejnery.
Termín kontejner, i když nejpopulárněji odkazuje na virtualizační systémy na úrovni OS, někdy se nejednoznačně používá k označení plnějšího virtuální stroj prostředí pracující v různé míře shodnosti s hostitelským OS, např. Microsoft Hyper-V kontejnery.
Úkon
V běžných operačních systémech pro osobní počítače může počítačový program vidět (i když nemusí mít přístup) všechny prostředky systému. Obsahují:
- Možnosti hardwaru, které lze použít, například procesor a síťové připojení
- Data, která lze číst nebo zapisovat, například soubory, složky a soubory sdílení v síti
- Připojeno periferní zařízení může komunikovat s, jako je webová kamera, tiskárna, skener nebo fax
Operační systém může být schopen povolit nebo zakázat přístup k těmto zdrojům na základě toho, který program je požaduje a Uživatelský účet v kontextu kterého běží. Operační systém může tyto prostředky také skrýt, takže když je počítačový program vytvoří výčet, nezobrazí se ve výsledcích výčtu. Z programového hlediska však počítačový program interagoval s těmito prostředky a operační systém řídil akt interakce.
Pomocí virtualizace operačního systému nebo kontejnerizace je možné spouštět programy v kontejnerech, kterým jsou přiděleny pouze části těchto prostředků. Program, který očekává, že uvidí celý počítač, jakmile je spuštěn uvnitř kontejneru, může vidět pouze přidělené zdroje a věří, že jsou vše, co je k dispozici. V každém operačním systému lze vytvořit několik kontejnerů, ke kterým je přidělena podmnožina prostředků počítače. Každý kontejner může obsahovat libovolný počet počítačových programů. Tyto programy mohou běžet souběžně nebo samostatně a mohou dokonce vzájemně interagovat.
Kontejnerizace má podobnosti s virtualizace aplikací: V druhém případě je do izolovaného kontejneru umístěn pouze jeden počítačový program a izolace se vztahuje pouze na systém souborů.
Použití
Virtualizace na úrovni operačního systému se běžně používá v virtuální hosting prostředí, kde je užitečné pro bezpečné přidělování konečných hardwarových prostředků mezi velký počet uživatelů, kteří si navzájem nedůvěřují. Správci systému jej mohou také použít ke konsolidaci hardwaru serveru přesunutím služeb na samostatných hostitelích do kontejnerů na jednom serveru.
Mezi další typické scénáře patří oddělení několika programů do samostatných kontejnerů pro lepší zabezpečení, nezávislost na hardwaru a přidané funkce správy prostředků. Vylepšená bezpečnost poskytovaná použitím chroot mechanismu však není zdaleka pevná.[2] Implementace virtualizace na úrovni operačního systému schopné živá migrace lze také použít pro dynamické vyrovnávání zatížení kontejnerů mezi uzly v klastru.
Režie
Virtualizace na úrovni operačního systému obvykle vyžaduje menší režii než plná virtualizace protože programy ve virtuálních oddílech na úrovni OS používají normální operační systém systémové volání rozhraní a nemusí být vystaveny emulace nebo být spuštěn jako prostředník virtuální stroj, jako je tomu v případě plné virtualizace (např VMware ESXi, QEMU nebo Hyper-V ) a paravirtualizace (jako Xen nebo Uživatelský režim Linux ). Tato forma virtualizace také nevyžaduje hardwarovou podporu pro efektivní výkon.
Flexibilita
Virtualizace na úrovni operačního systému není tak flexibilní jako jiné virtualizační přístupy, protože nemůže hostovat hostovaný operační systém odlišný od hostitelského nebo jiné jádro hosta. Například s Linux, různé distribuce jsou v pořádku, ale jiné operační systémy jako Windows nelze hostovat. Operační systémy využívající systematiku variabilního vstupu podléhají omezením ve virtualizované architektuře. Metody adaptace, včetně analýzy přenosu cloud-server, udržují virtuální prostředí na úrovni OS v těchto aplikacích.[3]
Solaris částečně překonává výše popsané omezení značkové zóny funkce, která poskytuje možnost spustit prostředí v kontejneru, který emuluje starší Solaris 8 nebo verze 9 v hostiteli Solaris 10. Značkové zóny pro Linux (označované jako „lx“ značkové zóny) jsou také k dispozici na x86 systémy Solaris na bázi poskytující kompletní Linux uživatelský prostor a podpora pro provádění aplikací Linux; Solaris navíc poskytuje nástroje potřebné k instalaci Red Hat Enterprise Linux 3.x nebo CentOS 3.x Linuxové distribuce uvnitř zón „lx“.[4][5] V roce 2010 však byly zóny se značkou Linux ze systému Solaris odstraněny; v roce 2014 byly znovu zavedeny v Illumos, což je otevřená vidlice Solaris podporující 32bitovou verzi Linuxová jádra.[6]
Úložný prostor
Některé implementace poskytují úroveň souborů copy-on-write (CoW) mechanismy. (Nejčastěji je mezi diskovými oddíly sdílen standardní systém souborů a ty diskové oddíly, které mění soubory, automaticky vytvářejí své vlastní kopie.) Zálohování je snazší, efektivnější z hlediska prostoru a jednodušší ukládání do mezipaměti než kopírování na úrovni bloku -write schémata běžná na virtualizérech celého systému. Celosystémoví virtualizátoři však mohou pracovat s nepůvodními systémy souborů a vytvářet a vrátit zpět snímky stavu celého systému.
Implementace
Mechanismus | Operační systém | Licence | Aktivně vyvinut od nebo mezi | Funkce | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Izolace systému souborů | Kopírovat při zápisu | Diskové kvóty | Omezení rychlosti I / O | Limity paměti | Kvóty CPU | Izolace sítě | Vnořená virtualizace | Kontrolní body oddílů a živá migrace | Izolace kořenových oprávnění | ||||
chroot | Většina Jako UNIX operační systémy | Liší se podle operačního systému | 1982 | Částečný[A] | Ne | Ne | Ne | Ne | Ne | Ne | Ano | Ne | Ne |
Přístavní dělník | Linux,[8] FreeBSD,[9] Okna x64 (Pro, Enterprise a Education)[10] Operační Systém Mac [11] | Licence Apache 2.0 | 2013 | Ano | Ano | Ne přímo | Ano (od 1.10) | Ano | Ano | Ano | Ano | Pouze v experimentálním režimu s CRIU [1] | Ano (od 1.10) |
Linux-VServer (kontext zabezpečení) | Linux, Windows Server 2016 | GNU GPLv2 | 2001 | Ano | Ano | Ano | Ano[b] | Ano | Ano | Částečný[C] | ? | Ne | Částečný[d] |
lmctfy | Linux | Licence Apache 2.0 | 2013–2015 | Ano | Ano | Ano | Ano[b] | Ano | Ano | Částečný[C] | ? | Ne | Částečný[d] |
LXC | Linux | GNU GPLv2 | 2008 | Ano[13] | Ano | Částečný[E] | Částečný[F] | Ano | Ano | Ano | Ano | Ano | Ano[13] |
Jedinečnost | Linux | Licence BSD | 2015[14] | Ano[15] | Ano | Ano | Ne | Ne | Ne | Ne | Ne | Ne | Ano[16] |
OpenVZ | Linux | GNU GPLv2 | 2005 | Ano | Ano [17] | Ano | Ano[G] | Ano | Ano | Ano[h] | Částečný[i] | Ano | Ano[j] |
Virtuozzo | Linux, Okna | Zkušební verze | 2000[21] | Ano | Ano | Ano | Ano[k] | Ano | Ano | Ano[h] | Částečný[l] | Ano | Ano |
Kontejnery Solaris (Zóny) | ilumos (OpenSolaris ), Solaris | CDDL, Proprietární | 2004 | Ano | Ano (ZFS) | Ano | Částečný[m] | Ano | Ano | Ano[n][24][25] | Částečný[Ó] | Částečný[p][q] | Ano[r] |
Vězení FreeBSD | FreeBSD, DragonFly BSD | Licence BSD | 2000[27] | Ano | Ano (ZFS) | Ano[s] | Ano | Ano[28] | Ano | Ano[29] | Ano | Částečný[30][31] | Ano[32] |
vkernel | DragonFly BSD | Licence BSD | 2006[33] | Ano[34] | Ano[34] | N / A | ? | Ano[35] | Ano[35] | Ano[36] | ? | ? | Ano |
sysjail | OpenBSD, NetBSD | Licence BSD | 2006–2009 | Ano | Ne | Ne | Ne | Ne | Ne | Ano | Ne | Ne | ? |
WPAR | AIX | Komerční proprietární software | 2007 | Ano | Ne | Ano | Ano | Ano | Ano | Ano[t] | Ne | Ano[38] | ? |
Virtuální účty iCore | Windows XP | Freeware | 2008 | Ano | Ne | Ano | Ne | Ne | Ne | Ne | ? | Ne | ? |
Sandboxie | Okna | GNU GPLv3 | 2004 | Ano | Ano | Částečný | Ne | Ne | Ne | Částečný | Ne | Ne | Ano |
systemd-nspawn | Linux | GNU LGPLv2.1 + | 2010 | Ano | Ano | Ano[39][40] | Ano[39][40] | Ano[39][40] | Ano[39][40] | Ano | ? | ? | Ano |
Turbo | Okna | Freemium | 2012 | Ano | Ne | Ne | Ne | Ne | Ne | Ano | Ne | Ne | Ano |
RKT | Linux | Licence Apache 2.0 | 2014[41] | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Viz také
- Orchestrace kontejneru
- Jmenné prostory Linuxu
- skupiny
- Sandbox (vývoj softwaru)
- CoreOS
- Hypervisor
- Přenosní tvůrci aplikací
- runC
- Separační jádro
- Výpočet bez serveru
- Hypervisor úložiště
- Virtuální privátní server (VPS)
- Rozdělení virtuálních prostředků
Poznámky
- ^ Uživatel root může snadno uniknout z chrootu. Chroot nikdy neměl být používán jako bezpečnostní mechanismus.[7]
- ^ A b Využití CFQ plánovač, na každého hosta existuje samostatná fronta.
- ^ A b Síť je založena na izolaci, nikoli na virtualizaci.
- ^ A b Celkem 14 uživatelských funkcí je v kontejneru považováno za bezpečné. Zbytek nelze udělit procesům v tomto kontejneru, aniž by tento proces mohl potenciálně zasahovat do věcí mimo tento kontejner.[12]
- ^ Diskové kvóty na kontejner jsou možné při použití samostatných oddílů pro každý kontejner pomocí LVM, nebo když je podkladovým hostitelským souborovým systémem btrfs, v takovém případě se automaticky použijí dílčí svazky btrfs.
- ^ Při použití je podporováno omezení rychlosti I / O Btrfs.
- ^ K dispozici od linuxového jádra 2.6.18-028stable021. Implementace je založena na plánovači I / O disků CFQ, ale jedná se o dvouúrovňové schéma, takže prioritou I / O není proces, ale spíše kontejner.[18]
- ^ A b Každý kontejner může mít své vlastní IP adresy, pravidla brány firewall, směrovací tabulky atd. Jsou možné tři různá síťová schémata: na základě trasy, na bázi mostu a přiřazení skutečného síťového zařízení (NIC ) do kontejneru.
- ^ Kontejnery Docker mohou běžet uvnitř kontejnerů OpenVZ.[19]
- ^ Každý kontejner může mít přístup root, aniž by to ovlivnilo jiné kontejnery.[20]
- ^ K dispozici od verze 4.0, leden 2008.
- ^ Kontejnery Docker mohou běžet uvnitř kontejnerů Virtuozzo.[22]
- ^ Ano s ilumos[23]
- ^ Vidět OpenSolaris Network Virtualization and Resource Control Více podrobností.
- ^ Pouze pokud je nejvyšší úroveň zóna KVM (ilumos) nebo zóna kz (Oracle).
- ^ Od verze Solaris 11.3 Beta mohou zóny jádra Solaris používat živou migraci.
- ^ Je implementována studená migrace (shutdown-move-restart).
- ^ Neglobální zóny jsou omezeny, takže nemusí ovlivňovat jiné zóny prostřednictvím přístupu omezujícího možnosti. Globální zóna může spravovat neglobální zóny.[26]
- ^ Zaškrtněte možnost "allow.quotas" a část "Vězení a systémy souborů" na webu Stránka vězení FreeBSD pro detaily.
- ^ K dispozici od TL 02.[37]
Reference
- ^ Hogg, Scott (2014-05-26). „Softwarové kontejnery: Používají se častěji, než si většina uvědomuje“. Síťový svět. Network World, Inc.. Citováno 2015-07-09.
Existuje mnoho dalších virtualizačních systémů na úrovni OS, jako jsou: Linux OpenVZ, Linux-VServer, FreeBSD Jails, AIX Workload Partitions (WPARs), HP-UX Containers (SRP), Solaris Containers, mezi ostatními.
- ^ Korff, Yanek; Doufám, Paco; Potter, Bruce (2005). Zvládnutí zabezpečení FreeBSD a OpenBSD. O'Reilly Series. O'Reilly Media, Inc. str. 59. ISBN 0596006268.
- ^ Huang, D (2015). "Zkušenosti s používáním virtualizace na úrovni OS pro blokování I / O". Sborník příspěvků z 10. semináře o paralelním ukládání dat.
- ^ „Příručka pro správu systému: Oracle Solaris Containers-Resource Management a Oracle Solaris Zones, Kapitola 16: Úvod do zón Solaris“. Oracle Corporation. 2010. Citováno 2014-09-02.
- ^ „Průvodce správou systému: Správa kontejnerů a zdrojů Oracle Solaris a zóny Oracle Solaris, Kapitola 31: O značkových zónách a značkové zóně Linux“. Oracle Corporation. 2010. Citováno 2014-09-02.
- ^ Bryan Cantrill (2014-09-28). „Sen je naživu! Provozování linuxových kontejnerů na jádru ilumos“. slideshare.net. Citováno 2014-10-10.
- ^ „3.5. Omezení prostředí vašeho programu“. freebsd.org.
- ^ „Docker upustí LXC jako výchozí prostředí pro provádění“. InfoQ.
- ^ „Docker přichází na FreeBSD“. FreeBSDNews.com. 9. července 2015.
- ^ „Začínáme s Dockerem pro Windows“. Přístavní dělník.
- ^ „Začínáme s Docker Desktop pro Mac“. Dokumentace Dockeru. 6. prosince 2019.
- ^ "Paper - Linux-VServer". linux-vserver.org.
- ^ A b Graber, Stéphane (1. ledna 2014). „LXC 1.0: Bezpečnostní funkce [6/10]“. Citováno 12. února 2014.
LXC má nyní podporu pro uživatelské jmenné prostory. [...] LXC již nefunguje jako root, takže i kdyby se útočníkovi podařilo uniknout z kontejneru, zjistil by, že má na hostiteli oprávnění běžného uživatele
- ^ „Sylabs přináší kontejnery singularity do komerčních HPC | TOP500 superpočítačové stránky“. www.top500.org.
- ^ „Přesměrování…“. www.sylabs.io.
- ^ Kurtzer, Gregory M .; Sochat, Vanessa; Bauer, Michael W. (11. května 2017). „Singularity: Scientific papers for mobility of compute“. PLOS ONE. 12 (5): e0177459. doi:10.1371 / journal.pone.0177459. PMC 5426675. PMID 28494014 - prostřednictvím časopisů PLoS.
- ^ Bronnikov, Sergey. „Srovnání na wiki stránce OpenVZ“. OpenVZ Wiki. OpenVZ. Citováno 28. prosince 2018.
- ^ "I / O priority pro kontejnery". OpenVZ Virtuozzo Containers Wiki.
- ^ „Docker inside CT“.
- ^ "Kontejner". OpenVZ Virtuozzo Containers Wiki.
- ^ „Počáteční veřejné vydání Virtuozzo (v té době pojmenované ASPcomplete)“.
- ^ „Parallels Virtuozzo nyní poskytuje nativní podporu pro Docker“.
- ^ Pijewski, Bill. „Náš ZFS I / O plyn“.
- ^ Nejčastější dotazy k síťové virtualizaci a řízení zdrojů (kuše) Archivováno 2008-06-01 na Wayback Machine
- ^ „Správa síťové virtualizace a síťových prostředků v systému Oracle® Solaris 11.2“. docs.oracle.com.
- ^ Správa Oracle Solaris 11.1, Oracle Solaris Zones, Oracle Solaris 10 Zones and Resource Management E29024.pdf, str. 356–360. Dostupný v archivu.
- ^ „Zachovejte své nadšení - část druhá: vězení, zóny, OpenVZ a LXC“.
Vězení bylo poprvé představeno ve FreeBSD 4.0 v roce 2000
- ^ „Hierarchical_Resource_Limits - FreeBSD Wiki“. Wiki.freebsd.org. 27. 10. 2012. Citováno 2014-01-15.
- ^ „Implementace klonovatelného síťového zásobníku do jádra FreeBSD“ (PDF). usenix.org. 13. 06. 2003.
- ^ „VPS pro FreeBSD“. Citováno 2016-02-20.
- ^ „[Oznámení] VPS // OS Virtualization // alfa verze“. Citováno 2016-02-20.
- ^ „3.5. Omezení prostředí vašeho programu“. Freebsd.org. Citováno 2014-01-15.
- ^ Matthew Dillon (2006). „sys / vkernel.h“. Křížový odkaz BSD. DragonFly BSD.
- ^ A b „vkd (4) - disk virtuálního jádra“. DragonFly BSD.
zachází s obrazem disku jako s kopírováním při zápisu.
- ^ A b Sascha Wildner (01.01.2007). „vkernel, vcd, vkd, vke - architektura virtuálního jádra“. Příručka pro různé informace DragonFly. DragonFly BSD. Shrnutí ležel.
- ^ „vke (4) - Virtual Kernel Ethernet“. DragonFly BSD.
- ^ „Informace o opravné sadě IBM pro: Izolace sítě WPAR - USA“. ibm.com.
- ^ „Živá mobilita aplikací v AIX 6.1“. www.ibm.com. 3. června 2008.
- ^ A b C d "systemd-nspawn". www.freedesktop.org.
- ^ A b C d "2.3. Úpravy kontrolních skupin Red Hat Enterprise Linux 7". Zákaznický portál Red Hat.
- ^ Polvi, Alex. „CoreOS staví modul runtime kontejneru, rkt“. Blog CoreOS. Citováno 12. března 2019.
externí odkazy
- Úvod do virtualizace
- Krátký úvod ke třem různým virtualizačním technikám
- Virtualizace a kontejnerizace aplikační infrastruktury: Srovnání, 22. června 2015, autor: Mathijs Jeroen Scheepers
- Kontejnery a trvalá data, LWN.net, 28. května 2015, autor: Josh Berkus