Virtualizáció otthon

A virtualizáció egyre nagyobb teret nyer a szerver felhasználás területén. Egyre általánosabb jelenség, hogy egyetlen kiszolgálón több virtuális gép működik, amelyek más-más szolgáltatásokat futtatnak: így például az FSF.hu Alapítvány szervere, a Barack is több virtuális rendszert futtat. Az egyik ilyen gépen működik az ubuntu.hu, egy másikon az archlinux.fsf.hu, egy harmadikon a wesnoth.fsf.hu, de külön gépen működnek a különféle levelezőlisták is. Vagyis látható, hogy a kiszolgálók oldalán a virtualizáció elsősorban az erőforrások hatékony kihasználását célozza: ahelyett, hogy ezek a szolgáltatások mind külön gépen működnének, elég egyetlen gépet megvásárolni, karban tartani, és helyet biztosítani neki a szerverparkban.

A virtualizáció másik, feltörekvő felhasználási lehetősége a vékony-kliens alapú megoldások: ennek lényege, hogy a mai teljesítmények mellett nincs szükség már minden felhasználónak külön-külön számítógépre, hanem egyetlen gépet is fel lehet osztani több felhasználó között: ilyenkor mindenki a saját a egerével, billentyűzetével dolgozik, a saját monitora előtt, de egy központi gépen. Ennek kényelmes és biztonságos megoldása, ha minden felhasználónak egy-egy külön virtuális gépe van, amit bárhonnan elérhet, mintha csak egy igazi számítógép lenne. Ezzel a módszerrel nagyon jelentős költségmegtakarítást lehet elérni olyan helyen, ahol nincs szükség nagy teljesítményre egy-egy munkaállomás szintjén, így ideális megoldás iskolákban, irodákban.

Van azonban a virtualizációnak egy harmadik területe, amit ma még a felhasználók nem igazán ismernek: ez pedig az otthoni munkaállomásokon történő virtualizáció. Ezzel ma még csak kevesen élnek, pedig nagyon egyszerű és hatékony megoldást kínál – és a kernel-alapú virtualizációt támogató processzorok mára már kezdenek igen elterjedté válni, így technikai akadálya sem lenne. De miért jó a virtualizáció otthoni környezetben? Míg az első két példában inkább a költségmegtakarítás volt a fő cél, addig otthoni rendszereknél inkább a biztonság, kényelem és rugalmasság teheti vonzóvá a virtualizációs technológiákat. Így például használhatjuk arra, hogy egy otthoni kis webszerveren teszteljük a weboldalunkat, mielőtt feltöltenénk a szolgáltatónkhoz, használhatjuk arra, hogy különféle linux-disztribúciókat próbáljunk ki (akár olyan, fejlesztés alatt álló kiadásokat is, amelyeket nem tennénk fel nyugodt szívvel a gépünkre), vagy arra, hogy ha szükségünk van egy program régebbi, vagy éppen még fejlesztés alatt álló változatára, akkor azt kényelmesen tudjuk használni, anélkül, hogy a gépünkre kelljen felküzdeni egy olyan alkalmazást, aminek őskori, teljesíthetetlen függőségei vannak, vagy éppen ellenkezőleg, még instabil, de feltétlenül szükségünk van valamilyen funkcionalitására.

Ebben a cikkben a KVM-alapú virtualizációról lesz szó. Emellett léteznek még más megoldásuk is, mint például a Virtualbox és a VMware, azonban ezekkel most nem foglalkozom. Talán a legegyszerűbb és legtipikusabb felhasználási lehetőség, ha egyszerűen egy Linux disztribúciót szeretnénk tesztelni a virtuális gépünkben. Ez lehet például az új Ubuntu kiadás fejlesztői ága, amit nem szívesen tennénk fel a napi használatban lévő gépünkre, ahol amúgy is igényeljük a stabilitást.

Első lépésként telepítsük fel a KVM-et. Ezt Ubuntu alatt egyszerűen megtehetjük a csomagkezelő segítségével, és a legtöbb disztribúció esetén szintén hasonlóan egyszerű. Majd, ha még nem tettük meg, töltsük le a telepíteni kívánt disztribúció telepítőjének iso állományát. Hozzunk létre egy könyvtárat a saját mappánkon belül valahol, ahol a virtuális gép képfájlját tartani szeretnénk majd, és másoljuk be ide a letöltött iso fájlt. Példánkban ez a virtual nevű mappa lesz. Ezt követően indítsunk el egy terminált. A virtuális gépet grafikus felületen is lehet kezelni, de most gyorsabb és egyszerűbb lesz a konzolt használni erre.

Ha elindítottunk a terminált, lépjünk itt be a virtuális gépnek szánt mappába a cd paranccsal. Például:
cd virtual

Ezt követően hozzunk létre egy virtuális merevlemezt a gépnek. Ennek mérete dinamikusan fog nőni, vagyis mindig csak annyi helyet fog foglalni a merevlemezünkön, amennyit valóban megtöltöttünk. Ettől függetlenül a maximális méretét meg kell adnunk, és a virtuális gépben ekkorának fogjuk látni a meghajtó kapacitását. A példában most ez 16 Gbyte-os lesz, ez bőségesen elegendő szokott lenni erre a célra. A képfájl nevének pedig azt adjuk, hogy jaunty.img, ez azonban bármi más is lehet.
qemu-img create jaunty.img -f qcow2 16G

Vagyis: létrehozunk egy jaunty.img nevű, qcow 2 típusú (dinamikusan növekedő), 16 Gbyte-os virtuális meghajtót.

Ezt követően már kezdhetjük is a virtuális gép telepítését. Ubuntu alatt ezt a következő paranccsal tehetjük:
kvm -m 384 -hda jaunty.img -boot d -cdrom jaunty-desktop-i386.iso

Míg Arch Linux alatt az alábbi parancsot kell kiadnunk:
qemu-kvm -m 384 -hda jaunty.img -boot d -cdrom jaunty-desktop-i386.iso

Láthatjuk, hogy mindkét disztribúció esetén ugyanúgy kell paramétereznünk, az egyetlen különbség, hogy a binárist Arch alatt qemu-kvm-nek nevezik. A továbbiakban éppen ezért csak az Ubuntus megoldást írom, Arch alatt értelemszerűen a kvm helyett a qemu-kvm formát használjuk. Más disztribúciók esetén a név szintén változó lehet.

A példában a virtuális gépnek 384 MByte (-m 384) memóriát adtunk, a jaunty.img virtuális meghajtóra (-hda jaunty.img) telepítjük, a telepítéshez cd-rom-ról bootolunk (-boot d), és a virtuális CD meghajtóba a jaunty-desktop-i386.iso képfájlt tettük be (-cdrom jaunty-desktop-i386.iso). Értelemszerűen, ha másik képfájlt szeretnénk használni, vagy másképp neveztük el virtuális meghajtót, akkor a megfelelő részeket adaptáljuk.

Ha mindent jól csináltunk, rögtön fel is ugrik egy ablak a már ismerős boot menüvel, ahol megkezdhetjük a telepítést. Ha nem akarunk sokat vacakolni, nyugodtan választhatjuk rögtön az “Ubuntu telepítése” opciót. Hamarosan a már jól ismert telepítő jelenik meg az ablakban. Telepítsük a rendszert úgy, mintha csak egy egy igazi számítógépre tennénk. Miután végzett a telepítéssel, állítsuk le a virtuális gépet, majd próbáljuk ki a frissen telepített rendszert. Ehhez az alábbi parancsot adjuk ki terminálban:
kvm -m 384 -hda jaunty.img

Ha pedig hangot is szeretnénk a virtuális gépben:
kvm -m 384 -hda jaunty.img -soundhw es1370 hda

Így pedig már a frissen telepített, virtuális rendszerünk indul el, amivel bátran kísérletezhetünk. Sőt, ha biztonsági mentést csinálunk a virtuális merevlemezről, akkor ahhoz az állapothoz bármikor visszatérhetünk. Ez talán a legtipikusabb felhasználási módja a virtualizációnak otthoni környezetben. A másik gyakori lehetőség, hogy szükségünk van például egy Apache-ra és MySQL-re ahhoz, hogy egy weboldalt fejlesszünk otthon. Ugyanakkor ezeket a szolgáltatásokat nem jó ötlet egy napi használatban lévő személyes gépre telepíteni: felesleges biztonsági és stabilitási kockázatot jelenthet, és sebezhetőbbé teszi a gépünket a támadásokkal szemben. Erre is tökéletes megoldást kínál a virtualizáció.

Az Ubuntu Servernek létezik olyan telepítési módja, amit kifejezetten virtuális gépekre szánnak. Ezzel egyszerűen, kényelmesen és gyorsan telepíthetünk virtuális kiszolgálókat. Töltsük le az Ubuntu Server változatát, és hozzunk létre a már fent ismertetett módon neki egy virtuális merevlemezt, majd indítsuk el a telepítőt.

kvm -m 384 -hda server.img -boot d -cdrom ubuntu-8.10-server-i386.iso

Ha kiválasztottuk a nyelvet, adjuk meg telepítés módját: ehhez a főmenüben le kell nyomni az F4 billentyűt, és válasszuk a harmadik, “Install a minimal virtual machine” pontot (vagy magyarul “Minimális virtuális gép telepítése”). A telepítést ugyanúgy tudjuk elvégezni, mint bármilyen más kiszolgálóét. Érdemes az általunk igényelt szolgáltatás (például LAMP) mellett egy SSH kiszolgálót is tenni a virtuális gépre, mert nem csak arra jó, hogy egy konzolról “távolról” bejelentkezzünk a gépre, hanem például a Nautilusból is egyszerűen elérhetjük a virtuális gép fájlrendszerét, így például egyszerűen másolgathatunk rá.

A telepítés után a virtuális kiszolgálónknak valószínűleg szeretnénk több portját is elérni: így például szükségünk lehet arra, hogy elérjük a 80-as portot (ahol a gépen futó webkiszolgálót találjuk), vagy a 22-es portot (az SSH-t). Ezt legegyszerűbb port átirányítással tehetjük meg. A következő példában a 80-as TCP portot a számítógépünk 8080-as portjára irányítjuk, míg a 22-es TCP portot a 2222-es portra:

kvm -m 384 -hda server.img -redir tcp:8080::80 -redir tcp:2222::22

Ha telepítettük az előbb a LAMP szervert a gépre, és most beütjük a gazdarendszeren egy böngészőbe a http://127.0.0.1:8080 címet, már meg is kell jelenjen az Apache üdvözlő oldala “It works!”. Ha pedig Nautilusból szeretnénk elérni a virtuális gép fájlrendszerét, annyit kell tennünk, hogy a Helyek menüben a Kapcsolódás kiszolgálóhoz pontot választjuk, a szolgáltatás típusánál kiválasztjuk az SSH-t, szervernek megadjuk a 127.0.0.1-et, portnak a 2222-est, és a felhasználónevet, amit a virtuális gépen használunk. Ez utóbbit akár ki is hagyhatjuk, ha ugyanaz, mint amivel be vagyunk jelentkezve a gazdarendszeren.

Végül pedig nézzük azt az esetet, hogy a virtualizációra azért van szükségünk, mert egy program ősrégi, vagy éppen fejlesztés alatt álló változatára van szükségünk, de nem szeretnénk ezt az éles rendszerünkre telepíteni. Ezesetben a fenti két megoldást fogjuk ügyesen kombinálni. Telepítsünk egy desktop rendszert (amennyiben egy desktop alkalmazásról van szó), majd arra a kívánt programot – vagy ha mondjuk egy régebbi disztribúcióban megtalálható alkalmazásra van szükségünk, akkor azt. Ebből rögtön tudjuk futtatni a kívánt alkalmazást, azonban ilyenkor a program “be van zárva” a virtuális gép képernyőjére: ennél azonban sokkal elegánsabb, ha ugyanúgy fut az asztalunkon, mintha csak a gazdagépen menne. Erre is van megoldás: az SSH X továbbítás.

Telepítsünk a virtuális gépre egy SSH kiszolgálót, ha még eddig nem tettük meg. Ezt például Ubuntu alatt a sudo apt-get install ssh parancs kiadásával tehetjük meg. Majd indítsuk el úgy a virtuális gépet, hogy továbbítjuk a 22-es portot:

kvm -m 384 -hda jaunty.img -redir tcp:2222::22

Így már “kívülről” is el tudjuk érni a virtuális gépünket. Majd indítsuk el a kívánt alkalmazást a saját gépünkről, SSH X továbbítással. Jelen példánkban ez az OpenOffice.org irodai programcsomag lesz, de használhatjuk bármilyen más grafikus felületen futó alkalmazásra, értelemszerűen adaptálva:

ssh -X -p 2222 -l felhasználónév 127.0.0.1 soffice

Ha a felhasználónév megegyezik a gazdarendszeren és a virtuális gépen, akkor a “-l felhasználónév” paramétert akár el is hagyhatjuk. Így pedig máris a munkaasztalunkon fut a virtuális gép, és szinte észre sem vesszük, hogy ez nem a mi rendszerünkhöz tartozik: legfeljebb ha egy fájlt akarunk megnyitni, és nem a saját mappánkat látjuk. A virtuális és valódi gép között az adatcserét pedig a legegyszerűbben Nautilus segítségével, a már fent ismertetett módon tehetjük meg.

Ez csak néhány példa arra, hogy mi mindenre használhatjuk otthoni környezetben a virtualizációt. Mint látható, a technológiának nem csak a hűtött szervertermekben, és a nagyvállalatok szőnyegpadlós, küszöb nélküli irodáiban van létjogosultsága, hanem az otthoni felhasználók számítógépein is: használjuk bátran és fantáziadúsan a virtualizációt!

Címkék: ,

A cikkhez nem lehet hozzászólni.