= Gestion des Données = [[TracNav]] [[TOC(inline)]] Les services qui permettent la gestion des fichiers sont ''file catalog'' (LFC) et le ''storage element'' (SE). Le ''file catalog'' est une base de données qui contient l'association entre un identifiant et les locations des fichiers dans lagrille. Le SE fourni l'espace pour stocker les fichiers. == Utilisation du File Catalog == Le service ''file catalog'' (ou ''replica catalog'') dans EGEE utilise le LFC. Il existe quelques commandes spécifiques au LFC qui commencent par `lfc-`. Elles ne sont généralement pas utilisées directement mais via les commandes qui permettent de manipuler et gérer les fichiers sur la grille, notamment les commandes appelées ''lcg_utils'' qui commencent par `lcg-`. Comme les commandes de soumissions de job, les commandes `lcg-` utilisent la VO du proxy de l'utilisateur par défaut. ''Note : lorsqu'on souhaite utiliser les commandes `lfc-`, il est nécessaire de définir la variable d'environnement `LFC_HOST` avec le nom du serveur LFC à utiliser. Les commandes `lcg-` au contraire localisent directement le serveur approprié pour la VO de l'utilisateur. Dans ce cas, la variable `LFC_HOST` permet de forcer l'utilisation d'un autre serveur LFC que le serveur par défaut de la VO.'' Sur la grille, un fichier peut avoir plusieurs replica. Dans ce cas, il n'y a qu'une seule entrée dans le catalogue à laquelle est associé l'ensemble des replica. Les principales commandes `lcg_utils` sont : * `lcg-cr` (copy and register) : cette commande permet de copier un fichier local ou résidant sur un SE sur un autre SE. '''La destination est nécessairement un SE'''. Par défaut, il enregistre le nom du fichier dans le LFC. Le ''nom logique'' enregistré est généré par défaut. Pour imposer un autre ''nom logique'' que celui par défaut, il faut utiliser l'option `-l`. Le nom du fichier sur le SE est lui aussi généré s'il n'est pas spécifié explicitement, c'est-à-dire lorsque l'option `-d` ne spécifie que le nom du serveur. On utilise généralement l'option `-v` (verbose) qui permet d'avoir un détail du déroulement de la copie et facilite l'analyse des éventuelles erreurs. * `lcg-cp` (copy) : proche d'une commande `cp` standard, il permet de copier un fichier entre une source et une destination. Source et destination peuvent être soit un fichier local, soit un fichier sur un SE avec toutes les combinaisons possibles. * `lcg-rep` : création d'un réplica supplémentaire d'un fichier déjà existant et enregistrement de ce nouveau replica dans le catalogue. A la différence de `lcg-cr`, cela ne crée pas de nouvelle entrée dans le catalogue. * `lcg-lr` (list replica) : donne la liste des différents replica associés à un ''nom logique''. * `lcg-ls` : équivalent de la commande Unix `ls`. * `lcg-del` : suppression d'un fichier d'un SE et éventuellement du catalogue LFC. * `lcg-lg` : retourne le GUID associé à un fichier. Les noms de fichier doivent adhérer à la syntaxe `protocole:/path/to/file`. `protocole` est soit `file` pour un fichier local, soit `srm` pour un fichier sur un SE (appelé `SURL`), soit `lfn` pour un nom logique enregistré dans le catalogue LFC. Pour les fichiers locaux, le nom du fichier doit être une spécification absolue : les chemins relatifs ne sont pas acceptés. Pour spécifier un fichier du directory courant, il est possibilité d'utiliser la valeur `$PWD/filename`. Les commandes `lcg_utils` ont par défaut besoin d'accéder au BDII et ne peuvent utiliser que des ressources enregistrées dans le BDII. On peut aussi les utiliser sans BDII avec l'option `--nobdii` mais dans ce cas il faut fournir plus de paramètre sur les SE utilisés. Toutes ces commandes ont une aide en ligne accessible accessible avec l'option `--help` ou via la commande `man`. __Exercices__ : 1. Visualisez les informations concernant les ressources SE disponibles pour la VO vo.lal.in2p3.fr, en utilisant la commande [wiki:Tutorial/SystemInfo#LaCommandelcg-infosites lcg-infosites]. * Combien de 'storage elements' sont disponibles pour la VO vo.lal.in2p3.fr ? * Trouver la même information pour la VO `dteam`. Combien de SEs sont disponibles pour la VO dteam ? 1. Créez un fichier texte et copiez-le sur un SE à l'aide de la commande `lcg-cr` en définissant le nom logique à utiliser pour le fichier. Le format du nom logique doit être `lfn:/grid/voname/filename`, par exemple `lfn:/grid/vo.lal.in2p3.fr/myname-tot.txt`. 1. Vérifiez que le fichier copié est bien présent dans le catalogue à l'aide de la commande `lcg-lr`. Si cela se passe bien, la commande affiche un URL avec un protocole `srm`. 1. Afficher les informations sur le fichier avec la commande `lcg-ls`. 1. Retrouver le GUID associé au fichier précédent. 1. Répliquer le fichier précédemment créer avec la commande `lcg-rep` sur un autre SE ouvert à la VO, identifié à la première étape. 1. Vérifier que le nouveau replica a bien été ajouté dans le catalogue, en utilisant la commande `lgc-lr`. 1. On peutiliser la commande `lcg-lg` pour trouver le GUID pour un nom logique ou SURL. Regardez l'usage de cette commande et vérifiez que le GUID est correct pour votre nom logique. 1. Récupérez localement le fichier à l'aide de la commande `lcg-cp`. Utiliser d'abord le nom logique puis le nom d'un des replica (SURL). 1. Supprimez l'un des replica de ce fichier à l'aide de la commande `lcg-del` et verifier le résultat avec la commande `lcg-lr`. == Regarder les informations dans le LFC == Les commandes client ne trouvent pas automatiquement le serveur LFC pour votre VO. Pour la VO vo.lal.in2p3.fr, il est nécessaire de définir la variable d'environnement LFC_HOST”. * csh : `setenv LFC_HOST grid14.lal.in2p3.fr` pour le shell csh ou * sh/bash : `export LFC_HOST=grid14.lal.in2p3.fr` pour le shell sh. Normalement on ne change pas le contenu de ce catalogue manuellement. Si on supprime une entrée dans le catalogue, on peut laisser des fichiers qui seront introuvables dans la grille. Cependant, il peut être intéressant d'y regarder de temps en temps directement les informations et de créer des nouveaux répertoires. * Pour trouver les fichiers dans '' /grid/vo.lal.in2p3.fr'', faites : * `lfc-ls -l /grid/vo.lal.in2p3.fr` On peut voir les permissions, la taille, la date de modification, et le nom avec l'option “-l”. Vous allez trouver votre fichier dans la liste. * Le LFC supporte les “Access Control Lists” (ACL). Pour regarder l'ACL pour un fichier ou un répertoire : * `lfc-getacl /grid/vo.lal.in2p3.fr` A chaque répertoire correspond deux ACLs : l'ACL pour le répertoire et une ACL par défaut. L'ACL par défaut est appliqué aux nouveaux fichiers du répertoire. Normalement les commandes `lcg-*` mettent les bonnes permissions dans les fichiers et répertoires. Le LFC utilise les ACLs mais malheureusement cette fonctionnalité n'est pas très utilisable car l'accès est toujours lié au compte unix. On ne peut donc pas encore utiliser les ACLs pour contrôler finement l'accès aux fichiers. * On peut créer un nouvelle arborescence avec `lfc-mkdir`. On doit alors vérifier que le nouveau répertoire possède les bons droits. Créez un nouveau répertoire et copiez-y un fichier. Ensuite utilisez `lcg-del` avec l'option “-a” et `lfc-rm` pour nettoyer le LFC. == Accéder depuis un job à des données stockées == * Regardez les fichiers ''InputData.jdl'' et ''InputData.sh''. Dans ''InputData.jdl'' il y a deux nouvelles lignes qui permettent d'exécuter les jobs sur un CE proche des fichiers de données : {{{ DataAccessProtocol ={ "gsiftp","rfio"}; InputData = "lfn:"; }}} ''Note : Les protocoles sont les moyens par lesquels votre exécutable peut télécharger ce fichier. Tous les SEs supportent le protocole gsiftp. Les autres ne sont pas obligatoires.'' * Modifiez le fichier ''InputData.jdl''. Mettez le nom logique de votre fichier. * Affichez la liste des sites sur lesquels le job peut être soumis. Pourquoi est-elle si réduite? * Lancez ce job et vérifiez que le fichier est bien lu.