OpenVZ

OpenVZ

Informasjon
Utviklet av Parallels, Kir Kolyshkin, Andrey Savochkin
Første versjon 2005
Siste versjon 7,0 (26. juli 2016)
Innskudd src.openvz.org/scm/ovz/openvz-docs.git
Operativsystem Linux
Miljø Linux
Type Virtualisering
Tillatelse GNU GPL
Nettsted OpenVZ.org

OpenVZ er et operativsystem nivå virtualisering teknikk basert på Linux -kjernen . Denne virtualiseringsteknikken på operativsystemnivå blir ofte referert til som containerisering, og forekomster blir referert til som container. OpenVZ tillater en fysisk server å kjøre flere forekomster av isolerte operativsystemer, referert til som Virtual Private Servers (VPS) eller Virtual Environments (VE) .

OpenVZ gir mindre fleksibilitet i valg av operativsystem enn virtuelle maskiner som VMware , Qemu og paravirtualiseringsteknikker som Xen  : Gjest- og vertsoperativsystemer må begge være basert på Linux-kjernen. Det er imidlertid mulig å bruke forskjellige Linux-distribusjoner i forskjellige virtuelle miljøer. Virtualisering på operativsystemnivå valgt av OpenVZ, derimot, gir bedre ytelse, bedre skalerbarhet på grunn av et mindre minnefotavtrykk, bedre tetthet, bedre dynamisk ressursadministrasjon og større administrasjonsenhet enn alternativene . I følge OpenVZ-nettstedet vil denne metoden for virtualisering innføre en veldig liten straff, i størrelsesorden 1 til 3%, på ytelse sammenlignet med en fysisk datamaskin.

OpenVZ er grunnlaget for Virtuozzo  (en) , et proprietært produkt levert av SWsoft, Inc. OpenVZ er utgitt under GNU General Public License versjon 2.

OpenVZ inkluderer Linux-kjernen og et sett med kommandoer for brukeren.

Kjerne

Den OpenVZ kjernen er en modifisert Linux-kjerne som legger tanken om virtuelle miljøet. Kjernen gir funksjoner for virtualisering, isolasjon, ressursadministrasjon og "sjekkpunkt / omstart".

Virtualisering og isolasjon

Et virtuelt miljø er en egen og tømt enhet. Fra eiers synspunkt ser det ut som en ekte fysisk server. Det eier:

Filer Er virtualisert: systembiblioteker, applikasjoner, / proc og / sys , låser, etc. Brukere og grupper Hvert virtuelt miljø har sin egen "root" systemkonto, så vel som sine egne brukere og grupper. Behandle treet Hvert virtuelt miljø ser bare sine egne prosesser (fra init). De prosess identifikatorer (PID) er virtualisert, slik at "PID" identifikator for init oppgave er 1, som vanlig. Nettverk Det virtuelle nettverksgrensesnittet lar et virtuelt miljø ha sine egne IP-adresser , samt et sett med Netfilter ( iptables ) og rutingsbrannmurregler . Eksterne enheter Om nødvendig kan ethvert virtuelt miljø få tilgang til ekte periferiutstyr som nettverksgrensesnitt, serielle porter , diskpartisjoner osv. KPI Delt minne, semaforer , meldingskø.

Ressursforvaltning

Siden alle VE-er bruker samme kjerne, er ressursadministrasjon av største betydning. Hver EV må være innenfor sine grenser og ikke påvirke andre EV'er.

OpenVZ ressursadministrasjon består av følgende tre elementer: to-nivå disk kvoter, en rettferdig CPU planlegger og bruker beancounters. Alle disse ressursene kan endres mens en VE kjører, uten å måtte starte på nytt. For eksempel er det mulig å fordele mer minne til en VE ved å endre passende parametere på farten. Dette er en funksjon som ofte er umulig eller kompleks med andre virtualiseringsmetoder som VM eller hypervisor .

To-nivå diskkvoter

