OpenVZ | |
---|---|
| |
Type | virtualisering |
Udvikler | Fællesskab drevet af Parallels |
Operativ system | linux |
Første udgave | 2005 |
Hardware platform | x86 , x86-64 , IA-64 , PowerPC , SPARC , ARM |
nyeste version |
Kernel : |
Licens | GNU GPL v.2 |
Internet side | openvz.org |
Mediefiler på Wikimedia Commons |
OpenVZ er en implementering af virtualiseringsteknologi på styresystemniveau, som er baseret på Linux-kernen . OpenVZ giver dig mulighed for at køre mange isolerede kopier af operativsystemet på én fysisk server, kaldet "virtuelle private servere" (Virtual Private Servers, VPS) eller "virtuelle miljøer" (Virtual Environments, VE).
Da OpenVZ er baseret på Linux-kernen, i modsætning til virtuelle maskiner (for eksempel VMware , Parallels Desktop ) eller paravirtualiseringsteknologier (for eksempel Xen ), kan kun Linux - distributioner fungere som "gæstesystemer" . Virtualisering på operativsystemniveau i OpenVZ giver dog bedre [5] ydeevne, skalerbarhed, implementeringstæthed, dynamisk ressourcestyring og nem administration end alternative løsninger. Ifølge OpenVZ-webstedet er overheaden ved virtualisering meget lav, og ydeevnehittet er kun 1-3% sammenlignet med konventionelle Linux-systemer.
OpenVZ er basisplatformen for Virtuozzo , et proprietært produkt fra Parallels, Inc. OpenVZ distribueres under betingelserne i GNU GPL v.2-licensen.
OpenVZ består af en modificeret Linux-kerne og brugerværktøjer .
OpenVZ-kernen er en modificeret Linux-kerne, der tilføjer konceptet et virtuelt miljø ( VE ). Kernen giver virtualisering, isolering, ressourcestyring og checkpointing (vedligeholder den aktuelle tilstand af VE).
I øjeblikket understøttes flere grene af OpenVZ-kerner. Grene adskiller sig i stabilitet og i RHEL- versionen var de baseret på [6] .
Kernel version | Stabil/Test | RHEL version |
---|---|---|
vzkernel-2.6.32-042stab085.17 | Stabil | 6 |
vzkernel-2.6.32-042stab084.17 | afprøvning | 6 |
ovzkernel-2.6.18-348.16.1.el5.028stab108.1 | Stabil | 5.9 |
ovzkernel-2.6.18-371.3.1.el5.028stab110.1 | afprøvning | 5.10 |
De vigtigste hjælpeprogrammer er:
Der er også en række hjælpeprogrammer, der enten ikke er officielt understøttet eller "opgivet":
Hver VE er en separat enhed, og fra ejeren af VE'ens synspunkt ligner den næsten en normal fysisk server. Hver VE har sin egen:
Filer Systembiblioteker, applikationer, virtualiseret FS /proc og /sys , virtualiserede låse osv. Brugere og grupper Dine egne brugere og grupper, inklusive root . Procestræ VE ser kun sine egne processer (startende med init ). Proces ID'er (PID'er) er også virtualiserede, så PID'et for init-programmet er 1. Net En virtuel netværksenhed (venet), der tillader en VE at have sine egne IP-adresser samt routing og firewall-regelsæt (netfilter/iptables). Enheder Om nødvendigt kan OpenVZ-serveradministratoren give VE-adgang til f.eks. rigtige enheder. netværksadaptere, porte, diskpartitioner osv. IPC objekter Delt hukommelse, semaforer, beskeder.Ressourcestyring i OpenVZ består af tre komponenter: en diskkvote på to niveauer, en ærlig processorplanlægger og de såkaldte "brugerbeancounters". Disse ressourcer kan ændres, mens VE kører, ingen genstart er påkrævet.
Diskkvote på to niveauerAdministratoren af OpenVZ-serveren kan indstille diskkvoter på VE'en, hvad angår diskplads og antallet af inoder (i-noder, som er nogenlunde lig med antallet af filer). Dette er det første niveau af diskkvote.
Ud over dette kan VE-administratoren (roden) bruge almindelige hjælpeprogrammer i sin VE til at indstille standard UNIX -diskkvoter for brugere og grupper.
Ærlig cpu-planlæggerProcessorplanlæggeren i OpenVZ er også to-niveau. På det første niveau beslutter skemalæggeren, hvilken VE der skal give en CPU-tidsdel baseret på parameterværdien cpuunitsfor VE. På det andet niveau bestemmer standard Linux-planlæggeren, hvilken proces i den valgte VE, der skal give et tidsudsnit baseret på standard Linux-procesprioriteter og så videre.
OpenVZ-serveradministratoren kan indstille forskellige værdier cpuunitsfor forskellige VE'er, og CPU-tiden vil blive fordelt i henhold til forholdet mellem disse værdier, der er tildelt VE'en.
Der er også en grænseparameter - cpulimit, som indstiller den øvre grænse for processortid i procent, tildelt for en bestemt VE.
Bruger BeancountersBrugerbønnetællere er et sæt tællere, grænser og garantier pr. VE. Der er et sæt på omkring 20 parametre, der er valgt til at dække alle aspekter af VE's drift, så ingen VE kan misbruge nogen ressource, der er begrænset til hele serveren og dermed forstyrre andre VE'er.
De ressourcer, der tælles og kontrolleres, er hovedsageligt RAM og forskellige objekter i kernen, såsom delte IPC-hukommelsessegmenter, netværksbuffere osv. Hver ressource kan ses i filen /proc/user_beancounters - der er fem værdier \u200b \u200btil det : aktuelt forbrug, maksimalt forbrug (i løbet af VE'ens levetid), barriere, grænse og afvisningstæller. Betydningen af barriere og grænse afhænger af parameteren; kort sagt kan de opfattes som soft limit og hard limit. Hvis en ressource forsøger at gå over grænsen, øges dens afvisningstæller - så VE-ejeren kan se, hvad der foregår ved at læse filen /proc/user_beancounters i deres VE.
Checkpointing og migration i fartenOn-the-fly-migrerings- og kontrolfunktionaliteten blev frigivet til OpenVZ i midten af april 2006. Den giver dig mulighed for at flytte VE fra én fysisk server til en anden uden at skulle stoppe/genstarte VE. Denne proces kaldes checkpointing: VE er "frosset", og dens komplette tilstand gemmes i en fil på disken. Yderligere kan denne fil overføres til en anden maskine og der "unfreeze" (gendan) VE. Forsinkelsen af denne proces (det tidspunkt, hvor VE er frosset) er cirka et par sekunder; det er vigtigt at understrege, at dette er en forsinkelse i service, ikke et lammelsesangreb.
Fra og med version 2.6.24 er pid-navnerum inkluderet i kernen (pid-navneområder, pid er procesidentifikatoren), hvilket resulterer i, at on-the-fly migrering bliver "sikker", da i dette tilfælde 2 processer i forskellige VE'er kan have samme pid.
Fordi alle detaljer om VE-tilstanden, inklusive åbne netværksforbindelser, er bevaret, fra VE-brugerens perspektiv, ligner migreringsprocessen en forsinkelse i svaret: f.eks. tog en af databasetransaktionerne længere end normalt, og så fortsætter arbejdet. som sædvanligt; brugeren bemærker således ikke, at hans databaseserver allerede kører på en anden fysisk server.
Denne funktion gør scenarier som f.eks. opgradering af serveren uden behov for at genstarte den rigtige: Hvis din DBMS for eksempel har brug for mere hukommelse eller en mere kraftfuld processor, køber du en ny, mere kraftfuld server og migrerer VE fra DBMS til den, og derefter øge grænserne for denne VE. Hvis du har brug for at tilføje RAM til en server, migrerer du alle VE'er fra den server til en anden, lukker serveren ned, installerer mere hukommelse, starter serveren og migrerer alle VE'er tilbage.
vSwapStartende med RHEL-kerneversioner 6 042stab04x blev understøttelse af vSwap tilføjet. Arkiveret 27. juni 2013 på Wayback Machine . Ingen grund til at beregne UBC-grænser længere Arkiveret 7. juni 2017 på Wayback Machine . Det er nok kun at angive PHYSPAGES og SWAPPAGES, når du opretter et "gæstesystem".
Sidecache-isoleringFra kerne 042stab068.8 var det muligt at begrænse diskcachebrug af containere .
På grund af det faktum, at OpenVZ bruger én kerne til alle VE'er, er systemet lige så skalerbart som en almindelig Linux 2.6-kerne, dvs. det understøtter op til maksimalt 4096 processorer og op til 64 GB RAM til x86- versionen (ved brug af PAE ) [7] og 64TB til x86-64 [8] . Et enkelt virtuelt miljø kan udvides til størrelsen af hele den fysiske server, det vil sige at bruge al tilgængelig processortid og hukommelse.
Det er muligt at bruge OpenVZ med et enkelt virtuelt miljø på serveren. Denne tilgang giver VE mulighed for fuldt ud at bruge alle serverens hardwareressourcer med næsten "native" ydeevne og nyde yderligere fordele: VE-uafhængighed af hardware, ressourcestyringsundersystem, "live" migration.
OpenVZ er i stand til at hoste hundredvis af virtuelle miljøer på moderne hardware . De vigtigste begrænsende faktorer er mængden af RAM og frekvensen af processoren.
Denne graf viser responstiden for VE-webservere i forhold til antallet af VE'er på maskinen. Målinger blev taget på en maskine med 768 MB (¾ GB) RAM; hver VE havde det sædvanlige sæt processer kørende: init , syslogd , crond , sshd og Apache -webserveren . Apache-dæmonerne serverede statiske sider, som blev downloadet af hjælpeprogrammet http_load, og den første responstid blev målt. Som du kan se, med en stigning i antallet af VE'er, bliver responstiden længere - dette skyldes mangel på RAM og stærk swapping.
I dette scenarie er det muligt at køre op til 120 af disse VE'er på en maskine med ¾ GB RAM. Da tætheden stiger næsten lineært i takt med at mængden af RAM stiger, kan det ekstrapoleres, at det på en maskine med 2 GB hukommelse er muligt at køre omkring 320 af disse VE'er, forudsat at god ydeevne bevares.
Ejeren af den fysiske server med OpenVZ (root) kan se alle processer og filer for alle VE'er. Denne funktion gør massestyring mulig, i modsætning til andre virtualiseringsteknologier (såsom VMware eller Xen ), hvor virtuelle servere er separate enheder, der ikke kan administreres direkte fra værtssystemet.
Disse use cases gælder for alle virtualiseringsteknologier. Det unikke ved virtualiseringsteknologi på OS-niveau ligger dog i, at brugeren ikke skal "betale" meget for virtualisering (f.eks. tab af ydeevne osv.), hvilket gør de bagvedliggende scenarier endnu mere attraktive.
Sikkerhed Du kan bruge separate VE'er for hver netværkstjeneste (f.eks. webserver, mailserver, DNS-server osv.). I tilfælde af at en hacker finder og bruger en sårbarhed i en af applikationerne til at komme ind i systemet, er det eneste, han kan bryde, selve tjenesten med sårbarheden - alle andre tjenester er i separate isolerede VE'er, som han ikke har adgang til. Serverkonsolidering Ved at bruge OpenVZ kan inaktive servere konsolideres (fusioneres) ved at flytte dem ind i virtuelle miljøer. Det er således muligt at øge belastningen på servere og reducere den plads, de optager, ved at reducere antallet af maskiner. Softwareudvikling og test Linux-udviklere og -testere har typisk brug for adgang til mange forskellige distributioner og skal ofte geninstallere distributioner fra bunden. Ved hjælp af OpenVZ kan de få det hele på én server, uden behov for genstart og med "native" ydeevne.Andre implementeringer af virtualiseringsteknologi på styresystemniveau: Linux-VServer , FreeBSD Jails , LXC , Solaris Containers , IBM AIX6 WPARs.
Blandt manglerne kan identificeres:
Begrænset valg af "gæste" OS Kun forskellige Linux-distributioner kan fungere som et "gæstesystem " .Emulerings- og virtualiseringssoftware ( sammenligning ) _ _ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Anvendelseslag |
| ||||||||||||||
OS -niveau (containere) |
| ||||||||||||||
Hardware niveau |
| ||||||||||||||
Netværksvirtualisering |
|