OpenVZ

Z Wikipedie, otevřené encyklopedie
OpenVZ
Logo
Aktuální verze7.0 (26. července 2016)
Operační systémLinux
Typ softwarusvobodný software
LicenceGNU General Public License
Webopenvz.org
Některá data mohou pocházet z datové položky.

OpenVZ (Open VirtualiZation) je v informatice označení pro virtualizační technologii pracující na úrovni linuxového jádra. OpenVZ umožňuje na jednom fyzickém serveru provozovat více samostatných instalací operačního systému, přesněji kontejnerů. U plné virtualizace se používá termín virtuální privátní servery (VPS) nebo Virtuální zdroje (VE). OpenVz je obdobnou technologií, která je jinde známá jako FreeBSD Jails a nebo Solaris Zones.

V porovnání s virtualizačními nástroji jako je VMware a Xen využívajícími hypervizor, má OpenVZ omezení v tom, že vyžaduje pro svůj běh upravené linuxové jádro sloužící jako hostitelský systém (i když distribuce Linuxu mohou být v jednotlivých kontejnerech různé). Nicméně ztráta výkonu při nasazení OpenVz na serveru je oproti samostatnému serveru 1 – 3 %.

OpenVZ je základem produktu Virtuozzo Containers. Jedná se o proprietární software vyvíjený společností Parallels, Inc. OpenVZ je dostupné pod licencí GPL verze 2 a je podporován a sponzorován společností Parallels. Firma koncovému uživateli neposkytuje v rámci OpenVz komerční podporu.

OpenVZ se skládá z jádra a uživatelských nástrojů pro management.

OpenVZ v porovnání s ostatními technologiemi pro virtualizaci[editovat | editovat zdroj]

OpenVz není pravá (někdy také označovaná termínem „tvrdá“) virtualizace. Jedná se pouze o oddělení běhu jednotlivých aplikací na úrovni operačního systému s vlastní správou systémových zdrojů podobně, jako je tomu u technologie BSD Jail. Více flexibilní jsou technologie VMware a Xen. Jejich výhoda spočívá ve virtualizaci celého fyzického serveru, která umožňuje spouštět rozdílné operační systémy na rozdíl od OpenVz, které pomocí kontejnerů klonuje hostitelský operační systém. Díky absenci hypervizoru je zde nulová režie a tím i vyšší efektivnost. Hlavní nevýhodou je nutnost fungování kontejnerů na stejném jádru systému hostitele.

Hlavní předností jsou nižší nároky na paměť RAM, jelikož OpenVz řeší sdílený přístup a využívání totožných segmentů paměti. Zároveň využívá běžný souborový systém, takže každé virtuální prostředí je jen seznam souborů, které mají být izolovány pomocí chroot. Díky těmto vlastnostem může být kontejner velice rychle klonován s vytvořením samostatného konfiguračního souboru.

Jádro[editovat | editovat zdroj]

Jádro OpenVZ není ničím jiným, než upraveným linuxovým jádrem, které podporuje virtualizaci na úrovni operačního systému. To zahrnuje izolaci jednotlivých kontejnerů, management zdrojů a body obnovení pro jednotlivé aplikace (uložení stavu aplikace v čase s možností obnovení).

Virtualizace a izolace[editovat | editovat zdroj]

Každý kontejner je samostatný subjekt a chová se do značné míry jako fyzický server. Obsahuje vlastní:

Řízení zdrojů[editovat | editovat zdroj]

Řízení zdrojů v OpenVz se skládá ze tří částí: dvouúrovňová disková kvóta, scheduler CPU a beancounters (viz níže). Tyto zdroje lze v průběhu životnosti kontejneru libovolně měnit bez nutnosti restartu nebo pozastavení.

Dvouúrovňová disková kvóta[editovat | editovat zdroj]

Každý kontejner může mít svou vlastní diskovou kvótu, měřeno bloky na disku a nebo počtem nodů (souborů). V kontejneru je možné nastavit kvóty disku pro jednotlivé uživatele nebo skupiny.

Scheduling (plánování) CPU[editovat | editovat zdroj]

Scheduler (plánovač) CPU na OpenVZ je dvoustupňový a zajišťuje rovnoměrné sdílení v rámci stejné úrovně priority zpracování. Na první úrovni se rozhoduje, který kontejner dostane přidělený čas CPU na základě cpuinits. Na druhém stupni je linuxový scheduler priority procesů, který rozhodne o procesu, který se spustí. Hodnoty lze nastavit každému kontejneru individuálně. V čase bude CPU rozděleno úměrně k těmto hodnotám. Případně je možnost nastavit maximální procentuální zatížení CPU daným kontejnerem.

Scheduling I/O[editovat | editovat zdroj]

Podobně jako u CPU i I/O operace mají svůj dvoustupňový plánovač (scheduler) s využitím Jens Axboe je CFQ I/O plánovače na druhém stupni. Každý kontejner má přidělenu I/O prioritu a plánovač přiděluje volné pásmo v závislosti na přidělené prioritě. To zabraňuje zablokování I/O kanálu jedním kontejnerem.

Soubory kontejnerů „Beancounters“[editovat | editovat zdroj]

Beancounters je soubor čítačů,limitů a záruk jednotlivých kontejnerů. K dispozici je cca 20 parametrů, které jsou určeny k ovládání všech aspektů provozu kontejneru. To má za cíl zabránit alokování všech fyzických prostředků serveru jedním kontejnerem.

