OpenVZ
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.
Aktuální verze | 7.0 (26. července 2016) |
---|---|
Operační systém | Linux |
Typ softwaru | svobodný software |
Licence | GNU General Public License |
Web | openvz |
Některá data mohou pocházet z datové položky. |
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
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
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
Každý kontejner je samostatný subjekt a chová se do značné míry jako fyzický server. Obsahuje vlastní:
- Soubory
- Uživatelé a skupiny
- Každý kontejner má svého vlastního superuživatele (root), stejně jako ostatní uživatele a uživatelské skupiny.
- Strom procesů
- Kontejner vidí pouze své vlastní procesy (od init). Číslo procesu (PID) je virtualizováno, stejně jako init.
- Síť
- Virtualizované počítačové síťové rozhraní umožňuje každému kontejneru mít svou vlastní IP adresu, stejně tak jako možnost jejího nastavení přes iptables a směrovací tabulky.
- Zařízení
- V případě potřeby je možné kontejneru přidělit přímý přístup k zařízení, jako jsou síťové rozhraní, sériový port, diskové oddíly, atd.
- IPC objekty
- Sdílená paměť, Synchronizace, zasílání zpráv.
Řízení 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
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
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
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“
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.
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
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
Škálovatelnost
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
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ů
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í
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
Omezení
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
Externí odkazy
- Obrázky, zvuky či videa k tématu OpenVZ na Wikimedia Commons
- OpenVZ official web site
- OpenVZ Wiki
- Porovnání různých virtualizačních technik
- Interview s hlavním vývojářem jádra OpenVz
- EasyVZ: jednoduchý grafický management pro správu OpenVz (GPLed)
- FluidVM: An OpenVZ management GUI (komerční)
- webvz: Open Source kontrolní panel OpenVz ve webovém rozhraní
- Proxmox VE: Open Source virtualizační platforma OpenVZ a KVM (GPLv2 a volitelně je dostupná placená podpora)
- unxsVZ Webový cluster management pro OpenVZ s UBC (GPLv2.)
- OpenNode – RHEL/CentOS based open-source server virtualization and management solution (GPLv3 a volitelně je dostupná placená podpora)