Vertssystemets rotbruker (OpenVZ) kan etablere diskkvoter per VE, spesifisert i form av diskblokk og inode (pluss eller minus antall filer). Dette er det første nivået på diskkvoter. I tillegg til disse kan en VE-eier (rotbruker) bruke de vanlige kvotehåndteringsverktøyene i sin egen VE for å sette standard diskkvoter per bruker og per UNIX-gruppe.

Det er mulig å dynamisk tildele diskplass til en VE, ganske enkelt ved å endre diskkvoten (med andre ord uten å måtte endre størrelse på diskpartisjonene).

Planlegger rettferdig CPU

OpenVZ CPU- planleggeren er også på to nivåer. På det første nivået bestemmer planleggeren til hvilken VE tidsseksjonen skal tildeles, basert på cpuunits per VE. På andre nivå bestemmer standard Linux planlegger hvilken prosess som skal kjøres i VE, ved hjelp av standard prosessprioriteter.

OpenVZ-administratoren kan angi forskjellige verdier for cpuunits for forskjellige VE-er, og CPU-tiden vil bli gitt til disse proporsjonalt.

Det er også mulig å begrense CPU-tiden, for eksempel til 10% av tilgjengelig CPU-tid.

User Beancounters

User Beancounters er et sett med tellere, grenser og garantier fra VE. Omtrent 20 parametere, nøye valgt, dekker alle aspekter av EV-operasjoner; dermed kan ingen VE misbruke en ressurs som er begrenset for hele noden og derved skade en annen VE.

Ressursene som telles og overvåkes, er hovedsakelig minne og forskjellige kjerneobjekter som delt minnesegment, nettverksbuffer, etc. Hver ressurs kan sees fra / proc / user_beancounters og har fem verdier knyttet til den: nåværende bruk, maksimal bruk (i løpet av en VE), barriere-, grense- og feilteller. Betydningen av barrieren og grensen avhenger av parameteren; kort sagt, disse kan sees på som en myk grense og en hard grense. Hvis en ressurs når grensen, økes feiltelleren, slik at eieren av VE kan se om det skjer noe dårlig ved å analysere utdataene fra / proc / user_beancounters i deres VE.

Kontrollpunkt og live migrasjon

Live migrerings- og kontrollpunktfunksjonen for OpenVZ ble kunngjort midt iApril 2006. Det lar deg migrere en VE fra en fysisk server til en annen uten å stoppe / starte VE på nytt. Denne prosessen er kjent som applikasjonskontrollpunkt  : VE er frossen og hele tilstanden lagres i en fil på disken. Denne filen kan deretter overføres til en annen maskin der VE kan gjenopprettes. Migreringsforsinkelsen er sekunder, og det er ikke nedetid, bare en forsinkelse.

Hver bit av VE-tilstand, inkludert åpne nettverkstilkoblinger, lagres. Fra brukerens perspektiv ser det ut som en forsinkelse i svaret: en databasetransaksjon vil ta litt lengre tid enn vanlig, når VE starter på nytt, legger ikke brukeren merke til at databasen allerede fungerer på en annen maskin.

Denne funksjonen muliggjør scenarier som å oppdatere serveren uten å måtte starte den på nytt: Hvis databasen din trenger mer minne eller CPU, kjøper du en ny server, migrerer VE-en din på den og deretter skalerer du den opp. Hvis du vil legge til mer RAM på serveren din, migrerer du alle VE-er til en annen server, slår av den første, legger til minne og deretter starter og migrerer alle VE-er.

Brukerkommandoer

OpenVZ leveres med et kommandolinjeverktøy for å kontrollere VEs (vzctl), samt verktøy for å installere programvare i VEs (vzpkg).

vzctl

Det er et enkelt kommandolinjeverktøy for å kontrollere en EV.

