OpenVZ | |
---|---|
| |
Sorts | virtualisering |
Utvecklaren | Gemenskap som drivs av Parallels |
Operativ system | linux |
Första upplagan | 2005 |
Hårdvaruplattform | x86 , x86-64 , IA-64 , PowerPC , SPARC , ARM |
senaste versionen |
Kärna : |
Licens | GNU GPL v.2 |
Hemsida | openvz.org |
Mediafiler på Wikimedia Commons |
OpenVZ är en implementering av virtualiseringsteknik på operativsystemnivå, som är baserad på Linux-kärnan . OpenVZ låter dig köra många isolerade kopior av operativsystemet på en fysisk server, kallade "virtuella privata servrar" (Virtual Private Servers, VPS) eller "virtuella miljöer" (Virtual Environments, VE).
Eftersom OpenVZ är baserat på Linux-kärnan, till skillnad från virtuella maskiner (till exempel VMware , Parallels Desktop ) eller paravirtualiseringsteknologier (till exempel Xen ), kan bara Linux- distributioner fungera som "gäst"-system . Virtualisering på operativsystemnivå i OpenVZ ger dock bättre [5] prestanda, skalbarhet, distributionstäthet, dynamisk resurshantering och enkel administration än alternativa lösningar. Enligt OpenVZ-webbplatsen är omkostnaden för virtualisering mycket låg och prestandaträffen är bara 1-3% jämfört med konventionella Linux-system.
OpenVZ är basplattformen för Virtuozzo , en egenutvecklad produkt från Parallels, Inc. OpenVZ distribueras under villkoren i GNU GPL v.2-licensen.
OpenVZ består av en modifierad Linux-kärna och användarverktyg .
OpenVZ-kärnan är en modifierad Linux-kärna som lägger till konceptet en virtuell miljö ( VE ). Kärnan tillhandahåller virtualisering, isolering, resurshantering och checkpointing (behåller det aktuella tillståndet för VE).
För närvarande stöds flera grenar av OpenVZ-kärnor. Grenar skiljer sig åt i stabilitet och i RHEL- versionen baserades de på [6] .
Kärnversion | Stabil/Testning | RHEL-version |
---|---|---|
vzkernel-2.6.32-042stab085.17 | Stabil | 6 |
vzkernel-2.6.32-042stab084.17 | testning | 6 |
ovzkernel-2.6.18-348.16.1.el5.028stab108.1 | Stabil | 5.9 |
ovzkernel-2.6.18-371.3.1.el5.028stab110.1 | testning | 5.10 |
De viktigaste verktygen är:
Det finns också ett antal verktyg som antingen inte stöds officiellt eller "överges":
Varje VE är en separat enhet, och ur ägarens synvinkel ser den nästan ut som en normal fysisk server. Varje VE har sin egen:
Filer Systembibliotek, applikationer, virtualiserade FS /proc och /sys , virtualiserade lås, etc. Användare och grupper Dina egna användare och grupper, inklusive root . Processträd VE ser bara sina egna processer (som börjar med init ). Process - ID (PID) är också virtualiserade, så PID för init-programmet är 1. Netto En virtuell nätverksenhet (venet) som tillåter en VE att ha sina egna IP-adresser samt routing- och brandväggsregeluppsättningar (netfilter/iptables). Enheter Vid behov kan OpenVZ-serveradministratören ge VE-åtkomst till till exempel riktiga enheter. nätverkskort, portar, diskpartitioner, etc. IPC-objekt Delat minne, semaforer, meddelanden.Resurshantering i OpenVZ består av tre komponenter: en diskkvot på två nivåer, en ärlig processorschemaläggare och de så kallade "user beancounters". Dessa resurser kan ändras medan VE körs, ingen omstart krävs.
Diskkvot på två nivåerAdministratören av OpenVZ-servern kan ställa in diskkvoter på VE, vad gäller diskutrymme och antalet inoder (i-noder, vilket är ungefär lika med antalet filer). Detta är den första nivån av diskkvot.
Utöver detta kan VE-administratören (roten) använda vanliga verktyg inom sin VE för att ställa in standard UNIX -diskkvoter för användare och grupper.
Ärlig cpu-schemaläggareProcessorschemaläggaren i OpenVZ är också två-nivå. På den första nivån bestämmer schemaläggaren vilken VE som ska ge en CPU-tidsdel baserat på parametervärdet cpuunitsför VE. På den andra nivån bestämmer standard Linux-schemaläggaren vilken process i den valda VE som ska ge en tidsdel baserat på standard Linux-processprioriteter och så vidare.
OpenVZ-serveradministratören kan ställa in olika värden cpuunitsför olika VE, och CPU-tiden kommer att fördelas enligt förhållandet mellan dessa värden som tilldelats VE.
Det finns också en gränsparameter - cpulimit, som ställer in den övre gränsen för processortid i procent, tilldelad för en viss VE.
User BeancountersUser Beancounters är en uppsättning räknare, gränser och garantier per VE. Det finns en uppsättning av cirka 20 parametrar som är valda för att täcka alla aspekter av VE:s drift så att ingen VE kan missbruka någon resurs som är begränsad till hela servern och därmed störa andra VE:er.
Resurserna som räknas och kontrolleras är främst RAM och olika objekt i kärnan, såsom delade IPC-minnessegment, nätverksbuffertar, etc. Varje resurs kan ses i filen /proc/user_beancounters - det finns fem värden \u200b \u200bför det : aktuell användning, maximal användning (under VE:ns livstid), barriär, gräns och studsräknare. Innebörden av barriär och gräns beror på parametern; kort sagt, de kan ses som soft limit och hard limit. Om någon resurs försöker gå över gränsen, ökas dess avvisningsräknare - så att VE-ägaren kan se vad som händer genom att läsa filen /proc/user_beancounters i deras VE.
Checkpointing och migrering i fartenFunktionaliteten för migrering och kontrollpunkter släpptes för OpenVZ i mitten av april 2006. Den låter dig flytta VE från en fysisk server till en annan utan att behöva stoppa/starta om VE. Denna process kallas checkpointing: VE är "fryst" och dess fullständiga tillstånd sparas till en fil på disk. Vidare kan denna fil överföras till en annan maskin och där "avfrysa" (återställa) VE. Fördröjningen av denna process (tiden när VE är fruset) är ungefär några sekunder; det är viktigt att betona att detta är en försening av tjänsten, inte ett övertagande av tjänsten.
Från och med version 2.6.24 ingår pid-namnområden i kärnan (pid-namnrymder, pid är processidentifieraren), vilket resulterar i att migrering under flygning blir "säker", eftersom i detta fall 2 processer i olika VE:er kan ha samma pid.
Eftersom alla detaljer om VE-tillståndet, inklusive öppna nätverksanslutningar, bevaras, ur VE-användarens perspektiv, ser migreringsprocessen ut som en fördröjning i svaret: säg, en av databastransaktionerna tog längre tid än vanligt, och sedan fortsätter arbetet som vanligt; sålunda märker inte användaren att hans databasserver redan körs på en annan fysisk server.
Den här funktionen gör scenarier som att uppgradera servern utan att behöva starta om den på riktigt: till exempel, om din DBMS behöver mer minne eller en kraftfullare processor, köper du en ny kraftfullare server och migrerar VE från DBMS till den, och sedan öka gränserna för denna VE . Om du behöver lägga till RAM till en server migrerar du alla VE:er från den servern till en annan, stänger av servern, installerar mer minne, startar servern och migrerar tillbaka alla VE:er.
vSwapFrån och med RHEL kärna version 6 042stab04x, stöd för vSwap lades till. Arkiverad 27 juni 2013 på Wayback Machine . Inget behov av att beräkna UBC-gränser längre Arkiverad 7 juni 2017 på Wayback Machine . Det räcker att endast specificera PHYSPAGES och SWAPPAGES när man skapar ett "gästsystem".
Sidcache-isoleringFrån och med kärnan 042stab068.8 var det möjligt att begränsa diskcacheanvändningen av behållare .
På grund av det faktum att OpenVZ använder en kärna för alla VE:er är systemet lika skalbart som en vanlig Linux 2.6 kärna, dvs det stöder upp till maximalt 4096 processorer och upp till 64 GB RAM för x86- versionen (med PAE ) [7] och 64TB för x86-64 [8] . En enda virtuell miljö kan utökas till storleken på hela den fysiska servern, det vill säga att använda all tillgänglig processortid och minne.
Det är möjligt att använda OpenVZ med en enda virtuell miljö på servern. Detta tillvägagångssätt tillåter VE att fullt ut använda alla hårdvaruresurser på servern med nästan "native" prestanda och dra nytta av ytterligare fördelar: VE-oberoende från hårdvara, resurshanteringsundersystem, "live" migrering.
OpenVZ kan vara värd för hundratals virtuella miljöer på modern hårdvara . De huvudsakliga begränsande faktorerna är mängden RAM och processorns frekvens.
Det här diagrammet visar svarstiden för VE-webbservrar kontra antalet VE:er på maskinen. Mätningar gjordes på en maskin med 768 MB (¾ GB) RAM; varje VE hade den vanliga uppsättningen processer igång: init , syslogd , crond , sshd och Apache -webbservern . Apache-demonerna serverade statiska sidor, som laddades ner av http_load-verktyget, och den första svarstiden mättes. Som du kan se, med en ökning av antalet VE:er, blir svarstiden längre - detta beror på brist på RAM och starkt utbyte.
I det här scenariot är det möjligt att köra upp till 120 av dessa VE på en maskin med ¾ GB RAM. Eftersom tätheten ökar nästan linjärt när mängden RAM ökar kan man extrapolera att det på en maskin med 2 GB minne går att köra cirka 320 av dessa VE:er, förutsatt att god prestanda bibehålls.
Ägaren av den fysiska servern med OpenVZ (root) kan se alla processer och filer för alla VE. Denna funktion gör masshantering möjlig, till skillnad från andra virtualiseringstekniker (som VMware eller Xen ) där virtuella servrar är separata enheter som inte kan hanteras direkt från värdsystemet.
Dessa användningsfall gäller alla virtualiseringstekniker. Det unika med virtualiseringsteknik på OS-nivå ligger dock i det faktum att användaren inte behöver "betala" mycket för virtualisering (t.ex. prestandaförlust etc.), vilket gör de underliggande scenarierna ännu mer attraktiva.
Säkerhet Du kan använda separata VE:er för varje nätverkstjänst (t.ex. webbserver, e-postserver, DNS-server, etc.). I händelse av att en hacker hittar och använder en sårbarhet i en av applikationerna för att komma in i systemet är allt han kan bryta själva tjänsten med sårbarheten – alla andra tjänster är i separata isolerade VE:er som han inte har tillgång till. Serverkonsolidering Med OpenVZ kan lediga servrar konsolideras (sammanslagna) genom att flytta dem in i virtuella miljöer. Därmed är det möjligt att öka belastningen på servrar och minska utrymmet de tar upp genom att minska antalet maskiner. Mjukvaruutveckling och testning Linux-utvecklare och -testare behöver vanligtvis tillgång till många olika distributioner och behöver ofta installera om distributioner från början. Med OpenVZ kan de få allt på en server, utan behov av omstarter och med "native" prestanda.Andra implementeringar av virtualiseringsteknik på operativsystemnivå: Linux-VServer , FreeBSD Jails , LXC , Solaris Containers , IBM AIX6 WPAR.
Bland bristerna kan identifieras:
Begränsat urval av "gäst" OS Endast olika Linux-distributioner kan fungera som ett "gäst" -system .