Duomenų valdymas
Kaip išsaugoti ir pasiimti didelės apimties failus. “Data Managemen” paslauga yra naudojamaduomenų siuntimui, išdėstymui ir pasiekimui ( accesing) Ji reikalinga tam, kad duomenys, kurie reikalingi skaičiavimams ar yra gaunami skaičiavimo metu būtų išsaugoti , t Kaip išsaugoti ir pasiimti didelės apimties failus. gLite failai vadinami skirtingais vardais tokiais kaip: Grid Unique IDentifier (GUID), Logical File Name (LFN), Storage URL (SURL) Transport URL (TURL). Indetifikuoja failus nepriklausomai nuo jų padėties failo Kur failas fiziškai yra išsidėstęs ir kaip ją pasiekti
gLite failų vardų katalogas: Loginiai failų vardai (Logical File Name (LFN)) Alias sukuriamas naudotojo tam, kad aprašyti kai kuriuos duomenis turi formą: lfn:/<bet koks pavadinimas> pvz.: “lfn:/grid/balticgrid/user2/file2.dat” Globally Unique Identifier (GUID) Mašinos “skaitomas” tam tikrų duomenų (failų)unikalus numeris: guid:<36_bytes_unique_string> pvz.“guid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6”
URL (SURL) ( bylos pavadinimas (PFN) ) ”Fizinis” duomenų išsidėstymas saugojimo elemente. Formatas: <sfn|srm>://<SE_hostname>/<some_string> Pvz.:“srm://dpm01.grid.etf.rtu.lv/dpm/grid.etf.rtu.lv/home/balticgrid/generated/2009-08- 20/file82042439-fe94-4cac” - (SRM) “sfn://tbed0101.cern.ch/data/balticgrid/file1” - (Classic SE) Siuntimo (TRANSPORT) URL (TURL) Byla, kurią skaito ir interpretuoja SE formatas:<protocol>://<some_string> Pvz.: “ rfio://wn06.grid.etf.rtu.lv//data/balticgrid/2009-08- 20/file82042439-fe94-4cac-a839-0652e79b677f.406492.0” or „gsiftp://wn06.grid.etf.rtu.lv/wn06.grid.etf.rtu.lv:/data/balticgrid/200 9-08-20/file82042439-fe94-4cac-a839-0652e79b677f.406492.0”
Sąsajos, sąryšiai tarp bylų LFNs, GUIDs ir SURLs yra saugomi “ File Catalogue”, o pačios bylos yra išsaugomos Saugojimo elemente, kuriame naudotojas gali sudėti savo bylas, kurias jis naudos vėliau.
“Klientų įrankiai” “ Data Management” įrankiais, naudotojas siunčia užduotį ir ją pasiima iš grid'o, bylos “replikuoja” tarp saugojimo elemento, sąveikaujama su “File Catalogue” ir panašiai. Aukščiausio lygmens “data management” įrankiai yra nepasiekiami ir nematomi eiliniams naudotojams. Tai SE, siuntimo ir valdymo įrankiai. Žemesnio lygmens įrankiai yra pasiekiami, bet juos gali naudoti tik ekspertai. Naudotojas bylų katalogą pasiekia panaudodamas lcg_util. Bylų valdymui gLite yra dviejų tipo komandos: "lfc-*" komandos priskiriamos LFC katalogams, kurie valdo loginius failus (lfns), bei išdėsto logines bylas į failus saugojimo URLs. LFC pati savaime nėra saugojimo sistema. Tai duomenų bazė, kuri išsaugo naudotojo failų pėdsakus duomenų bazėje. "lcg-*" komandomis kopijuojamos bylos iš ir į SE bei atgaminami failai. Lcg- komandos naudojamos tiek saugojimo elemente, tiek katalogų serveryje.
Įsitikinimui, kad “Katalogų paslaugos” veikia korektiškai, naudojami keli kintamieji. Tikrinama: [elena@grid ~]$ echo $LCG_GFAL_INFOSYS; bdii.mif.vu.lt:2170 [elena@grid ~]$ echo $LCG_CATALOG_TYPE [elena@grid ~]$ echo $LFC_HOST Jai katalogai tušti, jie sukuriami tokiu būdu: export LCG_GFAL_INFOSYS= ( Katalogo pavadinimas) Pvz.: bdii.grid.etf.rtu.lv:2170 export LCG_CATALOG_TYPE=lfc export LFC_HOST=lfc.balticgrid.org Pagal nutylėjimą - LCG bylų katalogas (LFC) sukurtas balticgrid VO yra lfc.balticgrid.org, bet naudotojas gali sukurti bylų katalogą ant bet kurio išsirinkto Grid saito, pvz.:grid3.mif.vu.lt Gamess VO bylų katalogų pavadinimus galima rasti komanda: lcg-infosites --vo gamess lfc
Kai pagal nutylėjimą bylų katalogai nėra randami, išsaugojama naudojamant “environment variable” panaudojus komandą LFC_HOST, pvz.: [elena@grid ~]$ export LFC_HOST=lfc.balticgrid.org Kad nereikėtų aukščiau minimos komandos kartoti kiekvieną kartą, šis kintamasis gali būti įtrauktas į .bashrc bylą, kuri susikuria kiekvieną kartą, kai tik prisijungiate prie UI.
# User specific aliases and functions # Source global definitions Susikuria savaime .bashrc: Koreguotas .bashrc: # .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi #export environment variables for lfc/lcg #export LFC_HOST=lfc.balticgrid.org #export LCG_CATALOG_TYPE=lfc #alias rsh=/usr/bin/ssh #export DDI_RSH=ssh #eval `/usr/bin/ssh-agent` >/dev/null #/usr/bin/ssh-add # .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi #alias rsh=/usr/bin/ssh #export DDI_RSH=ssh #eval `/usr/bin/ssh-agent` >/dev/null #/usr/bin/ssh-add
LFC bylų struktūra kiekvienai VO yra sekanti: Saugojimo elementas gali būti priskirtas tik vienai arba kelioms skirtingoms VO. Kuris SE, kaip ir katalogas bus naudojamas priklauso nuo to, kuriai VO esate priskirtas. . LFC bylų struktūra kiekvienai VO yra sekanti: /grid ( aukštesnė direktorija /grid/balticgrid ( VO direktorija žemiau). Direktorija peržiūrima : lfc-ls -l /grid/balticgrid Turime direktorijos info: drwxrwxr-x 1 318 101 0 Mar 16 10:27 BGC2011 drwxrwxr-x 23 149 101 0 Mar 04 11:01 BGCC2010 drwxrwxr-x 43 149 101 0 Mar 16 11:05 BGCC2011 drwxrwxr-x 31 149 101 0 Mar 01 16:25 GTLA2009
Sukurti direktoriją bylų kataloge Tam, kad bylos būtų įrašytos SE, reikia susikurti savo direktoriją failų kataloge. Pagrindinis bruožas – visų bylų pavadinimai turi pradžią: /grid/<vo>/ lfc-mkdir –p /grid/<vo>/<user name> Pvz.: [and63@ui ~]$ lfc-mkdir -p /grid/balticgrid/$USER [elena@grid~]$ lfc-mkdir -p /grid/balticgrid/$Elena Patikrinama, ar direktorija sukurta: [elena@grid ~]$ lfc-ls -l /grid/balticgrid drwxrwxr-x 155 root 101 0 Mar 16 10:27 balticgrid drwxrwxr-x 3 root 108 0 Mar 13 2007 biit drwxrwxr-x 0 root 102 0 Sep 01 2006 estonia
Bylos patalpinimas į katalogą Pratimas: [elena@grid ~]$ echo " Labas .txt ieskau SE " > text.txt [elena@grid ~]$ cat text.txt
Patikrinimas, kuriuos SE galima naudoti Kurie SE yra priskiriami VO, randama komanda: lcg-infosites --vo balticgrid se Turėtų būti: Avail Space(Kb) Used Space(Kb) Type SEs ---------------------------------------------------------- 9845558 723358 n.a se01.grid.lumii.lv 17969404650 59948818292 n.a io.hep.kbfi.ee 6878060348 494410857 n.a se.basnet.by Yra: [elena@grid ~]$ lcg-infosites --vo gamess se Avail Space(Kb) Used Space(Kb) Type SEs ---------------------------------------------------------- [elena@grid ~]$ lcg-infosites --vo balticgrid se :) :) :) :) :) :)
Bylos išdėstymas SE 1. Susikuriama direktorija: /gird/balticgrid/$elena 2. Komanda llcg copy-register byla iš UI kopijuojama į SE ir registeruojama bylų kataloge. Komandos turi būti įrašytos vienoje eilutėje: lcg-cr -d <SE_name> -l lfn:/grid/<vo>/<user_name>/<any_string_you_want> --vo balticgrid file:/< MySrcFilePath > Kur : SE_name - SE pavadinimas, išrenkamas iš sąrašo, kurį pateikiamas naudojant lcg-infosites –vo gamess se. lfn – loginis failo pavadinimas. Privalo turėti pavidalą: lfn:/grid/<specified VO>/<user name> --vo = Virtuali Organizacija. MySrcFilePath - failas, kurį norėtumėte iš UI kopijuoti į SE. Jis turi turėti pavidalą: file:AbsolutePath on UI machine Kai nėra nurodyta vieta ( SE_name praleistas), failas yra išdėstomas bet kuriame Balticgrid saugojimo elemente.
Pavyzdys: [and63@ui ~]$ lcg-cr -d dpm01.grid.etf.rtu.lv -l lfn:/grid/balticgrid/and63/text123.txt --vo balticgrid file:/home/and63/text123.txt guid:44971a08-9acc-4215-9116-7768ff551597 Komanda sugrąžina GUID. Kai norima pamatyti savo direktorijos sudėtį, naudojama: lfc-ls /grid/balticgrid/<username> [and63@ui ~]$ lfc-ls -l /grid/balticgrid/and63 -rw-rw-r-- 1 254 101 58 Aug 20 12:57 text123.txt
Bylų replikavimas Kartais reikia bylas išsaugoti keliuose SE ( bylas replikuojame). Tokiu būdu failus išdėstome arčiau skaičiavimo elemento, tad neprarandame laiko dėl failų atsisiuntimo. Byla gali būti išsaugota keliuose SE, tad pradėjus skaičiavimus, duomenys bus paimti iš SE, kuris yra arčiausiai. Be to išvengiame problemų susijusių su SE. . Kai byla yra išsaugota viename SE, jis gali būti replikuojamas į kitą SE komanda: lcg-rep -vo <VO> -d <dest_host> guid:<the_unique_string> Šiuo atveju reikalingas guid bylos, kuri yra išdėstoma. lcg-lg (list GUID) pateiks guid susijusias su specifiniais lfn ar surl: lcg-lg --vo <VO> lfn:/grid/<VO>/<username>/<filename>
Pavyzdys: 1. Išsiunčiame failą į SE [and63@ui ~]$ lcg-lg --vo balticgrid lfn:/grid/balticgrid/and63/text123.txt 2. Gauname jo GUID guid:44971a08-9acc-4215-9116-7768ff551597 3. Bylą replikuojame: [and63@ui ~]$ lcg-rep --vo balticgrid -d se02.grid.lumii.lv guid:44971a08-9acc-4215-9116-7768ff551597 4. Patikriname ar byla replikavosi lcg-lr --vo balticgrid <guid:> or <lfn:/grid/balticgrid/username/<file_name>> Pvz.: lcg-lr --vo balticgrid lfn:/grid/balticgrid/and63/text123.txt Atsako pavidalas: [and63@ui ~] srm://dpm01.grid.etf.rtu.lv/dpm/grid.etf.rtu.lv/home/balticgrid/generated/2009-08-20/filecc6fa74e-171f-43ae-ad2c-bd42258657d6 srm://se02.grid.lumii.lv/dpm/grid.lumii.lv/home/balticgrid/generated/2009-08-20/file93c8e76c-6fc8-41b8-84fc-5b784fbeea47 Pastaba: Vienam GUID, gali būti tik viena kopija viename SE. Jei lcg-rep naudojama norint išdėstyti bylą SE, kuriame ji jau yra – byla bus įrašyta, bet nauja byla neatsiras. ( Keisti pavadinimus)t
Bylų paėmimas iš SE Naudojama komanda: lcg-cp --vo balticgrid lfn:/grid/<vo>/<username>/<filename> file:/home/<username>/<local_filename> Pavyzdys: [and63@ui ~]$ lcg-cp --vo balticgrid lfn:/grid/balticgrid/and63/text123.txt file:/home/and63/local_text123.txt Patikrinama, ar failas atsirado ant UI ls –l komanda. Ar failai sutampa, tikrinama su cat komanda.
Bylų pašalinimas iš SE Bylos, kurios yra Seir registruotos bylų kataloge gali būti ištrintos sekančiai: lcg-del -a -v --vo balticgrid lfn:/grid/<vo>/<username>/<filename> Kai SURL yra pateikiamas kaip argumentas – ištrinama tam tikra kopija, Kai vietoj SURL yra pateikiamas LFN ar GUID, turi būti naudojama -s <SE>, kad būtų nurodyta, iš kurio SE byla turi būti ištrinta. Kai naudojama -a visos kopijos iš visų SE bus ištrintos ir išregistruotos. lcg-lr komandos panaudojimas ištrinant visas kopijas: [and63@ui ~]$ lcg-lr --vo balticgrid lfn:/grid/balticgrid/and63/text123.txt srm://dpm01.grid.etf.rtu.lv/dpm/grid.etf.rtu.lv/home/balticgrid/generated/2009-08-20/filecc6fa74e-171f-43ae-ad2c-bd42258657d6 srm://se02.grid.lumii.lv/dpm/grid.lumii.lv/home/balticgrid/generated/2009-08-20/file93c8e76c-6fc8-41b8-84fc-5b784fbeea47
Ištrinti norimą bylą su SURL : [and63@ui ~]$ lcg-del --vo balticgrid srm://se02.grid.lumii.lv/dpm/grid.lumii.lv/home/balticgrid/generated/2009-08-20/file93c8e76c-6fc8-41b8-84fc-5b784fbeea47 Patikriname, ar kopija ištrinta : [and63@ui ~]$ lcg-lr --vo balticgrid lfn:/grid/balticgrid/and63/text123.txt srm://dpm01.grid.etf.rtu.lv/dpm/grid.etf.rtu.lv/home/balticgrid/generated/2009-08-20/filecc6fa74e-171f-43ae-ad2c-bd42258657d6 Po patikrinimo, matyti, liko viena kopija Ištrinti visas kopijas ir išsiregistruoti, pavyzdžiui: [and63@ui ~]$ lcg-del --vo balticgrid –a lfn:/grid/balticgrid/and63/text123.txt Patikrinimas: [LFC] lfc.balticgrid.org: /grid/balticgrid/and63/text123.txt: No such file or directory lcg_lr: No such file or directory Paskutinė pastaba nurodo, kad guid daugiau nėra registruotas kataloge – viskas ištrinta.
“Environment” kintamieji Supaprastiną lfc-*, and lcg-* komandų naudojimą: export LCG_GFAL_VO=balticgrid – nereikia naudoti --vo kiekvieną kartą export LFC_HOME=/grid/balticgrid/$USER/ – nereikia nurodyti viso pavadinimo, kur byla įrašoma export VO_BALTICGRID_DEFAULT_SE=<SE_name> - nurodomas SE, kuris bus randamas pagal nutylėjimą, tad jo nereikės nurodyti kiekvieną kartą. Pavyzdžiui: [and63@ui ~]$ export LCG_GFAL_VO=balticgrid [and63@ui ~]$ export LFC_HOME=/grid/balticgrid/$USER/ Tada naudojamos trumpesnės komandos (be –vo ir nepilnu lfn): [and63@ui ~]$ lcg-cr -d dpm01.grid.etf.rtu.lv -l lfn:text123.txt file:/home/and63/text123.txt Kas yra direktorijoje, nustatoma: [and63@ui ~]$ lfc-ls -l -rw-rw-r-- 1 254 101 58 Aug 20 16:18 text123.txt Nereikia rašyti pilno lfn.
Paprastesnio kopijavimo į SE pavyzdžiai.: [and63@ui ~]$ lcg-lr lfn:text123.txt srm://dpm01.grid.etf.rtu.lv/dpm/grid.etf.rtu.lv/home/balticgrid/generated/2009-08-20/file82042439-fe94-4cac-a839-0652e79b677f Jei duomenys nusiunčiame į SE, kuris yra pasirenkamas ( nustatymas: “pasirink pagal nutylėjimą”) komanda sutrumpėja: [and63@ui ~]$ export VO_BALTICGRID_DEFAULT_SE=dpm01.grid.etf.rtu.lv Nenurodant kur keliauja uždavinys: [and63@ui ~]$ lcg-cr -l lfn:text123_second.txt file:/home/and63/text123.txt guid:ee27fdb3-a010-461c-bb09-2d5a05698956 Kai nenorima komandų “export LCG_GFAL_VO=balticgrid ir export LFC_HOME=/grid/balticgrid/$USER/ naudoti kiekvieną kartą, jos yra įrašomos į .baschr bylą:
# .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi #export environment variables for lfc/lcg #export LFC_HOST=lfc.balticgrid.org #export LCG_CATALOG_TYPE=lfc #export LOG_GFAL_VO=balticgrid #export LFC_HOME/grid/balticgrid/$USEr #export VO_BALTICGRID_DEFAULT_SE=( SE pavadinimas) #alias rsh=/usr/bin/ssh #export DDI_RSH=ssh #eval `/usr/bin/ssh-agent` >/dev/null #/usr/bin/ssh-add
Susikurti VOMS prroxy [and63@ui ~]$ voms-proxy-init --voms balticgrid Susikurti direktoriją sclab_data: [and63@ui ~]$ mkdir scilab_data Dirbsime joje Sudaryti reikiamus gamess failus. Pvz: scilab.jdl, scilab.sh and scilab.inp
File scilab.sh is wrapper which call Scilab software and running on it scilab.sci after the completion of job results is transmitted to SE. Below is scilab.sh file with full description. echo "Job started `date`" #when task start (it not mandatory) #If you want that job output after job execution #is transmitted to SE (which is strongly recommended) #very important is to indicate the Worker Node (WN) #where is your file catalogue. #It is done set up this environment variable export LFC_HOST=lfc.balticgrid.org # Start Scilab. # Program on WN can be in different directories with different names # so we use VO_BALTICGRID_SW_DIR variable which is common approach # calling and running certain program on remotely WN. $VO_BALTICGRID_SW_DIR/scilab-4.0/bin/scilab -f scilab.sci -nb -nwni #Copy output to storage (SE). #Results are copied(job output file) to file catalogue directory - #scilab_results lcg-cr -v --vo balticgrid -d dpm01.grid.etf.rtu.lv –l lfn:/grid/balticgrid/<username>/scilab_results results echo "Job ended `date`" #when task end
The same scillab.sh file with my username and without any comments are given bellow: echo "Job started `date`" export LFC_HOST=lfc.balticgrid.org $VO_BALTICGRID_SW_DIR/scilab-4.0/bin/scilab -f scilab.sci -nb -nwni ls -la lcg-cr -v --vo balticgrid -d dpm01.grid.etf.rtu.lv –l lfn:/grid/balticgrid/and63/scilab_results results echo "Job ended `date`"
Create a job description file named scilab.jdl with this content: Type = "Job"; JobType = "Normal"; VirtualOrganisation = "balticgrid"; Executable = "scilab.sh"; StdOutput = "scilab.out"; StdError = "scilab.err"; InputSandbox={"scilab.sci","scilab.sh"}; OutputSandbox = {"scilab.err","scilab.out"}; Requirements = (other.GlueCEPolicyMaxWallClockTime > 30 && Member("VO-balticgrid-scilab-4.0", other.GlueHostApplicationSoftwareRunTimeEnvironment)); If the job duration is significant, it is strongly advised to put a requirement on the wall clock time (expressed in minutes), needed for the job to complete. For this example requirements mean that the job could need up to 30 min execution time and also Grid site Scilab software installed. Grid sites support different job waiting queues on the CE therefore if user doesn’t specify approximate time for job execution job can get inappropriate queue. For example, short time job (some hours) gets queued long time queue where one job execution takes long period (one day or more), short time job may have to wait while long jobs executes. Or, if long time job doesn’t’ have requirement on the time it can get short time queue by default where it will be aborted after exceeding time limits.. NOTE If a job exceeds the time limits of the queue where it is running, it will be killed by the batch system. Necessary job files could be created with any text editor like pico or vi utility or create it on your local computer and copy it to UI. At the end of this step your scilab_data directory should contain these three files:
Necessary job files could be created with any text editor like pico or vi utility or create it on your local computer and copy it to UI. At the end of this step your scilab_data directory should contain these three files: [and63@ui scilab_data]$ ls -l Total 12 -rw-r--r-- 1 and63 users 358 Oct 29 18:59 scilab.jdl -rw-r--r-- 1 and63 users 138 Oct 30 15:02 scilab.sci -rw-r--r-- 1 and63 users 327 Oct 29 18:58 scilab.sh
Check which computing elements (CE's) are able to accept this job as well as information about Balticgrid from BalticGrid Infosite: [and63@ui scilab_data]$ glite-wms-job-list-match -a scilab.jdl Connecting to the service https://wms.grid.etf.rtu.lv:7443/glite_wms_wmproxy_server ========================================================================== COMPUTING ELEMENT IDs LIST The following CE(s) matching your job requirements have been found: *CEId* - ce01.grid.etf.rtu.lv:2119/jobmanager-pbs-balticgrid - ce01.grid.etf.rtu.lv:2119/jobmanager-pbs-bgcore4
Job submission on my chosen CE (- a – delegation performed automatically): [and63@ui scilab_data]$ glite-wms-job-submit -a -o scilab.id -r ce01.grid.etf.rtu.lv:2119/jobmanager-pbs-bgcore4 scilab.jdl Connecting to the service https://wms.grid.etf.rtu.lv:7443/glite_wms_wmproxy_server ====================== glite-wms-job-submit Success ====================== The job has been successfully submitted to the WMProxy Your job identifier is: https://wms.grid.etf.rtu.lv:9000/WA5QusB81vhc0vhu1ZYVfw The job identifier has been saved in the following file: /home/and63/scilab_data/scilab.id ==========================================================================
Check job status: [and63@ui scilab_data]$ glite-wms-job-status -i scilab.id ************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://wms.grid.etf.rtu.lv:9000/WA5QusB81vhc0vhu1ZYVfw Current Status: Scheduled Status Reason: Job successfully submitted to Globus Destination: ce01.grid.etf.rtu.lv:2119/jobmanager-pbs-bgcore4 Submitted: Tue Nov 3 11:59:26 2009 EET Current Status: Done (Success) Exit code: 0 Status Reason: Job terminated successfully Destination: ce.grid.etf.rtu.lv:2119/jobmanager-lcgpbs-short
Check job output on SE: [and63@ui scilab_data]$ lfc-ls -l /grid/balticgrid/and63 -rw-rw-r-- 1 254 101 84196 Nov 04 06:01 scilab_results Retrieve Job output from SE to UI scilab_data directory: [and63@ui scilab_data]$ lcg-cp --vo balticgrid lfn:/grid/balticgrid/and63/scilab_results file:/home/and63/scilab_data/scilab_results Now you have results on your UI, check it: [and63@ui scilab_data]$ ls -l total 104 -rw-r--r-- 1 and63 users 80 Nov 4 10:47 scilab.id -rw-r--r-- 1 and63 users 382 Oct 30 18:10 scilab.jdl -rw-r--r-- 1 and63 users 84196 Nov 4 14:27 scilab_results -rw-r--r-- 1 and63 users 138 Oct 30 15:02 scilab.sci -rw-r--r-- 1 and63 users 339 Nov 4 10:46 scilab.sh an transmit results on your local machine, to process it with Scilab software as necessary and/or interpret graphically