Már rengeteg írás szól a Veritas Volume Manager-ről (VxVM) illetve a Veritas Cluster Server-ről (VCS). Rengeteg ügyfél, főleg fontos, és kiemelt ügyfél használja ezeket a termékeket. Nem kívánom részletesebben bemutatni őket, a már elérhető cikkek megteszik ezt helyettem. Viszont van egy olyan szolgáltatás, amit az eddig bemutatott cikkek nem veséztem ki. Viszont rákaptak az ügyfelek a használatára. Ez pedig a Cluster filsystem.
Mire jó? Mire nem?
Fontos, hogy a Veritas Storage Foundation Cluster File System (SFCFS) nem egy külön termék, hanem a Symantec Storage Foundation része. Amit vagy használunk vagy nem. Eddig ugye nem tettük.
A Cluster Filesystem annyi többlet tudással ruház fel a rendszerünket, hogy a shared disk-ekből képzett Veritas Volume-kat, egyszerre több helyen is tudjuk mountolni egy azon időben. Ezáltal párhuzamosan lehet használni az adott filesystem-et mindkét gépen. A konkurens műveleteket, lock-olást mind-mind a Veritas Cluster fogja lekezelni.
Ez hasznos lehet akkor, ha két alkalmazást futtatunk a két node-n, és Veritas Cluster Filesystem segítségével akarjuk megoldani, hogy mindkét alkalmazás számára ugyan azok az adatok legyenek elérhetőek. Ha az egyik változtat valamit, az a változtatás a másik alkalmazás számára is azonnal meg fog jelenni.
Másik hasznos felhasználása, hogy ezáltal a Disk Group, Volume, Mount resource-k lehetnek paralel üzemmódban. Így egy esetleges alkalmazás failover esetében nem kell kivárnunk amíg ezek a resource-k is switchelnek. Csupán az alkalmazás és hálózat specifikus resource switch-eket.
Amit fontos kihangsúlyozni, hogy a Veritas Cluster Filesystem semmilyen adat replikációt nem hajt végre. Tehát minden node számára közösen elérhető diskek tartalmát engedi használni, méghozzá az összes node számára párhuzamosan. Amennyiben a diskek nem lesznek elérhetőek a node-k számára, úgy hiába a Veritas Cluster Filesystem, nem lesz elérhető az adat.
Előkészület és előfeltételek
Én a továbbiakban két virtuális Solaris 10-et fogok használni. Node-a és Node-b lesz a nevük. Mindketten látnak egy SHARED disket. Ahhoz, hogy Veritas Volume Managerrel létrehozott volume-ket és Veritas Filerendszereket Veritas Cluster Filesystem-ként használjunk, ahhoz szükség lesz a Veritas Cluster-re is. Tehát ha akarjuk, ha nem a Cluster software-t is fel kell tennünk. Ehhez természetesen csak a jól ismert Storage Foundation installert kell letöltenünk:
Indítsuk el a telepítőt, és a már jól ismert Veritas Volume Manager és Veritas Cluster telepítő lépésen túl tegyük a következő extra dolgot.
A következő csomagokat fogja feltenni:
Konfigurálás
A telepítés után gyakorlatilag semmink sem lesz. Ezért érdemes a következő parancsot futtatni:
# /opt/VRTS/install/installsfcfsha601 -configure
A konfiguráció sok alap cluster paramétert fog kérdezni. I/O Fencing, cluster neve, heartbeat, stb. Ezek a sima Veritas Cluster Server beállításaival egyeznek meg, külön nem térnék ki rá.
A végén egy ilyet kell kapnunk:
Ezek után a következő dolgokat kell látnunk:
# hastatus -sum
# hagrp -resources cvm
Ahogy látszik a Cluster Filesystem-hez szükséges három Cluster komponens automatikusan létrejön. Ez a CVM_Clus, CVM_vxconfig, vxfsckd. Ezek lesznek flelősek a cluster filesystem működésért.
Ahogy látszik a CVM Service Group automatikusan ONLINE állapotban van. Tehát a kerete az egész szolgáltatásnak elérhetőnek kell lennie.
A következő parancsokkal győződhetünk meg róla.
# cfscluster status
# vxdctl -c mode
# vxclustadm nidmap
# vxclustadm nodestate
Ahogy látszik a CFS-nek van egy MASTER illetve SLAVE tagjai. A Master tehát az irányító. Ez viszont csak egy ROLA, egy szerepkör. A Cluster többek között azért is felelős a Cluster Filesystem felett, hogy amennyiben a MASTER hibásodna meg, akkor a MASTER szerepkört automatikusan átadja egy SLAVE-nek.
Volume készítés és CFS definiálása
A már ismert és tradicionális módon hozzunk létre egy disk group-ot, és abban egyetlen volume-t. Én ezt most egyetlen teszt disk-el, illetve volume-vel fogom megoldani.
# vxdisk -e -o alldgs list
# vxdisksetup -i disk_0
# vxdg -s init DGtest disk_0
# vxassist -g DGtest make Vtest 100m
# mkfs -F vxfs /dev/vx/rdsk/DGtest/Vtest
Fontos! Hogy a Disk Group inicializálásánál ne felejtsük el a -s kapcsolót! Ez fogja SHARED-é tenni.
Most hozzunk létre egy új Service Group-ot a Veritas Cluster-en belül.
# haconf -makerw
# hagrp -add SGtestfs
# hagrp -modify SGtestfs Parallel 1
# hagrp -modify SGtestfs SystemList node-a 0 node-b 1
Ezze telhát csak egy üres Service Groupot csináltunk a két node-ra, és paralel működésre állítottuk be.
Most jön a csoda parancs.
Először is definiáljuk SHARED-ként a Disk Group-ot.
# cfsdgadm add DGtest all=sw
# cfsdgadm display
# cfsmntadm add DGtest Vtest /test SGtestfs all=cluster
Sajnos egy BUG miatt amennyiben ONLINE-ba akarnánk hozni hibát fogunk kapni.
2013/03/29 13:53:46 VCS ERROR V-16-20007-1006 (node-a) CVMVolDg:cvmvoldg1:online:Function cvmvoldg_change_dgactv called with wrong args
Ennek a kikerülésére kell a következőt tenni:
# haconf -makerw
# hares -local cvmvoldg1 CVMActivation
# hares -modify cvmvoldg1 CVMActivation sw -sys node-a
# hares -modify cvmvoldg1 CVMActivation sw -sys node-b
# haconf -dump -makero
Ezek után a következő parancs segítségével mountolható is lesz a filesystem.
# cfsmount /test
És természetesen ezzel tudunk umountolni is.
# cfsumount /test
Ahogy látszik, automatikusan mindkét node-n mountolódott a filerendszer. Egyszerre, és párhuzamosan.
node-a# df -h
node-b# df -h
Nem varázslat!
Persze fontos, ha látjuk, hogy ezek az CFS-el kezdődő parancsok, nem csinálnak mást, mint VCS resource-kat kongfigurálnak, és manipulálnak. Nézzük is meg, milyen resource groupok, és resourcek léteznek.
# hagrp -list
# hagrp -resources SGtestfs
# hagrp -resources cvm
Ahogy látszik automatikusan létrejöttek, és beállítódtak a resourcek, amik a CFS működését fogják biztosítani. Akár kézzel is megtehettük volna ezeket a lépéseket. Viszont a CFS egy kényelmes parancskészletet nyújt számunkra.
HA NFS
Ha tárolásról beszélünk, akkor az NFS biztos, hogy szóba fog kerülni. Kicsit feleslegesnek érzem, de a CFS keretrendszerével együtt NFS megosztást is tudunk definiálni. (csak zárójelesen jegyzem meg, hogy a CFS-t megkerülve a jól ismert NFS resource-val ugyan azt érhetjük el. Illetve hogy a CFS NFS része is ugyan olyan resource-kat fog létrehozni.)
Ahogy látszik, most csak az előzőekben legyártott TEST nevű volume érhető el.
# cfsmntadm display
A CFS által definiált HA NFS service-hez két volume-re lesz szükség. Első ami a meta datokat, lock, és egyéb ilyen NFS service számára fontos adatokat fogja tartalmazni. A másik pedig tényleges adatokat fogja tartalmazni.
# vxassist -g DGtest make Vmeta 100m
# mkfs -F vxfs /dev/vx/rdsk/DGtest/Vmeta
# vxassist -g DGtest make Vshare 500m
# mkfs -F vxfs /dev/vx/rdsk/DGtest/Vshare
Egy 100MB mértű Vmeta volume-t hoztam létre, illetve egy 500MB-os Vshare volume-t. Most konfiguráljuk be META adatokként ezt a Vmeta Volume-t.
# cfsshare config -p nfs DGtest Vmeta /nfs_meta
Természetesen itt is egyedi Serive Group-ok, és resource-k jönnek létre.
# hagrp -list
# hagrp -resources cfsnfssg
# hagrp -resources cfsnfssg_dummy
Ezek után definiáljuk az adat volume-t.
# cfsshare add -p nfs -N „rw,no_root_squashnfs” DGtest Vshare /share rw all=rw
Ennek a parancsnak a hatására létrejön a share és a megadott opciókkal meg is lesz osztva. Most már csak egy cluster IP címról kell gondoskodnunk.
# cfsshare addvip e1000g0 192.168.132.42 255.255.255.128
Ennek a hatására, már is egy teljesen működő HA NFS rendszert építettünk ki.
Összegzés
A CFS egy nagyon jó dolog. Nem forradalmi, vagy világmegváltó, de nagyon hasznos kiegészítése a már megismert termékeknek. Számomra kicsit csalódás is volt, mert a tradicinonális Cluster konfigurációt elrejti előlünk, és rejtéjes módon egyedi parancsok hatására jön létre minden féle Service Group és resource. Ezeket ezek után már nem érdemes Cluster oldalról módosítani, csak az erre rendszeresített parancsok segítségével.
Már pedig a fent bemutatott példák hatására rendeget dolog jön létre a Cluster-ben. Ha valaki nem ismeri a CFS-t, és tradicionális módszerekkel kezdi el módosítani, annak katasztrofális eredményei lehetnek.
Ennek ellenére, amennyiben ilyen megoldás szükségeltetik, a bemutatott parancsok segítségével, és persze alap veritasos ismeretek birtokában könnyen elsajátítható a használata.
Latom, nem volt haszontalan az egyutt toltott nehany ora :)
Mindig elmeny toled tanulni! :)
Ennek ellenere, nem akartam plagiumba futni. Igy Solaris 10-en, illetve teljesen 0rol csinaltam az install-t.
Ennek ellenere a tematika es a hatteranyag teljes mertekben Teged minosit! :)
Csak nekem szurja a szemem az a Bad String mindenutt? Kicsit olyan mintha ez az egesz meg nem lenne annyira kidolgozott Symantec bacsiek altal.
Teljesen igazad van! Eleg bugos. Ennek ellenere a BAD string-ek csak VMWARE emlulacional jottek elo. Normal produktiv gepek, es SAN/NAS diskek eseteben nem jelentkeznek. Ezert nem szantam ra kulon magyarazatot. Ha Ti probalkoztok valoszinuleg nem fog elojonni.
Viszont, ahogy latszik, sajna egy PERL script bugja miatt kell elszenvedni ezt a hibauzenetet:
2013/03/29 13:53:46 VCS ERROR V-16-20007-1006 (node-a) CVMVolDg:cvmvoldg1:online:Function cvmvoldg_change_dgactv called with wrong args
Bizom benne ez hamarosan javitva lesz. Ennek ellenere, el kell ismernem. Ez a verzio szornyen bugos. Ami azert szegyen, mert ez a hiba az 5.1-es verzioban is megvolt.
Hat a perl frissites okozott mar meglepetest HACMPnel is meg IBM-es idomben.:D
Ettol fuggetlenul ez egy ujabb hasznos cikk szamomra szoval koszi erte.