A Virtualizáció Fogalma

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

A virtualizáció fogalma

A virtualizáció egy absztrakció, amely a hagyományos környezet elemeinek szétválasztását valósítja meg. A
virtualizáció sok fizikai szervert, sok logikai szerverré konszolidál kevesebb fizikai szerverrel. Mindez
csökkenő költségeket, növekvő alkalmazkodó képességet és rugalmasságot, egyszerűbb menedzsmentet, és az
automatizálás következtében növelt erőt jelent.
Virtualizáció alkalmával szétválasztom a futtatott operációs rendszert az alatta levő hardvertől. Az architektúra
lényege, hogy a fizikai erőforrások és az operációs rendszer közé bekerül egy virtualizációs réteg.
Ez a réteg képes a fizikai erőforrások megosztására, lehetővé téve több operációs rendszer egyidejű futtatását
egy fizikai hardveren, úgynevezett virtuális gépekben. A virtuális gépek viselkedése megegyezik a fizikai
gépekével: a virtualizációs réteg minden egyes virtuális gép számára biztosít virtuális processzort, memóriát,
tárterületet és hálózati interfészt.
Az operációs rendszer a hardvertől történő elválasztását a hypervisor teszi lehetővé. Ezt végezheti szoftveresen
vagy hardveresen. A hypervisort futtató szervert hosztnak vagy virtualizációs szervernek nevezzük, a rajta futó
virtuális gépeket guest (vendég) vagy instance gépeknek nevezzük. A virtualizáció egyik nagy előnye, hogy
több ilyen instance is futhat egy hoszton.
Virtualizációs technikák
 Alkalmazás szintű virtualizáció
 Operációs rendszer szintű virtualizáció
 Emuláció
 Paravirtualizáció
 Natív virtualizáció
