GFAL: Grid File Access Library Java API

Slides:



Advertisements
Presentazioni simili
EGEE is a project funded by the European Union under contract IST Test di performance su dCache G.Donvito,V.Spinoso INFN Bari
Advertisements

Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Marco Barisione Estendere Python in C.
Programmazione con socket
1 Directory Il formato delle directory varia nei vari FS utilizzati in ambito Unix Quando una directory viene aperta viene restituito un puntatore a un.
SC che operano su file (1)
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Selezione (=scelta) con “if-else”
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Programmazione in Java Claudia Raibulet
Prova di verifica Fondamenti Informatica 1 15 Febbraio 2008.
void binario(int n); …………………
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
1 Applet ed HTML Fondamenti di Informatica Corso D.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
1 Esempio di ADT e make Operazioni bit a bit su piu’ file.
FESR Trinacria Grid Virtual Laboratory ADAT (Archivi Digitali Antico Testo) Salvatore Scifo TRIGRID Second TriGrid Checkpoint Meeting Catania,
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
Classi: class Foo { public int x; public int y; public void swap (boolean z) { if (z) {int temp = x; x = y; y = temp;}; }; } Ambienti per le classi: Cenv.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Chiamate di sistema Introduzione Errori : perror() Chiamate che lavorano su file.
1 Chiamate di sistema Chiamate che lavorano su file.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
FESR Trinacria Grid Virtual Laboratory La sicurezza dei dati in ambiente Trigrid Giordano Scuderi.
FESR Trinacria Grid Virtual Laboratory University of Coimbra Data Management System gLite – LCG Salvatore Scifo INFN Catania Primo Grid.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 6 Marzo 2016.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Ambienti di Programmazione per il Software di Base
dCache Test effettuati al CNAF
Java: concetti e costrutti base
Condizioni decisionali
Metriche SE monitoring G.Donvito G.Cuscela INFN Bari
Giordano Scuderi Unico SRL Catania
Giordano Scuderi Unico SRL - Messina,
Job Application Monitoring (JAM)
L’AMBIENTE CODE BLOCKS E L’IO
I FILES AD ACCESSO SEQUENZIALE
Risultati del questionario sui servizi middleware aggiuntivi
Ambienti di Programmazione per il Software di Base
Corso Java Esercitazione.
Programmazione e Laboratorio di Programmazione
iterazione o ricorsione nel pensare per OGGETTI
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
File System ed Input/Output
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
LINUX: struttura generale
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Eccezioni – Precisazioni e approfondimenti
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
Condizioni decisionali
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
Condizioni decisionali
concetti ed applicazioni
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
GFAL: Grid File Access Library Java API
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Ese 3 (del 3 Aprile 2003).
Corso di programmazione, Simulazione, ROOT, code, ecc. ecc.
Transcript della presentazione:

GFAL: Grid File Access Library Java API Diego Scardaci INFN - Catania Progetto Trigrid Catania, 30.06.2006

GFAL: Grid File Access Library Libreria client POSIX (like) I/O per l’accesso diretto ai dati Perché GFAL: L’interazione con gli SE richiede l’utilizzo di alcuni componenti: Servizio di file catalog per localizzare le repliche Storage Resource Management (SRM) Meccanismi di accesso ai file da un SE sul Worker Node. GFAL effettua questi task per te: Nasconde queste interazioni all’utente Fornisce un’interfaccia POSIX per le operazioni di I/O; Utilizza la shared library (versioni threaded e unthreaded): libgfal.so, libgfal_pthr.so Richiede un unico header file: gfal_api.h Fornisce all’utente tutti I comandi necessari per lo storage management Offre un’interfaccia all’SRM Protocolli supportati: file (accesso locale o nfs-like) dcap, gsidcap and kdcap (accesso dCache) rfio (accesso castor) e gsirfio (dpm) Catania, Progetto TriGrid VL, 30.06.2006

