Az eddig született AIX-os *PAR cikkek már taglalták az LPAR (logical partitions) és a DLPAR (dynamic logical partitions) kezelést és adminisztrálást. Van azonban még egy harmadik PAR is, amely az előbbieknél magasabb szinten (hardvertől távolabb) képes virtualizációt megvalósítani AIX rendszereken. Ez a WPAR (Workload Partition), mely először az AIX 6.1-es rendszerekben jelent meg, és tisztán szoftveres alapú virtualizációt tesz lehetővé.
Mi is az a WPAR?
A WPAR a Workload Partitioning rövidítése. Gyakorlatilag egy AIX kernelen belül futó OS, ami külön filerendszerrel és userland-del bír, és a gazdarendszertől függetlenül újraindítható. Egyértelműen és kizárólag szoftveres virtualizációs technikáról beszélünk itt. Hasonlóképpen a Solaris zónáihoz, és eltérően az LDOM virtualizációtól, itt is, minden LPAR-t érintő művelet (értem ezalatt a shutdown-t, restart-ot, fájlrendszer-problémák, hasonló) kihat az LPAR-ban futó WPAR-ra is, mivel a gazdarendszer erőforrásaiból „él” a WPAR is.
A WPAR-ok között két típust különböztetünk meg:
– a system WPAR-t
– és az application WPAR-t
Mi a különbség a kettő között? A system WPAR egy önállóan futó virtuális rendszer az LPAR-on belül, saját önálló és/vagy az LPAR-ral megosztott fájlrendszerrel, amelyen belül -mint önálló rendszeren- kedvünkre telepíthetünk alkalmazásokat és kezelhetjük ezt önálló egységként (leállíthatjuk, újraindíthatjuk,stb.).
Ezzel szemben az application WPAR nem egy állandó WPAR. Ő annak függvényében fut és szolgáltat, hogy az alkalmazás, amelyet szolgáltat, fut-e. Ez talán így kicsit nyakatekerten hangzik, egyszerűbb szavakkal élve, az application WPAR egy olyan WPAR, mely egy alkalmazás számára biztosít virtuális környezetet és csakis annak. Tulajdonképpen a kiszolgált alkalmazás futása vagy nem-futása tartja kontroll alatt ezt a típusú WPAR-t. A későbbiekben mindkettőre látunk majd példát, mely talán jobban megvilágítja a különbséget.
WPAR menedzsment
System WPAR
1., WPAR létrehozása. A WPAR létrehozása nem is lehetne egyszerűbb; az mkwpar paranccsal történik.
# mkwpar -n testwpar1
A parancsnak természetesen van még sok kapcsolója, de ennyi a kötelező. Ennek hatására a rendszer elkezd dolgozni és testwpar1 néven létrejön a WPAR-unk.
A WPAR-unk testwpar1 néven el is készült. Azonban nem fut még. Indítsuk is el.
2., WPAR indítása
# startwpar -v testwpar1
Látjuk, hogy a WPAR számára fájlrendszereket mountol fel a parancs, és egy alrendszert indít el, mely szabályos PID-et fog kapni. Ha minden feltétel adott és minden rendben talált az indítási ellenőrzéskor, akkor a fentebbihez hasonló kimenetet fogunk látni.
3., A WPAR állapotának lekérdezése. Erre az lswpar parancsot használjuk, alapértelmezetten egy rövid státuszt mutat, ha kapcsoló nélkül adjuk ki:
# lswpar
Az oszlopokban látjuk a WPAR nevét, státuszát (A=aktív), típusát (S=system), milyen hosztnevet adott neki a rendszer, mely könyvtár alá helyezte az útvonalát. Ha a lswpar parancsnak egy -L kapcsot adunk, akkor egy verbose kimenetet ad vissza, melyben már az erőforrás kiosztás részletes táblázatát is megkapjuk, ugyanígy hálózati információkat, biztonsági beállításokat, stb.
4., WPAR leállítása. A WPAR leállítása a stopwpar paranccsal történik.
# stopwpar -v testwpar1
5., WPAR erőforrás vezérlés. A WPAR-ok erőforrásainak beállítása meglehetősen kidolgozott. A következő erőforrások vezérelhetők:
CPU Shares
CPU Limits
Memory Shares
Memory Limits
Per-Process Virtual Memory Limit
Total Virtual Memory Limit
Total Processes
Total Threads
Total PTYs
Total Large Pages
Max Message Queue IDs
Max Semaphore IDs
Max Shared Memory IDs
Max Pinned Memory
Ezek alapján belátható, hogy finoman állíthatóak a WPAR gazda LPAR-jától nyert erőforrásai, lehetőséget adva ezáltal arra, hogy a gazda LPAR-on futó rendszer erőforrásai ne fogyjanak el. A példa kedvéért állítsunk be két alapvető dolgot, a CPU és memória mennyiséget a WPAR-unknak.
# chwpar -R CPU=0%-30%,30% testwpar1
# chwpar -R shares_CPU=1 testwpar1
# chwpar -R memory=10%-20%,30% testwpar1
Az első parancs a WPAR összes processzére jutó LPAR CPU kihasználtság maximumát adja meg százalékos értékben, minimum, szoftlimit és hardlimit értékekkel. A második parancs az LPAR processzorainak számát adja meg, melyet dedikál a WPAR-nak. Végül a harmadik, hasonlóan az első parancshoz, csak itt a memóriát állítja százalékos arányban. A parancsok kiadása után az lswpar kimenete ehhez lesz hasonló:
6., WPAR hálózatkezelés. Ez tulajdonképpen már a WPAR létrehozásakor is beállítható, de ha nem történt meg, akkor sincs baj, a chwpar paranccsal a későbbiekben is be tudjuk állítani. Mivel itt az LPAR fizikai interfészét használja, szükségünk lesz ennek a nevére is, ami most a mi esetünkben en0.
# chwpar -N interface=en0 address=192.168.132.93 testwpar1
Routing beállítása a WPAR-ban a következőképpen történik:
# chwpar -i -I rtdest=default rtgateway=192.168.132.126 rtinterface=en0 testwpar1
A -i kapcsoló engedélyezi a WPAR specific routingot.
# netstat -rn -@ testwpar1
7., Fájlrendszer hozzáadása a WPAR-hoz. A WPAR-hoz hozzáadott filerendszer lehet:
– kizárólagos
– megosztott filerendszer a gazda LPAR-ral
Példa a kizárólagos filerendszer létrehozására a WPAR-ban:
# crfs -v jfs2 -g rootvg -u mywpartest -A no -a size=100M – /wpars/testwpar1/mytestwpar1
Példa a megosztott filerendszer létrehozására a WPAR-ban:
# crfs -v namefs -d /netbackup -m /wpars/testwpar1/mytestwpar2 -u testwpar1
Vegyük észre, hogy a két típusú filerendszer WPAR-ba integrálása közt két fontos különbség van:
1., a kizárólagos esetén egy teljesen szeparált jfs2 fájlrendszert ajánlunk ki a WPAR-nak, amit akkor hoztunk létre,míg a megosztott fájlrendszer esetén egy az LPAR-on már létező fájlrendszer namefs-ként adunk oda a WPAR-nek
2., a kimeneten látható, hogy megosztott fájlrendszer esetén az LPAR-on és a WPAR-on fájlrendszerméret- és kihasználtság egyezik (pirossal kiemelve).
8., WPAR backup és restore. Ezek is külön paranccsal történnek, logikusan a savewpar és restwpar parancsokkal. Ezek egy komplett WPAR imaget képesek létrehozni ill. visszaállítani, amennyiben szükséges. Itt fontos, hogy a gazda OS verzió nem térhet el, tehát egy 7.1-en elkészített WPAR egy 6.1-es AIX-on sanszosan nem fog működni!!
# savewpar -f /netbackup/testwpar1.bckp testwpar1
9., WPAR törlése.
# rmwpar -F testwpar1
Nyilvánvalóan csak leállított (stopwpar testwpar1) WPAR törölhető!!
10., WPAR console elérés
# clogin testwpar1 -l root
11., Meglevő WPAR konfigurációjának exportja. Természetesen ez a WPAR elkészítésekor is egy -o kapcsolóval és a spec file nevét megadva megtehető, de ha ez kimaradt, és szükségünk lenne a konfiguráció exportjára, akkor a következőképpen megtehető:
# mkwpar -e testwpar1 -o /testwpar1.spec -w
ahol a -w azt mondja meg, hogy NE kreáljon WPAR-t, csak a megadott nevű létezőjének a konfigját írja ki a megadott fájlba. Ezt átszerkesztve, és mkwpar-t használva hozhatunk létre könnyen új WPAR-t:
# mkwpar -a -f /testwpar1.spec -n testwpar2
12., Végül, de nem utolsósorban, azok kedvéért, akik nem szeretnek sokat gépelni, viszont szeretik a menüs szerkezetű smitty-t:
# smitty wpar
Itt a már ismert smitty felületen hozhatunk létre, és módosíthatunk WPAR-okat.
Application WPAR
Az application WPAR-ok bizonyos szemponból egyszerűbbek, mint a system WPAR-ok. Egyetlen jól felparaméterezett parancs létrehozza, elindítja, beállítja a futásidejű jellemzőket, majd ha az ebben a WPAR-ban futó alkalmazás végrehajtódott, a WPAR leáll, és futásidőben el is távolítja magát.
# wparexec -n templs1 /usr/bin/ls
A fentebbi application WPAR mindössze egy ls parancsot futtat. Ám a kimenetekből jól látható, hogy közben mi minden történik. Villámgyorsan foglal erőforrást egy ideiglenes WPAR számára, mountolja a fájlrendszereit, elindítja, végrehajtja az ls parancsot, majd megsemmisíti az ideiglenes WPAR-t. Az lswpar kimenetnél látható, hogy itt a típus A, azaz Application WPAR.
Fontos még tudnunk, hogy AIX 7.1 verzójában a WPAR-ok verzószámmal ellátott formája is megjelent (Versioned WPAR), mely lehetővé teszi, hogy AIX 7.1 LPAR-on, WPAR-ként 5.1 ill. 5.2-es verziójú AIX-et futtassunk!
A WPAR lehetővé teszi számunkra, hogy futásidőben hozzáadjunk vagy elvegyünk különböző, a gazda LPAR-on levő eszközöket, úgymint:
– clone
– pseudo (fe: /dev/pty10)
– adapter (fe: fcs0)
– disk (fe: hdisk5)
– cdrom
– tape
Ezeket futásidőben (tehát a WPAR leállítása nélkül) a következő módon adhatjuk hozzá:
# chwpar -D devname=hdisk4 devtype=disk testwpar1
Ezután a már szokott módon felismertetjük a # cfgmgr paranccsal a WPAR-on belül, és meg is fog jelenni:
Ha létrehozunk egy filerendszert ebből a VG-ből kivágva, akkor látni fogjuk, hogy ez már nem mint Global fájlrendszer jelenik meg, hanem csakúgy, mint az LPAR esetében, fizikai eszközként ill. logikai kötetként:
Illetve elvenni (abban az esetben, ha nincs használatban, tehát értelemszerűen ezesetben a VG-t varyoff-oljuk ill. exportáljuk):
# chwpar -K -F -D devname=hdisk4 testwpar1
Összegzés
Aki már látott Solaris zónát, annak nem lesz nehéz megszokni az AIX WPAR-ok menedzsmentjét sem. A WPAR-ok számomra még a zónák konfigurációjánál is könnyedebbnek, egyszerűbbnek hatottak, szívesen bíbelődtem vele tesztkörnyezetben. Az erőforrás kontrollja és kiosztása pedig talán még kifinomultabb, akárcsak az ellenőrző parancsai. Egy érdekes és hatékonynak látszó virtualizációs technikát sikerült ebben megismernem.