Tyto prostředky tvoří hlavně paměť a různé objekty v rámci kernelu hostitelského operačního systému, jako jsou interní procesy, sdílené segmenty paměti a síťové vyrovnávací paměti. Každý zdroj naleznete zde: /proc/user_beancounters. Obsahuje pět hodnot asociovaných do: současného využití, maximální využití (po celou dobu životnosti kontejneru), bariéry, omezení a chybové stavy. Význam omezení a limitů je závislý od nastavených parametrů. Hlavní myšlenkou je oddělení jednoduchých limitů (například v podobě nedostatečného přidělovaného výkonu) a těžkých limitů v podobě přetížení s častým selháním a chybovostí. Tyto problémy kontejneru nám umožňuje odhalit právě /proc/user_beancounters.

Hodnoty „User Beancounter“
Hodnota Význam
lockedpages Paměť nesmí být uvolněna (uzamčená pomocí mlock () system call), ve stránce.
shmpages Celková velikost sdílené paměti ve stránkách(včetně IPC, sdílené anonymní mapování a tmpfs objektů) alokovaných procesy konkrétního kontejneru().
privvmpages Velikost privátní (nebo potenciálně soukromé) paměti přidělené aplikaci. Paměť, která je vždy sdílená mezi různými aplikacemi není součástí tohoto parametru.
numfile Počet souborů otevřených všemi kontejnery.
numflock Počet souborů s vytvořenými zámky všech kontejnerů.
numpty Počet pseudo-terminálů, jakým může být SSH, na obrazovce nebo xterm aplikace, atd.
numsiginfo Počet siginfo struktur (tento parametr omezuje velikost fronty signálů).
dcachesize Celková velikost inodu(dentry) zamčeného v paměti.
physpages Celková velikost paměti používané kontejnery. Jedná se pouze o aktuální evidenční údaj ukazující na vytížení RAM jednotlivými kontejnery. Paměťové stránky bývají často využívány různými kontejnery současně (mapování sdílených knihoven, aj.). To odpovídá pouze částečnému nabití stránky kontejnerem. Součet použitých paměťových stránek pro všechny kontejnery odpovídá celkovému počtu stránek ve všech kontejnerech, ale neodpovídá fyzickému využití stránek v paměti.
numiptent Celkový počet filtrovaných záznamů IP paketů.

Bod obnovení a živé migrace[editovat | editovat zdroj]

Live migrace a funkce bodu obnovy byly implementovány v polovině dubna roku 2006. To umožnilo migrování virtuálních serverů (kontejnerů) z jednoho fyzického serveru na druhý bez nutnosti vypnutí. Bod obnovy znamená zmražení aktuálního stavu disku kontejneru a jeho uložení do souboru, který se přenese na jiný fyzický server s příslušnými kontrolními součty. Poté probíhá synchronizace změn mezi přenesenou verzí a aktuální verzí. Následuje odpojení kontejneru od původního serveru a pokračování zpracování na novém serveru, přičemž zpoždění je natolik mizivé, že se dá hovořit o výpadku v řádu instrukčních cyklů procesoru.

Odlišnosti OpenVZ[editovat | editovat zdroj]

Škálovatelnost[editovat | editovat zdroj]

OpenVZ funguje na bázi jednoho systémového vlákna. Jedná se o škálovatelné linuxové jádro, které podporuje až 4096 procesorů a až 64 GB RAM. (Na 32bitových s PAE. Dnes se čím dál častěji setkáme s 64bitovým hardwarem, který je doporučovaný). Jeden kontejner lze škálovat až na celý fyzický server, popřípadě cluster.

Výkon[editovat | editovat zdroj]

Virtualizace na úrovni operačního systému, ke které se řadí i OpenVz má zanedbatelné ztráty výkonu oproti nativnímu systému.

Zvýšení efektivity prostředků[editovat | editovat zdroj]

Díky snížení režie jednotlivých fyzických serverů a omezením nevyužitých zdrojů je možné nejenom ušetřit prostředky na provoz serveru, případně nákup hardwaru, ale také zefektivnit údržbu serverů (snížením jejich počtu) díky konsolidaci (kontejnerů) až do 100 % výkonu fyzického serveru.

Hromadné řízení[editovat | editovat zdroj]

Správce počítače (root) fyzického OpenVZ serveru (hostitelského systému) má právo nahlížet na všechny běžící procesy a soubory ze všech kontejnerů v systému. To má patřičné výhody, mezi které patří např. aktualizace, které budou mít automaticky vliv na všechny kontejnery, zatímco jiné změny mohou být jednoduše spuštěny na všechny kontejnery pomocí.

Pokud to porovnáme s řízením virtualizovaného prostředí ve VmWaru nebo Xenu s cílem použít aktualizace zabezpečení do více virtuálních serverů, budeme potřebovat mnohem složitější systém, nebo bude nutné, aby se správce přihlásil na jednotlivé stanice a spustil aktualizace (za předpokladu, že nejsou nastavené na automatické spouštění). To je hlavní výhodou u OpenVz v případech, kdy takový systém nelze realizovat.

Podobné technologie[editovat | editovat zdroj]

Omezení[editovat | editovat zdroj]

Pomocí OpenVZ je možné použít některé VPN technologie na bázi PPP (např. PPTP/L2TP) a TUN/TAP. IPSec není podporován uvnitř kontejnerů. L2TP zabezpečený pomocí IPsec je také podporován. Plná virtualizace nemá toto omezení.

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]