Az alkalmazás szintű virtualizáció az alkalmazások futtatásához használt könyvtárak szintén valósítjuk meg,
nem operációs rendszer szinten. Ez a valóságban úgy néz ki, hogy az alkalmazás, amit virtualizálunk nem tud
róla, hogy nem az eredeti operációs rendszerén fut, a virtualizált környezet miatt. Természetesen ilyenkor a
környezetnek kell az alkalmazás által folytatott kommunikációt a hosztgép felé továbbítania. Egy példa erre a
Cygwin, ami a Microsoft Windows operációs rendszereken található és a POSIX/GNU környezetben írt
UNIX/Linux alkalmazások Windows-os portolására használjuk.
Az operációs rendszer szintű virtualizáció arra biztosít lehetőséget, hogy egy azonos operációs rendszeren,
egymástól elkülönített, önálló végrehajtási környezetet hozzunk létre. Azzal, hogy mennyire izolálja az
alkalmazás és az operációs rendszer, valamint, a fizikai és az operációs rendszer kommunikációját különböző
megoldások vannak jelen a piacon. Közös tulajdonságuk, hogy az alap operációs rendszer képes önmagán belül
újabb példányokat létrehozni, de csak azonosakat, ezért nem lehet különböző operációs rendszerekkel
megtenni. A virtualizációból adódó teljesítményvesztés minimális. Legelterjedtebb felhasználása a
tárhelyszolgáltatók által futtatott rendszereken van, legelterjedtebb formája a konténerekkel történő használat.
Az emuláció során egy másik fizikai gép teljes felépítését hozzuk létre. Ezzel a módszerrel képesek vagyunk
más architektúrákat is felépíteni, például C64re írt játékokat Windows operációs rendszer alatt futtatni. Ezek az
emulációs technikák létrehozzák az emulált rendszer fizikai felépítését, természetesen szoftveren alakítva át az
utasításokat, futásidőben. Az emulációhoz nem szükséges változtatnunk sem a gazda-, sem pedig az
emulálandó rendszeren. Teljesítmény szempontjából az emuláció nagyon erőforrásigényes, az emulált rendszer
teljesítménye kb. 1/5-e a hoszt rendszerének.
A paravirtualizáció során már sokkal kedvezőbb erőforrásértékeket érhetünk el, ugyanis ennek a módszernek
a lényege, hogy a virtuális gép rögtön a fizikai gép komponenseivel kommunikál egy API-n 2 keresztül. Itt már
be kell avatkozni a virtuális gép rendszerébe, a kernelt fel kell készíteni, hogy a hosztgép architektúrájával
tudjon kommunikálni. A teljesítményvesztés ebben az esetben 5% körüli.
Natív virtualizációról akkor beszélünk, ha a hoszt processzorát fizikailag módosítottuk. Az Intel és az AMD is
kiadott egy processzorcsaládot, amik a hardveres virtualizációt támogatják. Napjainkban leginkább a
paravirtualizációs környezetek használják ki ezeket a processzorokat. Régen a hardveres változtatások miatt
sokszor nagyobb munka volt felépíteni egy ilyen rendszert, mint leküzdeni a minimális teljesítményvesztést,
amit a paravirtualizáció okoz, de ma a szoftveres támogatásnak köszönhetően ez az egyik legnépszerűbb
virtualizációs megoldás.
A virtuális gépek memóriakiosztása kétféleképpen történhet. Statikusan vagy dinamikusan. Statikus
memóriakiosztásnál a vendég gépek memóriájának mérete maximum a hoszt gép memóriájával egyezhet meg,
tehát ha van egy szerverünk 16GB RAM-mal, akkor összesen ennyit tudunk a virtuális gépeink rendelkezésére
bocsátani. Ellenben a dinamikus memória kiosztás képes úgy kezelni a memóriát, hogy annak nagysága
összességében meghaladja a szerverünkben lévőt.
Virtualizációs megoldások
KVM
A kernel3 alapú virtuális gép (Kernel-based Virtual Machine - KVM) egy teljeskörű, natív virtualizációs
megoldás olyan szerverekbe, illetve számítógépekbe, amikben az Intel-VT vagy AMD-V processzorcsaládok
egyike található. Ezek a processzorok támogatják a hardveres virtualizációt, így egy betölthető kernel modullal,
natív virtualizációt megvalósító hosztgéppé alakíthatóak.
A KVM egy beépített modul a 2007 után kiadott Linuxokban. Mivel minden hypervisornak szüksége van
alapvető operációs rendszer elemekre, ezért a KVM ezeket az alap linux kernelből használja, nincs szükség
extra program telepítésére.
Biztonság: A KVM kombinálja a SELinux és az sVirt tulajdonságait, a maximális elkülönítéshez és
megerősített védelemhez.
Tárhely: A KVM támogat minden Linux által támogatott tárolási formulát. Helyi és NAS lemezeket is.
Hardver támogatás: A KVMet támogatja minden Linuxot támogató szerver.
Memória kezelés: A KVM megörökli a Linux memóriakezelését, ebbe beletartozik a nem egységes memória
hozzáférés kezelés és a KSM is.
Futás közbeni mozgatás: A KVM támogatja a Live migration-t vagyis azt, hogy egy futó virtuális gépet úgy
lehet másik fizikai hosztra átrakni, hogy közben azt nem állítjuk le.
Teljesítmény és skálázhatóság: A KVM megörökli a Linux skálázhatóságát, ha növekszik a futtatott virtuális
gépek igénye, akkor a skálázódás miatt a kiszolgáló teljesítmény is nő.
Ütemezés és erőforrás kontrol: A KVM egy Linux folyamat, amit a kernel ütemez és kezel. A Linux ütemező
lehetővé teszi egy folyamathoz tartozó erőforrások nagyon részletes, nagyon alapos beállítását.
Konténertechnológia
A konténerek még könnyebbé teszik a virtuális gépek kezelését és mozgatását. Egy olyan különálló réteget
képvisel, amin a szoftver vagy applikáció futhat. Ez a környezet már tartalmazza a telepített és bekonfigurált
szoftvert, ám nem teljesen, a kernel modul és a driver hiányzik, ezeket a fizikai szerver adja meg (host) miután
feltelepítettük arra.
Itt fut egy operációs rendszer, ami ellátja az alapvető funkciókat, melyeket a konténerszoftver igényel, e fölött
pedig már maga a konténer motor fut. Itt pedig már csak maguk az applikációk találhatóak meg a saját
rendszerkönyvtáraikkal és futtatókörnyezetükkel. Ezeket egy csomagba, úgymond konténerbe tesszük, innen
származik a név.
Előnye, hogy terhelés esetén gyorsabban tud erőforrásokat kiosztani az alkalmazásoknak, gyorsan és
egyszerűen létrehozható egy-egy konténer, ami azután nagyon gyorsan és könnyen mozgatható a teszt és az éles
rendszer között például.
A konténer alapú rendszerek fenntartási költsége is alacsonyabb általában. A hátrányai közé tartozik, hogy
komplexebb és összetettebb a karbantartása és a felépítése, mint a KVM alapú virtualizációnak.
A Docker
A Docker egy nyílt forráskódú konténervirtualizációs technológiának számító eszköz.
Alapvetően két különböző részből épül fel. A Docker Engine (Docker motor) a fizikai szerverre feltelepítve
létrehozza a konténer virtualizációs felületet, ennek a feladata, a konténerek futtatása, kezelése és üzemeltetése.
A Docker Hub pedig egy felhő alapú szolgáltatás, amin keresztül repositorykhoz (adatárak) kapcsolódhatunk,
saját képfájlokat hozzunk létre és tesztelhetünk, valamint eltárolhatjuk a kézzel készített konténereket, nagyon
hasonló a GitHubhoz.
Openstack
Az Openstack egy privát és publikus felhők kiépítésére és üzemeltetésére használható szoftver, illetve
szoftverek gyűjteménye. Több ezer felhasználó és fejlesztő úgy gondolja, hogy az Openstack a jövő
felhőtechnológiájának az alapja.
Az Openstack projekt 2010-ben indult, a NASA és a Rackspace közös együttműködéséből.
Az Openstack különböző modulokból épül fel:
 Keystone – felhasználó és jogkezelés
 Glance – lemezkép szolgáltatás
 Cinder – blokk alapú tárolórendszer
 Nova – számítási erőforrás felhasználás
 Neutron – hálózatkezelés
 Celiometer – számálázás, nyomon követés
 Heat – automatizálás, templatek létrehozása, tárolása
 Swift – objektumok és fileok tárolása
 Horizon – egy internetes, grafikus felhasználói felület

You might also like