vzctl opprett VEID [--ostemplate <name>] [--config <name>] Denne kommandoen oppretter et nytt virtuelt miljø med den numeriske identifikasjonen av VEID, som vil være basert på en OS-mal (en Linux-distro) og som vil ha ressursadministrasjonsparametere hentet fra konfigurasjonsfilen spesifisert på kommandolinjen. Begge parametrene --ostemplate og --config er valgfrie, det er standardverdier definert i global konfigurasjonsfil. vzctl start VEID Starter en gitt VE, som betyr å opprette en virtuell miljøkontekst i kjernen, plassere alle parametere for ressursadministrasjon og starte VE's / sbin / init i den sammenhengen. vzctl stopp VEID Stopp en gitt EV. En VE kan også stoppes (eller startes på nytt) av eieren ved hjelp av standard / sbin / stopp eller / sbin / reboot- kommandoene . vzctl utfører VEID <kommando> Utfør en kommando i en VE. For å se listen over prosesser i VE 102, kjør bare kommandoen vzctl exec 102 ps ax . vzctl skriv inn VEID Åpne et VE-skall. Dette er nyttig hvis for eksempel sshd er død i denne VE, og du vil feilsøke den. vzctl set VEID --parameter <value> [...] [--save] Tilordner en parameter for en VE. Det er mange forskjellige innstillinger. For å legge til en IP-adresse til en VE, kjør vzctl set VEID --ipadd xxxx --save . Hvis du vil endre diskkvoten til en VE, kjører du vzctl set VEID - diskspace soft: hard --save . For å sette barrieren og kjerneminnegrensen for en VE, kjør vzctl set VEID --kmemsize barrier: limit --save .

Maler og vzpkg

Maler (på fransk: gabarit) er forhåndsopprettede bilder som brukes til å lage en ny VE. I utgangspunktet er en mal en samling av pakker, og en malbuffer er en tarball av et rotmiljø med disse pakkene installert. Under opprettelsen av vzctl blir en tarball pakket ut. Ved å bruke malecache-teknikken kan en ny VE opprettes på få sekunder.

Vzpkg-verktøyene er et sett med verktøy som letter opprettelsen av malbuffer. De støtter for øyeblikket rpm og repositorier av yum-typen. Så for å opprette en mal, for eksempel for distribusjon av Fedora Core 5, må du indikere et depot sett (yum) som har FC5 rpm, og et sett med rpm å installere. I tillegg kan skript før og etter installasjon brukes til å optimalisere eller endre et hurtigbuffersted. Alle ovennevnte data (arkiver, pakkelister, skript, GPG-nøkler osv.) Danner en metadatamal . En malbuffer kan opprettes automatisk fra en metadatamal ; du bare kjører verktøyet vzpkgcache. vzpkgcache vil laste ned og installere de oppførte pakkene på en midlertidig VE, og pakke resultatet som en malbuffer.

Malbuffere for distribusjoner som ikke er RPM kan også opprettes, selv om dette mer er en manuell prosess. For eksempel gir denne HOWTO detaljerte instruksjoner for å opprette en Debian-malbuffer.

Følgende malbuffer (aka forhåndsopprettede maler) er for øyeblikket (Mai 2006) tilgjengelig:

Hovedtrekk ved OpenVZ

Skalerbarhet

Siden OpenVZ bruker en enkelt kjernemodell, oppfører den seg som Linux-kjernen 2.6, noe som betyr at den støtter opptil 64 prosessorer og opptil 64 gigabyte RAM . Et enkelt virtuelt miljø kan utvides til hele den fysiske maskinen, det vil si alle CPUer og alt RAM.

Faktisk distribuerer noen et enkelt virtuelt miljø OpenVZ. Dette er rart ved første øyekast, men gitt at en enkelt VE kan benytte alle maskinvareressurser med nær innfødt ytelse, mens de fremdeles får andre fordeler som maskinvareuavhengighet, ressursadministrasjon og varm migrering, er dette et opplagt valg i mange scenarier.

Tetthet

OpenVZ har plass til hundrevis av virtuelle miljøer på anstendig maskinvare (de viktigste begrensningene er mengden RAM og antall prosessorer).