GFAL: File I/O C API (I) int gfal_access (const char *path, int amode); int gfal_chmod (const char *path, mode_t mode); int gfal_close (int fd); int gfal_creat (const char *filename, mode_t mode); off_t gfal_lseek (int fd, off_t offset, int whence); int gfal_open (const char * filename, int flags, mode_t mode); ssize_t gfal_read (int fd, void *buf, size_t size); int gfal_rename (const char *old_name, const char *new_name); ssize_t gfal_setfilchg (int, const void *, size_t); int gfal_stat (const char *filename, struct stat *statbuf); Catania, Progetto TriGrid VL, 30.06.2006

GFAL: File I/O C API (II) int gfal_unlink (const char *filename); ssize_t gfal_write (int fd, const void *buf, size_t size); int gfal_closedir (DIR *dirp); int gfal_mkdir (const char *dirname, mode_t mode); DIR *gfal_opendir (const char *dirname); struct dirent *gfal_readdir (DIR *dirp); int gfal_rmdir (const char *dirname); Catania, Progetto TriGrid VL, 30.06.2006

GFAL: File I/O Java API Motivazione: Fornire delle API GFAL al sempre più vasto gruppo di programmatori Java. Perché Java: Velocità di sviluppo Semplicità di sviluppo (maggior numero di programmatori disponibili) “Write once, run anywhere" Catania, Progetto TriGrid VL, 30.06.2006

GFAL Java API: Le classi GFalFile: rappresentazione di un file remoto (memorizzato su uno SE). GFalDirectory: rappresentazione di una directory remota di uno SE. GFalUtilities: raggruppa alcune importanti utility. Catania, Progetto TriGrid VL, 30.06.2006

GFalFile: createFile public int createFile(String name, int mode, boolean isSurl, boolean isLargeFile) throws GFalFileException name = nome logico di uno SE o un SURL (es. srm://aliserv6.ct.infn.it/dpm/ct.infn.it/home/gilda/generated/2006-06-22/filetest) mode = permessi di accesso da associare al file che si sta creando. isSurl = se “true” il parametro name contiene un SURL, se “false” il parametro name contiene il nome di uno SE isLargeFile = se “true” indica che il file deve essere creato come large file (fino a 263 bytes). Catania, Progetto TriGrid VL, 30.06.2006

GFalFile: openFile public int openFile(String fileName, int flags, int mode, boolean isLargeFile) throws GFalFileException name = il nome del file in uno dei seguenti formati: lfn, guid, SURL o TURL. flags = OR delle seguenti costanti: READONLY, WRITEONLY, CREAT, LARGEFILE (se utilizzi CREAT name non può essere nè un lfn nè un GUID). mode = permessi di accesso associati al file che si sta creando. isLargeFile = indica se è o non è un large file. Catania, Progetto TriGrid VL, 30.06.2006

GFalFile: gli altri metodi public byte[] readFile(int size) Legge size bytes dal file precedentemente aperto. public int writeFile(byte[] buffer) Scrive l’array di bytes buffer sul file precedentemente aperto. public long lseekFile(long offset, int seekMode, boolean isLargeFile) Posiziona/Riposiziona ad offset il puntatore del file associato a questo oggetto. public int closeFile() Chiude il file. public int lfcRegisterFile(java.lang.String logicalFileName) Registra il file associato a questo oggetto nel catalogo lfc. public java.lang.String getSurl() Restituisce il SURL del file associato a questo oggetto. Catania, Progetto TriGrid VL, 30.06.2006

GFalDirectory public int openDir(String dirName) Apre una directory. public String[] readDir() Legge il contenuto di una directory. public int closeDir() Chiude una directory. public static int makeDir(String dirName, int mode) Crea una directory. public static int rmDir(String dirName) Cancella una directory. Catania, Progetto TriGrid VL, 30.06.2006

GFalUtilities public int accessFile(java.lang.String fileName, int mode) Controlla l’esistenza o l’accessibilità di un file/directory path, in base al bit pattern settato in mode, utilizzando l’ID dell’utente reale. public int chmodFile(java.lang.String fileName, int mode) Cambia la modalità di accesso ad un file o a una directory. public long[] statFile(java.lang.String fileName, boolean largeFile) Restituisce informazioni relative ad un file/directory (ad es. la dimensione). public long[] lstatFile(java.lang.String fileName, boolean largeFile) Come statFile eccetto per i link simbolici. In questo caso sono restituite informazioni relative al link e non al file puntato dal link. public int renameFile(java.lang.String oldName, java.lang.String newName) Rinomina un file/directory. public int deleteFile(java.lang.String fileName) Cancella un file/directory. Catania, Progetto TriGrid VL, 30.06.2006

Configurare l’ambiente Librerie GFAL: gfal.jar, libGFalFile.so e libgfal.so Variabili d’ambiente: LCG_RFIO_TYPE=<SE type> (es. LCG_RFIO_TYPE=dpm) LCG_GFAL_VO=<your VO> LD_LIBRARY_PATH=<path libGFalFIle.so>:$LD_LIBRARY_PATH CLASSPATH=<path gfal.jar>:$CLASSPATH Librerie aggiuntive: lcg_util, globus_ftp_client_gcc32, globus_gass_copy_gcc32 Prima di eseguire un applicativo che utilizza le API GFAL assicurati di possedere un proxy valido. Catania, Progetto TriGrid VL, 30.06.2006

GFAL JAVA API: Un esempio import it.infn.catania.gfal.*; public class Sample { public static void main (String args[]) { String fileName = "aliserv6.ct.infn.it"; try { GFalFile gFalFile= new GFalFile(); gFalFile.createFile(fileName,644,false,false); byte[] dati = new byte[1024]; int ret = gFalFile.writeFile(dati); if (ret==-1) { System.exit(1); } ret = gFalFile.closeFile(); ret = gFalFile.lfcRegisterFile(“lfn:/grid/gilda/test/1.dat”); catch (GFalFileException exc) { exc.printStackTrace(); }} Catania, Progetto TriGrid VL, 30.06.2006

GFAL JAVA API: Soluzione Tecnica APPLICATIVO JAVA J N I GFAL API JAVA WRAPPER GFAL API GFAL API C SERVIZI GRID Catania, Progetto TriGrid VL, 30.06.2006

GFAL JAVA API: Soluzione Tecnica Classe Java: package it.infn.catania.gfal; … public class GFalFile { static { System.loadLibrary(“GFalFile”); } private native int openGFalFile(String fileName, int mode, int perm, boolean isLargeFile); private native int closeGFalFile(int fd); public int openFile(String fileName, int flags, int mode, boolean isLargeFile) throws GFalFileException { int ret = openGFalFile(fileName, flags, mode, isLargeFile); Catania, Progetto TriGrid VL, 30.06.2006

GFAL JAVA API: Soluzione Tecnica Wrapper C (libGFalFile.so): #include <gfal_api.h> #include <jni.h> #include "it_infn_catania_gfal_GFalFile.h" … JNIEXPORT jint JNICALL Java_it_infn_catania_gfal_GFalFile_openGFalFile (JNIEnv *env, jobject obj, jstring fileName, jint mode, jint permission, jboolean largeFile) { int fd; const char *str = (*env)->GetStringUTFChars(env, fileName, 0); if(largeFile) fd = gfal_open64(str, mode, permission); else fd = gfal_open(str, mode, permission); (*env)->ReleaseStringUTFChars(env, fileName, str); …//check errors return fd; } Catania, Progetto TriGrid VL, 30.06.2006

GFAL API: Javadoc Catania, Progetto TriGrid VL, 30.06.2006

GFAL API: Javadoc Catania, Progetto TriGrid VL, 30.06.2006