OpenVZ

OpenVZ

Tyyppi virtualisointi
Kehittäjä Yhteisö toimii Parallelsin avulla
Käyttöjärjestelmä Linux
Ensimmäinen painos 2005
Laitteistoalusta x86 , x86-64 , IA-64 , PowerPC , SPARC , ARM
uusin versio

Ydin :
2.6.32-042stab084.17 (vakaa) [1]
2.6.32-042stab113.5 (kokeellinen) [2]
vzctl  - 4.6.1 [3]

vzquota -3.1  [ 4]
Lisenssi GNU GPL v.2
Verkkosivusto openvz.org
 Mediatiedostot Wikimedia Commonsissa

OpenVZ on käyttöjärjestelmätason virtualisointiteknologian  toteutus , joka perustuu Linux-ytimeen . OpenVZ:n avulla voit ajaa useita erillisiä käyttöjärjestelmän kopioita yhdellä fyysisellä palvelimella, joita kutsutaan "virtuaalisiksi yksityisiksi palvelimiksi" (Virtual Private Servers, VPS) tai "virtuaalisiksi ympäristöiksi" (Virtual Environments, VE).

Koska OpenVZ perustuu Linux-ytimeen, toisin kuin virtuaalikoneet (esimerkiksi VMware , Parallels Desktop ) tai paravirtualisointitekniikat (esimerkiksi Xen ), vain Linux - jakelut voivat toimia "vierasjärjestelminä" . Käyttöjärjestelmätason virtualisointi OpenVZ:ssä tarjoaa kuitenkin paremman [5] suorituskyvyn, skaalautuvuuden, käyttöönottotiheyden, dynaamisen resurssienhallinnan ja helpon hallinnan kuin vaihtoehtoiset ratkaisut. OpenVZ-verkkosivuston mukaan virtualisoinnin yleiskustannukset ovat erittäin alhaiset ja suorituskyky on vain 1-3 % verrattuna perinteisiin Linux-järjestelmiin.

OpenVZ on Virtuozzon perusalusta , Parallels, Inc  :n oma tuote. OpenVZ jaetaan GNU GPL v.2 -lisenssin ehtojen mukaisesti.

OpenVZ koostuu muokatusta Linux-ytimestä ja käyttäjän apuohjelmista .

Ydin

OpenVZ-ydin on muokattu Linux-ydin, joka lisää virtuaaliympäristön ( VE ) käsitteen . Ydin tarjoaa virtualisoinnin, eristämisen, resurssien hallinnan ja tarkistuspisteen (säilyttää VE:n nykyisen tilan).

Ytimen versiot

Tällä hetkellä tuetaan useita OpenVZ-ytimien haaroja. Haarat eroavat stabiiliudeltaan ja RHEL -versiossa ne perustuivat [6] .

Ytimen versio Vakaa/testattavissa RHEL versio
vzkernel-2.6.32-042stab085.17 Vakaa 6
vzkernel-2.6.32-042stab084.17 testaus 6
ovzkernel-2.6.18-348.16.1.el5.028stab108.1 Vakaa 5.9
ovzkernel-2.6.18-371.3.1.el5.028stab110.1 testaus 5.10

Joukko käyttäjän apuohjelmia

Tärkeimmät apuohjelmat ovat:

On myös useita apuohjelmia, joita ei joko tueta virallisesti tai jotka on "hylätty":

Virtualisointi ja eristäminen

Jokainen VE on erillinen kokonaisuus, ja VE:n omistajan näkökulmasta se näyttää melkein tavalliselta fyysiseltä palvelimelta. Jokaisella VE:llä on oma:

Tiedostot Järjestelmäkirjastot, sovellukset, virtualisoidut FS /proc ja /sys , virtualisoidut lukot jne. Käyttäjät ja ryhmät Omat käyttäjät ja ryhmät, mukaan lukien root . Prosessipuu VE näkee vain omat prosessinsa (alkaen initistä ). Prosessitunnukset ( PID ) on myös virtualisoitu, joten aloitusohjelman PID on 1. Netto Virtuaalinen verkkolaite (venet), jonka avulla VE:llä voi olla omat IP-osoitteet sekä reititys- ja palomuurisääntöjoukot (netfilter/iptables). Laitteet Tarvittaessa OpenVZ-palvelimen ylläpitäjä voi antaa VE:lle pääsyn esimerkiksi oikeisiin laitteisiin. verkkosovittimet, portit, levyosiot jne. IPC-objekteja Jaettu muisti, semaforit, viestit.

