OpenVZ | |
---|---|
| |
Typ | virtualizace |
Vývojář | Komunita poháněná Parallels |
Operační systém | linux |
První vydání | 2005 |
Hardwarová platforma | x86 , x86-64 , IA-64 , PowerPC , SPARC , ARM |
Nejnovější verze |
Jádro : |
Licence | GNU GPL v.2 |
webová stránka | openvz.org |
Mediální soubory na Wikimedia Commons |
OpenVZ je implementace virtualizační technologie na úrovni operačního systému, která je založena na linuxovém jádře . OpenVZ umožňuje provozovat mnoho izolovaných kopií operačního systému na jednom fyzickém serveru, nazývaném „virtuální privátní servery“ (Virtual Private Servers, VPS) nebo „virtuální prostředí“ (Virtual Environments, VE).
Vzhledem k tomu, že OpenVZ je založeno na linuxovém jádře, na rozdíl od virtuálních strojů (například VMware , Parallels Desktop ) nebo paravirtualizačních technologií (například Xen ), mohou jako "hostující" systémy fungovat pouze distribuce Linuxu . Virtualizace na úrovni operačního systému v OpenVZ však poskytuje lepší [5] výkon, škálovatelnost, hustotu nasazení, dynamickou správu zdrojů a snadnou správu než alternativní řešení. Podle webu OpenVZ je režie virtualizace velmi nízká a zásah do výkonu je pouze 1-3 % ve srovnání s běžnými linuxovými systémy.
OpenVZ je základní platforma pro Virtuozzo , proprietární produkt společnosti Parallels, Inc. OpenVZ je distribuován za podmínek licence GNU GPL v.2.
OpenVZ se skládá z upraveného linuxového jádra a uživatelských utilit .
Jádro OpenVZ je upravené linuxové jádro, které přidává koncept virtuálního prostředí ( VE ). Jádro poskytuje virtualizaci, izolaci, správu prostředků a kontrolní body (udržování aktuálního stavu VE).
V současné době je podporováno několik větví OpenVZ jader. Větve se liší stabilitou a ve verzi RHEL vycházely z [6] .
Verze jádra | Stabilní/Testování | Verze RHEL |
---|---|---|
vzkernel-2.6.32-042stab085.17 | Stabilní | 6 |
vzkernel-2.6.32-042stab084.17 | testování | 6 |
ovzkernel-2.6.18-348.16.1.el5.028stab108.1 | Stabilní | 5.9 |
ovzkernel-2.6.18-371.3.1.el5.028stab110.1 | testování | 5.10 |
Hlavní nástroje jsou:
Existuje také řada nástrojů, které buď nejsou oficiálně podporovány, nebo jsou „opuštěny“:
Každý VE je samostatná entita a z pohledu vlastníka VE vypadá téměř jako běžný fyzický server. Každý VE má své vlastní:
Soubory Systémové knihovny, aplikace, virtualizované FS /proc a /sys , virtualizované zámky atd. Uživatelé a skupiny Vaši vlastní uživatelé a skupiny, včetně root . Procesní strom VE vidí pouze své vlastní procesy (počínaje init ). ID procesů (PID) jsou také virtualizovány, takže PID programu init je 1. Síť Virtuální síťové zařízení (venet), které umožňuje VE mít vlastní IP adresy a také sady pravidel směrování a brány firewall (netfilter/iptables). Zařízení V případě potřeby může správce serveru OpenVZ poskytnout VE přístup například ke skutečným zařízením. síťové adaptéry, porty, diskové oddíly atd. IPC objekty Sdílená paměť, semafory, zprávy.Správa zdrojů v OpenVZ se skládá ze tří složek: dvouúrovňové diskové kvóty, poctivého plánovače procesoru a takzvaných „uživatelských beancounterů“. Tyto prostředky lze měnit za běhu VE, není vyžadován žádný restart.
Dvouúrovňová disková kvótaAdministrátor OpenVZ serveru může nastavit diskové kvóty na VE, pokud jde o diskový prostor a počet inodů (i-uzlů, což je zhruba stejný počet souborů). Toto je první úroveň diskové kvóty.
Kromě toho může správce VE (root) používat běžné nástroje v rámci svého VE k nastavení standardních unixových diskových kvót pro uživatele a skupiny.
Poctivý plánovač CPUPlánovač procesoru v OpenVZ je také dvouúrovňový. Na první úrovni se plánovač rozhodne, kterému VE přidělí CPU časový úsek na základě hodnoty parametru cpuunitspro VE. Na druhé úrovni standardní plánovač Linuxu rozhodne, kterému procesu ve vybraném VE přidělí časový úsek na základě standardních priorit procesu Linuxu a tak dále.
Správce serveru OpenVZ může nastavit různé hodnoty cpuunitspro různé VE a čas CPU bude rozdělen podle poměru těchto hodnot přiřazených k VE.
K dispozici je také parametr limit - cpulimit, který nastavuje horní hranici času procesoru v procentech, přiděleného pro konkrétní VE.
Uživatel BeancountersUser Beancounters je sada počítadel, limitů a záruk na VE. Existuje sada asi 20 parametrů, které jsou zvoleny tak, aby pokryly všechny aspekty provozu VE, takže žádný VE nemůže zneužít jakýkoli zdroj, který je omezen na celý server, a tím zasahovat do jiných VE.
Zdroje, které se počítají a kontrolují, jsou hlavně RAM a různé objekty v jádře, jako jsou sdílené segmenty paměti IPC, síťové vyrovnávací paměti atd. Každý zdroj lze zobrazit v souboru /proc/user_beancounters - existuje pět hodnot \u200b \u200bpro něj : aktuální využití, maximální využití (po celou dobu životnosti VE), bariéra, limit a počítadlo odrazů. Význam bariéry a limitu závisí na parametru; ve zkratce je lze považovat za měkký limit a tvrdý limit. Pokud se nějaký zdroj pokusí překročit limit, jeho počítadlo nedoručení se zvýší - takže vlastník VE může vidět, co se děje, přečtením souboru /proc/user_beancounters ve svém VE.
Kontrolní body a migrace za běhuFunkce on-the-fly migrace a kontrolních bodů byla pro OpenVZ vydána v polovině dubna 2006. Umožňuje vám přesunout VE z jednoho fyzického serveru na druhý, aniž byste museli zastavovat/restartovat VE. Tento proces se nazývá checkpointing: VE je „zmrazeno“ a jeho kompletní stav je uložen do souboru na disku. Dále lze tento soubor přenést na jiný stroj a tam „rozmrazit“ (obnovit) VE. Zpoždění tohoto procesu (doba, kdy je VE zmrazeno) je přibližně několik sekund; je důležité zdůraznit, že se jedná o zpoždění služby, nikoli o odmítnutí služby.
Počínaje verzí 2.6.24 jsou v jádře zahrnuty jmenné prostory pid (jmenné prostory pid, pid je identifikátor procesu), v důsledku čehož se průběžná migrace stává „bezpečnou“, protože v tomto případě jsou 2 procesy v různých VE může mít stejné pid.
Protože všechny podrobnosti o stavu VE, včetně otevřených síťových připojení, jsou zachovány, z pohledu uživatele VE vypadá proces migrace jako zpoždění v reakci: řekněme, jedna z databázových transakcí trvala déle než obvykle a pak práce pokračuje. jako obvykle; uživatel si tedy nevšimne, že jeho databázový server již běží na jiném fyzickém serveru.
Díky této funkci jsou scénáře, jako je upgrade serveru bez nutnosti jeho restartu, reálné: pokud například vaše DBMS potřebuje více paměti nebo výkonnější procesor, koupíte si nový výkonnější server a migrujete na něj VE z DBMS a poté zvýšit limity na tomto VE . Pokud potřebujete přidat RAM na server, migrujete všechna VE z tohoto serveru na jiný, vypnete server, nainstalujete více paměti, spustíte server a migrujete všechna VE zpět.
vSwapPočínaje verzí jádra RHEL 6 042stab04x byla přidána podpora pro vSwap Archivováno 27. června 2013 na Wayback Machine . Již není třeba počítat limity UBC Archivováno 7. června 2017 na Wayback Machine . Stačí při vytváření "hostovacího systému" uvést pouze PHYSPAGES a SWAPPAGES.
Izolace mezipaměti stránekPočínaje jádrem 042stab068.8 bylo možné omezit využití diskové mezipaměti kontejnery .
Vzhledem k tomu, že OpenVZ používá jedno jádro pro všechny VE, je systém stejně škálovatelný jako běžné jádro Linuxu 2.6, tedy podporuje až 4096 procesorů a až 64 GB RAM pro x86 verzi (pomocí PAE ) [7] a 64TB pro x86-64 [8] . Jediné virtuální prostředí lze rozšířit na velikost celého fyzického serveru, tedy využít veškerý dostupný čas procesoru a paměť.
OpenVZ je možné používat s jediným virtuálním prostředím na serveru. Tento přístup umožňuje VE plně využívat všechny hardwarové prostředky serveru s téměř „nativním“ výkonem a využívat další výhody: nezávislost VE na hardwaru, subsystém správy zdrojů, „živá“ migrace.
OpenVZ je schopen hostovat stovky virtuálních prostředí na moderním hardwaru . Hlavními limitujícími faktory jsou velikost paměti RAM a frekvence procesoru.
Tento graf ukazuje dobu odezvy webových serverů VE versus počet VE na počítači. Měření byla provedena na počítači se 768 MB (¾ GB) RAM; na každém VE běžela obvyklá sada procesů: init , syslogd , crond , sshd a webový server Apache . Démoni Apache obsluhovali statické stránky, které byly staženy obslužným programem http_load, a byla měřena první doba odezvy. Jak vidíte, s nárůstem počtu VE se doba odezvy prodlužuje - je to způsobeno nedostatkem RAM a silným swapováním.
V tomto scénáři je možné spustit až 120 těchto VE na počítači se ¾ GB RAM. Vzhledem k tomu, že hustota roste se zvyšujícím se množstvím RAM téměř lineárně, lze extrapolovat, že na stroji s 2 GB paměti je možné provozovat asi 320 těchto VE za předpokladu zachování dobrého výkonu.
Vlastník fyzického serveru s OpenVZ (root) vidí všechny procesy a soubory všech VE. Tato funkce umožňuje hromadnou správu, na rozdíl od jiných virtualizačních technologií (jako je VMware nebo Xen ), kde jsou virtuální servery samostatné entity, které nelze přímo spravovat z hostitelského systému.
Tyto případy použití se vztahují na všechny virtualizační technologie. Jedinečnost virtualizační technologie na úrovni OS však spočívá v tom, že uživatel nemusí za virtualizaci příliš „platit“ (např. ztráta výkonu atd.), což činí základní scénáře ještě atraktivnějšími.
Bezpečnost Pro každou síťovou službu (např. webový server, poštovní server, DNS server atd.) můžete použít samostatné VE. V případě, že hacker najde a použije zranitelnost v jedné z aplikací, aby se dostal do systému, může prolomit pouze samotnou službu se zranitelností – všechny ostatní služby jsou v samostatných izolovaných VE, ke kterým nemá přístup. Konsolidace serverů Pomocí OpenVZ lze nečinné servery konsolidovat (sloučit) jejich přesunem do virtuálních prostředí. Je tedy možné zvýšit zatížení serverů a snížit prostor, který zabírají, snížením počtu strojů. Vývoj a testování softwaru Vývojáři a testeři Linuxu obvykle potřebují přístup k mnoha různým distribucím a často potřebují distribuce od začátku přeinstalovat. Pomocí OpenVZ mohou získat vše na jednom serveru, bez nutnosti restartu as "nativním" výkonem.Další implementace virtualizační technologie na úrovni operačního systému: Linux-VServer , FreeBSD Jails , LXC , Solaris Containers , IBM AIX6 WPAR.
Mezi nedostatky lze identifikovat:
Omezený výběr "hostujícího" OS Jako "hostující" systém mohou fungovat pouze různé distribuce Linuxu .