Grafen viser forholdet mellom responstiden til Apache-webserveren i en VE og antall VE-er. Målingene ble gjort på en maskin med 768  MB (¾ Gb) RAM; hver VE kjørte det vanlige settet med prosesser: init , syslogd , crond , sshd og apache. De nisser Apache betjener statiske sider som ble lastet med http_load, og den første Responstiden ble målt. Som du kan se, jo flere antall VE-er vokser, desto reduseres responstiden på grunn av lite minne og overdreven bytte .

I dette scenariet er det mulig å kjøre opptil 120 VE på en maskin med ¾ GB RAM. Dette ekstrapoleres lineært, og det er derfor mulig å kjøre opptil nesten 320 VE på en maskin med 2 Gb RAM.

Masseledelse

En eier (rot) av den fysiske OpenVZ-serveren (også kjent som maskinvarenoden) kan se alle prosessene og filene til VE-ene. Dette muliggjør masseledelse. Så for eksempel kan du kjøre et enkelt skript som vil oppdatere alle (eller bare valgte) VE-er med en gang.

Bruksscenarier

Følgende bruksscenarier er felles for alle virtualiseringsteknikker. En unik fordel med virtualisering på OS-nivå som OpenVZ er imidlertid at den ikke forringer ytelsen for mye, noe som gjør disse scenariene mer tiltalende.

sikkerhet Virtualisering lar deg isolere hver nettverkstjeneste (som Apache, e- postserver, DNS- server osv.) I et eget virtuelt miljø. Hvis en inntrenger under disse forhold fant et sikkerhetshull i en av applikasjonene, kunne han bare mishandle denne tjenesten selv; siden alle andre tjenester er i separate VE-er, ville han ikke ha tilgang til dem. Serverkonsolidering Foreløpig er de fleste servere lett ansatt. Ved hjelp av OpenVZ kan slike servere konsolideres ved å migrere dem til virtuelle miljøer. Gevinsten er i plassen som blir tatt opp av stativer , bruksregninger og administrasjonskostnader. Overnatting Virtualisering på OS-nivå gjør det mulig for vertsfirmaer å tilby billig virtualisert hosting. Hver VE (så muligens hver klient) har full root-tilgang, noe som betyr at eieren av VE kan installere hva som helst, og bruke verktøy som Linux IP-tabeller (brannmurregler). Utvikling og testing Utviklere og testere trenger ofte tilgang til et stort antall Linux-distribusjoner; noen ganger må de installere disse på nytt fra bunnen av. Med OpenVZ kan de raskt installere (en ny VE kan opprettes i løpet av et øyeblikk) alle disse distribusjonene på samme datamaskin, uten å måtte starte på nytt, samtidig som de opprettholder hederlig ytelse. Kloning av en VE er også veldig enkel: bare kopier VE-sonen og dens konfigurasjonsfil. Lærende Hver student kan ha en eller flere yrkesutdanninger. Du kan spille med forskjellige distribusjoner av Linux. En ny EV kan opprettes på nytt.

Lignende teknikker

Det er andre eksempler på OS-nivå virtualisering som LXC , Linux-VServer , BSD Jails og Solaris Zones.

Fremtidig utvikling

I Mai 2006, ble ikke OpenVZ-oppdateringen innlemmet i standard Linux-kjernen. Siden det finnes andre konkurrerende teknikker for virtualisering, er det vanskelig å avgjøre nøyaktig om, når og i hvilken form endringene kan slås sammen. Det pågår en kontinuerlig diskusjon på LKML om de ulike tilnærmingene til virtualisering på OS-nivå, mulige realiseringer og deres inkludering.

Pågående utvikling for OpenVZ inkluderer:

  • Stabiliser utviklingsgrenen på 2.6.17-kjernen
  • Legg til støtte for IPv6 og brokoblet nettverk
  • Legg til VCPU-affinitet for VE
  • Planlegger / O VE basert på CFQ
  • Fortsett å opprettholde distribusjonsspesifikke kjerner (SUSE10, FC5)
  • Fortsett å jobbe med virtualisering i standardkjernen

Merknader og referanser

  1. "  http://openvz.livejournal.com/53870.html  "

Eksterne linker