Resurssienhallinta

Resurssienhallinta OpenVZ:ssä koostuu kolmesta osasta: kaksitasoisesta levykiintiöstä, rehellisestä prosessorin ajastimesta ja niin sanotuista "käyttäjien beancountersista". Näitä resursseja voidaan muuttaa VE:n ollessa käynnissä, uudelleenkäynnistystä ei tarvita.

Kaksitasoinen levykiintiö

OpenVZ-palvelimen järjestelmänvalvoja voi asettaa VE:lle levykiintiöitä levytilan ja inodien (i-solmujen, mikä on suunnilleen sama kuin tiedostojen lukumäärä) lukumäärän suhteen. Tämä on levykiintiön ensimmäinen taso.

Tämän lisäksi VE-järjestelmänvalvoja (root) voi käyttää VE:n yleisiä apuohjelmia asettaakseen UNIX -levykiintiöt käyttäjille ja ryhmille.

Rehellinen suorittimen ajastin

OpenVZ:n prosessorin ajastin on myös kaksitasoinen. Ensimmäisellä tasolla ajoittaja päättää, mille VE:lle antaa CPU-aikaviipale cpuunitsVE:n parametriarvon perusteella. Toisella tasolla tavallinen Linux-ajastin päättää, mikä valitun VE:n prosessi antaa aikaviipaleen Linuxin standardiprosessien prioriteettien ja niin edelleen perusteella.

OpenVZ-palvelimen järjestelmänvalvoja voi asettaa eri arvoja cpuunitseri VE:ille, ja CPU-aika jaetaan näiden VE:lle määritettyjen arvojen suhteen mukaan.

On myös raja-parametri - cpulimit, joka asettaa prosessoriajan ylärajan prosentteina, joka on varattu tietylle VE:lle.

Käyttäjä Beancounters

User Beancounters ovat joukko laskureita, rajoja ja takuita VE:tä kohti. On olemassa noin 20 parametrin joukko, jotka on valittu kattamaan kaikki VE:n toiminnan osa-alueet, jotta yksikään VE ei voi käyttää väärin resursseja, jotka on rajoitettu koko palvelimeen ja siten häiritä muita VE:itä.

Laskettavat ja ohjattavat resurssit ovat pääasiassa RAM-muistia ja erilaisia ​​ytimessä olevia objekteja, kuten jaetut IPC-muistisegmentit, verkkopuskurit jne. Jokainen resurssi voidaan tarkastella /proc/user_beancounters-tiedostossa  - arvoja on viisi \u200b \u200sille : nykyinen käyttö, enimmäiskäyttö (VE:n käyttöiän aikana), este, raja ja poistumislaskuri. Esteen ja rajan merkitys riippuu parametrista; Lyhyesti sanottuna niitä voidaan pitää pehmeänä rajana ja kovana rajana. Jos jokin resurssi yrittää ylittää rajan, sen poistumislaskuri kasvaa - joten VE-omistaja voi nähdä, mitä tapahtuu lukemalla VE:n /proc/user_beancounters-tiedoston .

Checkpointing ja migraatio lennossa

Lennossa tapahtuva siirto- ja tarkistustoiminto julkaistiin OpenVZ:lle huhtikuun 2006 puolivälissä. Sen avulla voit siirtää VE:tä fyysiseltä palvelimelta toiselle ilman, että VE:tä tarvitsee pysäyttää/käynnistää uudelleen. Tätä prosessia kutsutaan tarkistuspisteeksi: VE "jäädytetään" ja sen täydellinen tila tallennetaan levylle. Lisäksi tämä tiedosto voidaan siirtää toiselle koneelle ja siellä "purkaa" (palauta) VE. Tämän prosessin viive (aika, jolloin VE on jäätynyt) on noin muutama sekunti; On tärkeää korostaa, että kyseessä on palvelun viivästyminen, ei palvelun epääminen.

