GFAL: Grid File Access Library Java API

Trinacria Grid Virtual Laboratory
GFAL: Grid File Access Library
Salvatore Scifo
INFN - Catania
Tutorial TriGrid su gLite 3.0
Catania, 27.07.2006
FESR
www.trigrid.it
SUMMARY
• This presentation covers the following points:
– GFAL Overview
– GFAL Available APIs
– GFAL C API Overview
– GFAL Java API Overview
– GFAL C API Practical (hands on session)
– GFAL Java API Practical (hands on session)
– GFAL References.
Catania, Tutorial TriGrid su gLite 3.0, 27.07.2006
2
GFAL: Introduction
• What is GFAL for?
– Grid storage interactions today require using some existing
software components:
 The replica catalog services to locate valid replicas of files in order
to :
• Download them to the user local machine
• Move them from a SE to another one
• Make job running on the worker node able to access and manage
files stored on remote storage element.
 The SRM software to ensure:
• Files existence on disk or disk pool (they are recalled from mass
storage if necessary)
• Space allocation on disk for new files (they are possibly migrated
to mass storage later)
Catania, Tutorial TriGrid su gLite 3.0, 27.07.2006
3
GFAL: Main features
• The GFAL Features
– Hides interactions to the SRM to the end user
– Provides a Posix-like interface for File I/O Operation
– Based on shared libraries (both threaded e unthreaded version)
– Needs only one header file (gfal_api.h) to write C applications
– Supports following protocols :
 file for local access nfs-like
 dcap, gsidcap and kdcap for dCache access protocol
 rfio for CASTOR access protocol.
– Access to SRMs in secure mode, i.e. using a valid Grid proxy
obtained by voms-proxy-init command.
Catania, Tutorial TriGrid su gLite 3.0, 27.07.2006
4
GFAL: File Names
• GFAL works with all Grid types name:
– Logical File Name (LFN)
 lfn:baud/testgfal15
– Grid Unique IDentifier (GUID)
 guid:2cd59291-7ae7-4778-af6d-b1f423719441
– File Replica (SURL)
 srm://wacdr002d.cern.ch:8443/castor/cern.ch/user/b/baud/testgfal
– Transport file name (TURL).
 rfio:////castor/cern.ch/user/b/baud/testgfal15
Catania, Tutorial TriGrid su gLite 3.0, 27.07.2006
5
GFAL: Environment
• Auxiliary linked libraries
–
–
–
–
libcgsi_plugin_gsoap_2.3
libglobus_gss
api_gsi_gcc32dbg
libglobus_gss_assist_gcc32dbg).
• Environment Variables
–
–
–
–
–
–
LCG_GFAL_VO
LCG_GFAL_INFOSYS
LCG_CATALOG_TYPE
LCG_RFIO_TYPE
LFC_HOST
LD_LIBRARY_PATH
Catania, Tutorial TriGrid su gLite 3.0, 27.07.2006
6
GFAL: Available API
• C API
– The header file gfal_api.h needs to be included in the
application source code to get the prototype of the functions.
– The function names are obtained by prepending gfal_ to the
Posix names,for example gfal_open, gfal_read, gfal_close ...
– The argument lists and the values returned by the functions are
identical.
– The variable errno is set to the Posix Error Codes in the case of
failure.
• Java API (C API Wrapper)
– It provides three main Java Objects that need to be imported in
the java applications in order to hide the underlying C functions.
 GFalFile : to handle and read/write files
 GFalDirectory : to handle and manage directories (create, delete,
list)
 GFalUtilities : to manage file (rename, stat, lstat, delete)
Catania, Tutorial TriGrid su gLite 3.0, 27.07.2006
7
GFAL References
• Examples in gLite3 User Guide (Appendix F)
– https://edms.cern.ch/file/722398//gLite-3-UserGuide.pdf
• GFAL C API Description:
– http://grid-deployment.web.cern.ch/griddeployment/documentation/LFC_DPM/gfal/html/
• GFAL JAVA API
– https://grid.ct.infn.it/twiki/bin/view/GILDA/APIGFAL
• GFAL Java API code and libraries:
– https://grid.ct.infn.it/twiki/pub/GILDA/APIGFAL/GFAL_Java_API.zip
• On-line JavaDoc of Java API:
– https://grid.ct.infn.it/twiki/GFAL/
• GFAL Excercises (C/Java):
– https://grid.ct.infn.it/twiki/bin/view/GILDA/UsingGFAL
Catania, Tutorial TriGrid su gLite 3.0, 27.07.2006
8