A perzisztens adatkezelő rendszer tesztelése és demonstrálása a GRID környezetben
A TESZT KÖRNYEZET KIALAKÍTÁSA ........................................................................................................ 2 A TESZT PÉLDA LEÍRÁSA............................................................................................................................... 2 A TESZTHEZ SZÜKSÉGES ELŐKÉSZÜLETEK .......................................................................................... 3 A TESZT FUTTATÁS KÉPERNYŐ KÉPE ...................................................................................................... 4 FÜGGELÉK: A SHELL SCRIPTEK LISTÁJA ............................................................................................... 6
A teszt környezet kialakítása A javasolt megoldás lényege a Globus rendszerben alkalmazott GridFTP protokollban rejlő lehetőségek kihasználása, illetve kipróbálása a párhuzamos feldolgozás kiterjesztésére. A javaslat szerint szerver oldali (párhuzamos) feldolgozás Globus GridFTP szerverének a SITE EXEC nevű utasításával valósítható meg. Ez az utasítás a GridFTP-nek alapul szolgáló wuftpd szerver – az FTP definíciónak megfelelő - eredetileg is implementált utasítása. A teszteléshez tehát egy olyan Globus rendszerre volt szükség, amelyen a GridFTP szerver is installálva van. Ezt a SZTAKI klaszter n0.hpcc.sztaki.hu nevű gépe biztosította. Ugyanakkor szükség volt egy Globus elérési és használati jogosultságokkal rendelkező felhasználóra, aki a javasolt utasításokat, lépéseket végrehajtja. Az egyszerűség kedvéért ez a felhasználó szintén a fenti gép egyik usere volt. Ez a - helyileg máshol levő – user a cpq17.ilab.sztaki.hu nevű gépről ssh program segítségével távoli terminálként jelentkezett be a rendszerbe. A teszt környezet logikai és fizikai felépítése a következő: A logikai felépítés azt tükrözi, hogy a tesztben az egyes folyamatok hogyan kapcsolódnak egymáshoz. (Egy Globus felhasználó a Globus rendszert a GridFTP segítségével éri el.) GRID Globus rendszer GridFTP szerver
GridFTP
Globus User
A fizikai felépítés pedig azt mutatja meg, hogy a teszt során az egyes logikai elemek hol, melyik számítógépen helyezkednek el. (Az egyes számítógépek nevét vastag betű jelöli.)
n0.hpcc.sztaki.hu GridFTP szerver dtb Globus User
ssh
cpq17.ilab.sztaki.hu dtb Linux User
A teszt példa leírása A teszt során olyan szerver oldali feldolgozást póbáltunk ki, amikor a szerverről adat olvasás történik. Ilyenkor arra van lehetőség, hogy a szerveren tárolt adathalmazból a szerveren először kiválogassuk a a számunkra szükséges adatokat, ami után csak a szükséges adatokat kell áthozni a szerverből. Ezt a következő egyszerű példával valósítottuk meg. A szerver oldali adathalmaz egy olyan szöveg fájl, amelynek sorai a természetes számokat tartalmazzák emelkedő sorrendben. Minden sorban csak egy szám szerepel, a sorok száma véges, azaz a számok csak egy adott felső határig növekednek. (Ezeket a fájlokat egy tdgen.sh nevű shell scripttel lehet előállítani, amelyet a függelékben ismertetünk.)
Például az 1024 számot (és sort) tartalmazó td1024.txt nevű fájl felépítése a következő: 1 2 3 . . . 1024 A szerver oldali feldolgozás pedig az adathalmaz bizonyos sorainak kiválasztását jelenti. A feldolgozást végző program szintén egy shell script, amely a paramétereként megadott fájl minden n. sorát gyűjti ki, ahol az n szintén paraméterként adható meg. (Ha az n paraméter hiányzik, akkor minden második sorát gyűjti ki.) Az adathalmaz struktúrájának ismeretében azt lehet mondani, hogy a válogató program az n-nel osztható számokat tartalmazó sorokat gyűjti össze. (A shell script neve tdsel.sh, amelyet szintén a függelékben ismertetünk.) Például a tdsel.sh program egy hívása a következő: ./tdsel.sh td1024.txt 3 A program lefutása után az általa kigyűjtött fájl neve jelenik meg, ahol a fájlnév a megadott paraméterekből generálódik: td1024.txt.out.3 A fenti fájl felépítése a következő: 3 6 9 . . . 1023
A teszthez szükséges előkészületek A teszthez nem kellett önálló Globust telepíteni, elég volt egy felhasználói hozzáférést (user account-ot) biztosítani a SZTAKI klaszteren futó Globus rendszerhez. A felhasználó neve dtb volt. Egy lényeges feladat volt, az úgynevezett feldolgozó program telepítése. Mint a korábbiakból már ismert, a SITE EXEC utasítás - biztonsági okokból - csak egy adott könytárban levő programok futtatását teszi lehetővé. Ebbe a /bin/ftp-exec nevű könyvtárba kellett a fentebb ismertett tdsel.sh nevű programot - a megfelelő jogosultságok megszerzése után – bemásolni. A feldolgozandó adathalmazt pedig a dtb nevű felhasználó saját könyvtárában helyeztük el, mert ehhez fér hozzá.. Mivel a SITE EXEC utasítással indított program root jogosultságokkal
rendelkezik, ezért tetszőleges könyvtárhoz hozzáférhet, ami azt jelenti, a megadott célra tetszőleges felhasználó használhatja. Az eredményt pedig ugyanabba a könyvtárba készíti el, ahol az eredeti (feldolgozandó) fájl volt.
A teszt futtatás képernyő képe A következő szövegben a teszt során a képernyőre kiíródó sorokat más betűtípus jelöli. Az ezzel a betűtípussal (Courier New) írt sorokat egybefüggő szövegként kell elképzelni, amelybe - nem a sor elején kezdődő - magyarázó sorokat szúrtunk be. Bejelentkezés dtb néven a cpq17.ilab.sztaki.hu nevű gépről az n0.hpcc.sztaki.hu nevű gépre. [dtb@cpq17 dtb]$ ssh n0.hpcc.sztaki.hu
[email protected]'s password: Linux n0 2.4.18 #4 SMP Thu May 2 17:04:01 CEST 2002 i686 unknown Last login: Mon Jan 13 14:45:26 2003 from cpq17.ilab.sztaki.hu
A saját könyvtár kilistázása, amelyben látható a td1024.txt nevű feldolgozandó adatfájl, illetve a korábbi futtatások eredményeképpen létrejött td1024.txt.out.2 és td1024.txt.out.8 eredmény. dtb@n0:~$ ls dtb mentes scripts
td1024.txt
td1024.txt.out.2
td1024.txt.out.8
A /bin/ftp-exec könyvtár listája mutatja, hogy a tdsel.sh nevű feldolgozó program a helyén van. dtb@n0:~$ ls /bin/ftp-exec ls tdsel.sh
A dtb nevű felhasználó bejelentkezése a Globus rendszer alá. dtb@n0:~$ grid-proxy-init Your identity: /O=Grid/O=GridLab/CN=Balazs D. Toth Enter GRID pass phrase for this identity: Creating proxy ........................................................ Done Your proxy is valid until Tue Jan 14 22:28:33 2003
A GridFTP szerverrel kapcsolatot teremtő gsincftp nevű FTP kliens program indítása, kapcsolat felvétel a szerverrel. dtb@n0:~$ gsincftp n0 NcFTP 3.0.0 (March 20, 2000) by Mike Gleason (
[email protected]). Connecting to 193.224.187.129... n0.hpcc.sztaki.hu FTP server (GridFTP Server 1.0 [GSI patch v0.5] wu2.6.1(2) Wed Apr 24 13:06:14 CDT 2002) ready. Logging in... User dtb logged in. Logged in to n0.hpcc.sztaki.hu.
A következő sorokban a SITE EXEC utasítás hívása és annak eredménye látható. Az első sorban az “ncftp /home/dtb >“ szövegrész a kliens program promptja, amely után az utasítás látható. A második sort a szerver írja ki a program elindításakor, ami az indítási parancs
pontos mása. A gömbölyű zárójelek közötti szöveget tartalmazó (itt negyedik) sort szintén a szerver irja ki akkor, amikor a program futása befejeződött. A kettő között levő (itt egyetlen) sor(ok) a futtatott program standard outputra írt üzeneteit tartalmazz(a/ák). Két dolgot lehet megfigyelni. Egyrészt a program indításakor a már ismert paramétereket kell megadni, ahol az adathalmaz nevét a teljes elérési úttal célszerű szerepeltetni. Másrészt látható, hogy a program válasza az eredményfájl neve. ncftp /home/dtb > site exec tdsel.sh /home/dtb/td1024.txt 3 tdsel.sh /home/dtb/td1024.txt 3 /home/dtb/td1024.txt.out.3 (end of 'tdsel.sh /home/dtb/td1024.txt 3')
Elköszönés a GridFTP szervertől. ncftp /home/dtb > bye Thank you for using NcFTP. Ask your system administrator to try NcFTPd Server! http://www.ncftp.com
A saját könyvtár listázása annak ellenőrzésére, hogy valóban létrejött-e a várt eredményfájl. dtb@n0:~$ ls dtb scripts mentes td1024.txt
td1024.txt.out.2 td1024.txt.out.3
td1024.txt.out.8
Az eredményfájl tartalmának ellenőrzése a less nevű listázó program segítségével. dtb@n0:~$ less td1024.txt.out.3
A felhasználó kijelentkezése az n0.hpcc.sztaki.hu nevű gépről. dtb@n0:~$ exit logout Connection to n0.hpcc.sztaki.hu closed. [dtb@cpq17 dtb]$
A fenti példából egyetlen dolog hiányzott, az eredményfájlnak a dtb nevű felhasználó gépére való eljuttatása a GridFTP segítségével. Mivel a felhasználó gépe és a szervert futtató gép azonos volt, erre nem volt szükség. A tesztnek egyébként sem az adatok, fájlok másolásának a bemutatása volt a célja, hanem a szerver oldali feldolgozás egy lehetséges megvalósításának kipróbálása.
Függelék: A shell scriptek listája A tdgen.sh nevű shell script listája: #!/bin/bash # Test data generation if [ ! -z $1 ] then file=$1 else file=testdata.txt fi
# Target file name given
if [ ! -z $2 ] then last=$2 else last=65535 fi
# Last number given
echo "\"$file\" is being generated ..." for i in `seq $last` do echo $i done > $file
# The numbers 1-last(65535)
exit 0
A tdsel.sh nevű shell script listája: #!/bin/bash # Test data generation if [ ! -z $1 ] # Target file name given then file=$1 else # At least filename needed echo "Usage: `basename $0` filename [selection]." exit 0 fi if [ ! -z $2 ] then sel=$2 else sel=2 fi
# Last number given
opfile=$file.out.$sel # echo "\"$opfile\" is being generated ..." # Temporarily!!! i=1
while read line do if [ $i -eq $sel ] then echo $line i=1 else let "i=i+1" fi done < $file > $opfile echo
$opfile
exit 0
# Send result's name