Versiosta 2.6.24 alkaen pid-nimiavaruudet sisällytetään ytimeen (pid-nimiavaruudet, pid on prosessin tunniste), minkä seurauksena lennon aikana tapahtuvasta migraatiosta tulee "turvallinen", koska tässä tapauksessa 2 prosessia eri VE:issä voi olla sama pid.

Koska kaikki VE-tilan yksityiskohdat, mukaan lukien avoimet verkkoyhteydet, säilyvät, siirtoprosessi näyttää VE-käyttäjän näkökulmasta vastauksen viiveeltä: sanotaan, että yksi tietokantatapahtumista kesti tavallista pidempään, ja sitten työ jatkuu. kuten tavallista; näin ollen käyttäjä ei huomaa, että hänen tietokantapalvelimensa on jo käynnissä toisella fyysisellä palvelimella.

Tämä ominaisuus tekee todellisista skenaarioista, kuten palvelimen päivittämisestä ilman tarvetta käynnistää sitä uudelleen: jos DBMS -järjestelmäsi esimerkiksi tarvitsee lisää muistia tai tehokkaamman prosessorin, ostat uuden tehokkaamman palvelimen ja siirrät VE:n DBMS:stä siihen ja sitten nosta tämän VE:n rajoja. Jos sinun on lisättävä RAM-muistia palvelimeen, siirrät kaikki VE:t kyseiseltä palvelimelta toiselle, suljet palvelimen, asennat lisää muistia, käynnistät palvelimen ja siirrät kaikki VE:t takaisin.

vSwap

RHEL-ytimen versiosta 6 042stab04x alkaen vSwap -tuki lisättiin. Arkistoitu 27. kesäkuuta 2013 Wayback Machinessa . UBC-rajoja ei enää tarvitse laskea . Arkistoitu 7. kesäkuuta 2017 Wayback Machinessa . Riittää, kun määrität vain PHYSPAGES ja SWAPPAGES luotaessa "vierasjärjestelmää".

Sivun välimuistin eristäminen

Ytimestä 042stab068.8 alkaen oli mahdollista rajoittaa levyvälimuistin käyttöä säilöillä .

OpenVZ:n erityispiirteet

Skaalautuvuus

Koska OpenVZ käyttää yhtä ydintä kaikille VE:ille, järjestelmä on yhtä skaalautuva kuin tavallinen Linux 2.6 -ydin, eli se tukee enintään 4096 prosessoria ja jopa 64 Gt RAM-muistia x86 - versiolle (käyttäen PAE ) [7] ja 64 Tt x86-64 [8] . Yksi virtuaaliympäristö voidaan laajentaa koko fyysisen palvelimen kokoiseksi eli käyttämään kaiken käytettävissä olevan prosessoriajan ja muistin.

On mahdollista käyttää OpenVZ:tä yhden virtuaaliympäristön kanssa palvelimella. Tämä lähestymistapa antaa VE:lle mahdollisuuden käyttää täysin kaikkia palvelimen laitteistoresursseja lähes "natiivilla" suorituskyvyllä ja nauttia lisäetuista: VE:n riippumattomuus laitteistosta, resurssienhallinnan alijärjestelmä, "elävä" siirto.

Tiheys

OpenVZ pystyy isännöimään satoja virtuaalisia ympäristöjä nykyaikaisilla laitteistoilla . Tärkeimmät rajoittavat tekijät ovat RAM-muistin määrä ja prosessorin taajuus.

Tämä kaavio näyttää VE-verkkopalvelimien vasteajan verrattuna koneen VE-palvelimien määrään. Mittaukset tehtiin koneella, jossa on 768 Mt (¾ Gt) RAM-muistia; jokaisessa VE:ssä oli käynnissä tavallinen sarja prosesseja: init , syslogd , crond , sshd ja Apache -verkkopalvelin . Apache-daemonit palvelivat staattisia sivuja, jotka http_load-apuohjelma latasi, ja ensimmäinen vasteaika mitattiin. Kuten näette, VE:iden määrän kasvaessa vasteaika pitenee - tämä johtuu RAM-muistin puutteesta ja voimakkaasta vaihdosta.

