Skip to content

EGRID website

Sections
Personal tools
You are here: Home » Software » StoRM » Build Note

Build Note

Note sulla compilazione di storm

Note sulle compilazione di StoRM

StoRM, è composto da 3 parti distinte:

  1. Il frontend, che si occuppa di accettare le richieste dai client
  2. Un DataBase che mantiene lo stato delle richieste [asyncrone] che verranno;' poi processatte dal Backend storm_db e un data base per la persistenza storm_db_ISAM
  3. Backend, si occuppa di processarre le richieste presenti nel database [asyncrone] si le richieste che arrivvano direttamente dal frontend, [syncrone] tramite comunicazione XML-RPC.

Installazione Frontend:

Per effettuare il build sono necessari i seguenti pacchetti:

automake-1.6.3-5
autoconf-2.57-3
libtool-libs-1.4.3-6
libtool-1.4.3-6

Effettuare il checkout del modulo storm/frontend:

export CVS_RSH=ssh
export CVSROOT=:ext:utente@egrid-doc.egrid.it/home/cvs
cvs co storm/backend 

Seguire le istruzioni presenti nel file README

Attenzione, nel caso che l'installazzione del pachetto rpm di MySQL, fallisca potrebbe essere necessarrio modificare lo script di avvio /etc/init.d/mysql modificando la parte di start nelle seguente maniera:

su - mysql -c "$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &"

poi lanciare i comandi:

/usr/bin/mysql_install_db
cd /var/lib/mysql
chown -R mysql:mysql mysql 

Creazione pacchetti RPM

definire la variabiale PERLLIB

export PERLLIB=/opt/gpt/lib/perl

Editare i file srmv2-storm-client.spec srmv2-storm-server.spec per definire la versione

lanciare:

make rpm

I pachetti RPM si trovano in RPMS/i386/