Tässä skenaariossa on mahdollista käyttää jopa 120 näistä VE:istä koneessa, jossa on ¾ Gt RAM-muistia. Koska tiheys kasvaa lähes lineaarisesti RAM:n määrän kasvaessa, voidaan ekstrapoloida, että koneessa, jossa on 2 Gt muistia, on mahdollista ajaa noin 320 näistä VE:istä, jos hyvä suorituskyky säilyy.

Joukkohallinta

Fyysisen palvelimen, jossa on OpenVZ (root), omistaja voi nähdä kaikkien VE:iden kaikki prosessit ja tiedostot. Tämä ominaisuus mahdollistaa massahallinnan, toisin kuin muut virtualisointitekniikat (kuten VMware tai Xen ), joissa virtuaalipalvelimet ovat erillisiä kokonaisuuksia, joita ei voida hallita suoraan isäntäjärjestelmästä.

Käyttöesimerkkejä

Nämä käyttötapaukset koskevat kaikkia virtualisointiteknologioita. Käyttöjärjestelmätason virtualisointiteknologian ainutlaatuisuus piilee kuitenkin siinä, että käyttäjän ei tarvitse "maksaa" paljoa virtualisoinnista (esim. suorituskyvyn heikkeneminen jne.), mikä tekee taustalla olevista skenaarioista entistä houkuttelevampia.

Turvallisuus Voit käyttää erillisiä VE:itä kullekin verkkopalvelulle (esim. web-palvelin, sähköpostipalvelin, DNS-palvelin jne.). Siinä tapauksessa, että hakkeri löytää ja käyttää haavoittuvuutta jossakin sovelluksessa päästäkseen järjestelmään, hän voi rikkoa vain haavoittuvuuden sisältävän palvelun - kaikki muut palvelut ovat erillisissä eristetyissä VE:issä, joihin hänellä ei ole pääsyä. Palvelimen konsolidointi OpenVZ:n avulla käyttämättömät palvelimet voidaan yhdistää (yhdistää) siirtämällä ne virtuaaliympäristöihin. Siten on mahdollista lisätä palvelimien kuormitusta ja vähentää niiden viemää tilaa vähentämällä koneiden määrää. Ohjelmistojen kehittäminen ja testaus Linux-kehittäjät ja testaajat tarvitsevat yleensä pääsyn useisiin eri jakeluihin, ja heidän on usein asennettava jakelut uudelleen alusta. OpenVZ:n avulla he voivat saada kaiken yhdelle palvelimelle ilman uudelleenkäynnistystä ja "alkuperäisellä" suorituskyvyllä.

Samankaltaiset tekniikat

Muita virtualisointiteknologian toteutuksia käyttöjärjestelmätasolla: Linux-VServer , FreeBSD Jails , LXC , Solaris Containers , IBM AIX6 WPARs.

Haitat

Puutteista voidaan tunnistaa:

Rajoitettu valikoima "vieras"-käyttöjärjestelmää Vain erilaiset Linux-jakelut voivat toimia "vieras" -järjestelmänä .

Katso myös

Muistiinpanot

  1. Download/kernel/rhel6 Arkistoitu 13. tammikuuta 2012 Wayback Machinessa  
  2. Lataa/kernel/rhel6-testing Arkistoitu 14. maaliskuuta 2012 Wayback Machinessa  
  3. Download/vzctl Arkistoitu 18. tammikuuta 2012 Wayback Machinessa  
  4. Lataa/vzquota Arkistoitu 18. tammikuuta 2012 Wayback Machinessa  
  5. HPL-2007-59 tekninen raportti Arkistoitu 22. elokuuta 2010 Wayback Machinessa  
  6. Lataa /kernel  . wiki.openvz.org. Käyttöpäivä: 22. tammikuuta 2014. Arkistoitu alkuperäisestä 1. helmikuuta 2014.
  7. Erilaisia ​​ytimen  makuja . wiki.openvz.org. Käyttöpäivä: 22. tammikuuta 2014. Arkistoitu alkuperäisestä 1. helmikuuta 2014.
  8. Andy Kleen. Linux-ytimen  dokumentaatio . kernel.org (heinäkuu 2004). Käyttöpäivä: 22. tammikuuta 2014. Arkistoitu alkuperäisestä 1. helmikuuta 2014.

Linkit