Installazione Backend:

  1. Installazzione di gpfs, http://www.egrid.it/sysadm/appunti/GPFS/view?searchterm=gpfs

  2. Il build viene effettuato tramite ant bisogna installarlo la versione necessarria è la 1.6: http://ant.apache.org/bindownload.cgi:

    cp apache-ant-1.6.5-bin.tar.bz2 /usr/local
    cd /usr/local/
    tar xvfj apache-ant-1.6.5-bin.tar.bz2
    ln -s apache-ant-1.6.5 ant 
    
  3. effettuare i checkout del sorgente:

    export CVS_RSH=ssh
    export CVSROOT=:ext:utente@egrid-doc.egrid.it/home/cvs
    cvs co storm/backend 
    
  4. Installare i pachetti di swig, seguire le istruzioni presenti alla URL http://www.egrid.it/sw/storm/voms_lcmaps_interface/view

    Definire la variabiale d'ambiente SWIG_LIB

    NB: L'uso di differenti versioni di swig ha effetti diversi nei tipi statici, inoltre alcune versioni NON compilano con la versione CVS di StoRM. Per maggiori informazioni vedi nota [swig].

  5. Compilazione tramite ant

    Compilare la parte relativa a gpfs:

    ant native 
    

    Compilare la parte relativa a GridUser:

    ant swig 
    

    Compilare il backend:

    ant compile
    
  6. Aggiunta database, storm_be_ISAM contente i dati di persistenza

    Editare il file config/grant_db_backend.sql sostituendo il proprio hostname al posto di testbed006

    lanciare i comandi:

    mysql -u root -p < tables_db_backend.sql
    mysql -u root -p < grant_db_backend.sql 
    
  7. Preparazione del file system

    nella directory che monta il GPFS, creare le directory relative alle VO e StFNRoot presenti nel file config/namespace.cfg

    StFNRoot

    PFNRoot

    VO

    JustInTimeACL

    MaxLifeTime

    SpaceType

    Storage Machine

    Port

    /egrid

    /storage/egrid

    EGRID

    Y

    0

    Permanent

    storage.egrid.it

    13000

    /cnaf

    /storage/cnaf

    CNAF

    N

    0

    Permanent

    storage.cnaf.infn.it

    14000

    /lcg

    /storage/lcg

    LCG

    N

    100

    Volatile

    storage.cnaf.infn.it

    15000

    /egrid/exp1

    /gpfs/egrid/experiment1

    EGRID

    Y

    0

    Permanent

    storage.egrid.it

    13000

    /test

    /scratch

    TEST

    N

    0

    Permanent

    storage.cnaf.infn.it

    11000

    Il significato dei vari campi è il seguente:

    StFNRoot

    è il prefisso usato nella SURL

    PFNRoot

    è la directory fisica con GPFS corrispondente alla VO.

    VO

    la VO a cui appartiene

    JustInTimeACL

    se la VO supporta le JIT

    MaxLifeTime

    massima durata di vita del file per spazio Volatile. 0 = Permanente

    StorageMachine

    Da definire

    Port

    Da definire

  8. Mapping utenti

    per adesso il mapping degli utenti avvine tramite il file config/mapping.properties che la coppia CN del certificato e utente locale su cui e mappato lo stesso ad esempio:

    Flavia\ Donno=storm 
    
    *Importante* gli spazi devo essere escapati
    
  9. Configurazione connessione al database (per chiamate asyncrone)

    la configurazione avviene tramite il file config/strom.properties

    Le configurazione della parte asincrona è definata dalle propietà del database storm_db che sono:

    asynch.picker.db.driver = com.mysql.jdbc.Driver
    asynch.picker.db.host = egrid-7
    asynch.picker.db.name = storm_db
    asynch.picker.db.username = storm
    asynch.picker.db.passwd = storm
    asynch.picker.db.pollingrateinsec = 5
    asynch.picker.verbose = false
    

    La configurazione della parte di persistenza è definita dalle propietà del database storm_db_ISAM:

    persistence.db.vendor = mysql
    persistence.db.driver = com.mysql.jdbc.Driver
    persistence.db.prefix = jdbc:mysql:
    persistence.db.host = egrid-7
    persistence.db.name = storm_be_ISAM
    persistence.db.username = storm
    persistence.db.passwd = storm
    persistence.db.pool = true
    persistence.db.pool.maxActive = 10
    persistence.db.pool.maxWait = 50
    
  10. Avvio del Server, l'avvio del server avviene in 2 parti distinte:

    Avvio del server e del sistema di controllo:

    cd bin
    ./storm_server 
    

    Il server logga le informazioni nel file log/storm_server.out

    Il sistema di controllo è in ascolto sulla porta 4444

    Avvio del picker e della parte asincrona:

    telnet 127.0.0.1 4444  
    Trying 127.0.0.1...
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is '^]'.
    START
    

    per fermare il picker dare STOP, per fermare il server SHUTDOWN

    installando expect:

    apt-get install expect 
    

    è possibile usare lo script storm.sh:

    root@egrid-7:~/storm/backend/bin# ./storm.sh
    Usage: ./storm.sh {start|stop|shutdown}
    

    Lo stop blocca solamente il picker, quindi ad un ulteriore avvio dello stesso tramite start, il file di log log/storm_server.out riusulter' sporcato:

    [java] PICKER STOPPED
    [java] PICKER STARTED
    [java] SpaceServer started...
    [java] java.net.BindException: Address already in use
    [java]     at java.net.PlainSocketImpl.socketBind(Native Method)
    [java]     at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:331)
    [java]     at java.net.ServerSocket.bind(ServerSocket.java:318)
    [java]     at java.net.ServerSocket.<init>(ServerSocket.java:185)
    [java]     at org.apache.xmlrpc.WebServer.createServerSocket(WebServer.java:203)
    [java]     at org.apache.xmlrpc.WebServer.setupServerSocket(WebServer.java:227)
    [java]     at org.apache.xmlrpc.WebServer.start(WebServer.java:271)
    [java]     at it.grid.storm.synchcall.SynchCallServer.createServer(SynchCallServer.java:420)
    [java]     at it.grid.storm.StoRM.startXmlRpcServer(StoRM.java:65)
    [java]     at it.grid.storm.StoRMCommandServer$CommandExecuterThread.run(StoRMCommandServer.java:73)
    [java] ERROR [Thread-10] synch_xmlrpc_server (createServer:478) - SynchCallServer java.lang.RuntimeException: Address already in use
    

    Tale messaggio non influenza la funzionalità del server.


[swig]

La versione di SWIG distribuita con LCG/glite non funziona con l'ultima versione di StoRM. Una versione testata e funzionante è la 1.3.24. Da notare che differenti versioni di SWIG hanno effetti diversi sulla traduzione da C a Java dei tipi enumerati, in particolare con la versione 1.3.24 l'accesso ai tipi static della classe fs_acl deve essere fatto tramite la classe permission_flags, mentre con precedenti versioni tale classe non esisteva. Quindi compilando con 1.3.24 si dovrà scrivere:

fs_acl.permission_flags.PERM_EXECUTE

mentre con SWIG 1.3.21 era necessario scrivere:

fs_acl.PERM_EXECUTE
Created by aterpin
Last modified 2006-05-16 09:51
 

Powered by Plone

This site conforms to the following standards: