Ergon : DODS à l'IDRIS

Auteur : Raphaël Medeiros (révisions Pascal Voury)

Date   : mai 2017 (document original décembre 2002 ; révision précédente février 2015)

Brève présentation théorique.

    DODS (Distributed Oceanographic Data Systems) est un logiciel de type client/serveur permettant l'accès à des données océanographiques, qu'elles soient locales ou distantes, par l'intermédiaire d'un serveur httpd.

DODS peut être vu comme une extension du Web : comme le langage HTML permet le transfert de textes, sons et images à travers le réseau, DODS permet le transfert de données en utilisant le même protocole http. Ainsi, à l'aide d'un navigateur ou d'une application, un chercheur français peut depuis sa station de travail accéder à des données stockées sur des sites se trouvant ailleurs dans le monde en affichant simplement une page HTML dans son navigateur Web.

La première version de DODS a été conçue dans les années 1990. À la demande de sa communauté Climatologie, l'IDRIS a mis en place un serveur DODS avec comme objectif la mise à la disposition d'une partie des données stockées sur le serveur d'archives de l'IDRIS. Depuis 2003, le projet DODS est devenu OPeNDAP. Actuellement, les données sont mises à disposition par le Data Server THREDDS (Thematic Real-time Environmental Distributed Data Services) du serveur ESGF (Earth System Grid Federation) qui est en production à l'IDRIS.

DODS est composé de deux parties,

  • une partie serveur qui assure :
    • le stockage de données ;
    • leur conversion au format DODS ;
    • leur compression éventuelle ;
    • enfin l'envoi vers le client.
  • le client, lui :
    • décompresse les données si besoin;
    • convertit les données dans le format attendu par le client ;
    • met les données à disposition de l'application utilisateur.

dods_client_serveur.jpg

La partie serveur est constituée d'un serveur httpd (Apache par exemple). Plusieurs clients sont disponibles : netCDF, HDF, MatLab, Ferret par exemple.

Le serveur DODS de l'IDRIS.

Le serveur d'archives de l'IDRIS est composé :

  • d'un cluster de 13 serveurs ;
  • d'un cache disque de 2Po ;
  • de plusieurs liens réseau haut-débit avec les serveurs de calcul ;
  • d'un robot de stockage de cassettes, avec une capacité de plusieurs milliers de cassettes ;
  • de dizaines de lecteurs de cassettes haute performance ;
  • d'un logiciel HSM (Hierarchical Storage Manager).

Ces équipements permettent une capacité de stockage en ligne (“online” + “nearline”) de plusieurs milliers de Téra-octets (ou Po). Ils sont utilisés essentiellement pour archiver les données pérennes résultant de modèles numériques exécutés sur les serveurs de calcul de l'Institut. Le propriétaire de ces données peut décider d'en mettre une partie à disposition de la communauté mondiale : à l'IDRIS, la mise en place d'un serveur DODS et le développement de la commande mfdods sur Ergon (et sur Adapp) rendent ceci possible.

Les particularités de notre serveur DODS par rapport à une installation standard sont les suivantes :

  • les données et le serveur se trouvent sur des machines différentes ;
  • les données accédées sont gérées par un HSM : elles peuvent être stockées sur des cassettes ;
  • on accède depuis le serveur DODS aux fichiers stockés sur le serveur d'archives Ergon en lecture uniquement ;
  • l'utilisateur propriétaire des données peut à tout moment les rendre accessibles au public ou retirer cet accès.

Les commandes mises à disposition sur le serveur d'archives Ergon

L'IDRIS a mis à disposition une commande mfdods sur Ergon et Adapp et un jeu de scripts sur Ergon qui permettent de rendre publics des fichiers archivés, ou à l'inverse d'en supprimer l’accès. Dans tous les cas, les options -? ou -help permettent d'obtenir un résumé de leur syntaxe.

mfdods

La commande mfdods permet principalement de rendre un fichier accessible par l'intermédiaire du serveur DODS depuis le $HOME d'Ergon ou le $ARCHIVE d'Adapp . Cette commande crée un lien entre un fichier (appartenant à l'utilisateur) et l'espace disque visible depuis le serveur DODS, /linkhome/DODS/pub/votre_login. Cette opération ne doit pas être faite avec des commandes Unix usuelles telles que cp, ln, etc. afin de pouvoir gérer la cohérence, vérifiée par une procédure quotidienne, entre cet espace DODS et votre $HOME sur Ergon (ou ARCHIVE sur Adapp) : la commande mfdods est indispensable.

Voici un exemple d'utilisation :

 
$ mfdods Analyse/TS_MO/v5.historicalCMR4_18500101_18591231_1M_TxT.nc
 link file : /linkhome/rech/lab/rlab001/Analyse/TS_MO/v5.historicalCMR4_18500101_18591231_1M_TxT.nc -> /linkhome/DODS/pub/rlab001/v5.historicalCMR4_18500101_18591231_1M_TxT.nc 



On voit que, par défaut, la commande mfdods crée le lien dans la racine de l'espace DODS propre à chaque utilisateur, /linkhome/DODS/pub/votre_login. Il est possible de spécifier un sous-répertoire différent avec l'option -d (directory) :

 
$ mfdods -d test_dupli Analyse/TS_MO/v5.historicalCMR4_18500101_18591231_1M_TxT.nc
 link file : /linkhome/rech/lab/rlab001/IGCM_OUT/IPSLCM5A-MR/Analyse/TS_MO/v5.historicalCMR4_18500101_18591231_1M_TxT.nc -> /linkhome/DODS/pub/rlab001/test_dupli/v5.historicalCMR4_18500101_18591231_1M_TxT.nc 

Attention : si le sous-répertoire spécifié (ici test_dupli) dans l'option -d n'existe pas, alors il est créé; cependant on en peut pas créer d'un seul coup une sous-arborescence complète, comme par exemple sous/ARBO/rescence : pour cela il faut utiliser le script dods_cp.


La commande mfdods permet aussi de retirer immédiatement l'accès des fichiers au public en détruisant les liens dans l'espace DODS à l'aide de la même commande mfdods, mais avec l'option -r (remove) : par exemple, pour le tout premier fichier :

 
$ mfdods -r /linkhome/DODS/pub/rlab001/v5.historicalCMR4_18500101_18591231_1M_TxT.nc
 unlink file /arch/home/DODS/pub/rlab001/v5.historicalCMR4_18500101_18591231_1M_TxT.nc 

ou, avec un chemin relatif par rapport à votre répertoire DODS :

 
$ mfdods -r /linkhome/DODS/pub/rlab001/v5.historicalCMR4_18500101_18591231_1M_TxT.nc
 unlink file /arch/home/DODS/pub/rlab001/v5.historicalCMR4_18500101_18591231_1M_TxT.nc 


Régulièrement, une procédure vérifie la cohérence entre l'espace DODS et les données “originales” archivées dans votre HOME sur Ergon : si les fichiers y ont été effacées, alors le lien dans l'espace DODS est automatiquement détrui. De même, les droits d'accès des fichiers du HOME d'Ergon sont vérifiés régulièrement.

Notes :

  • la commande mfdods accepte les caractères de substitution standards * et ? dans les noms de fichiers ;
  • la commande mfdods existe aussi sur la frontale de pré-post-traitement Adapp.

dods_cp

Ce script permet de “greffer” de façon récursive un répertoire entier depuis le HOME d'Ergon dans l'espace DODS, en créant au besoin les sous-répertoires nécessaires :

>  dods_cp PRACE_2-IP/kick_off/ DODS/pub/rlab001/sous_rep

dods_rm

Ce script permet de retirer l'accès à un répertoire entier de l'espace publié sous DODS, de façon récursive (avec tous ses sous-répertoires).
Attention : éviter de lancer cette commande sur la racine de son espace DODS… il n'y a pas de marche arrière possible (de type sauvegarde), il faudra recréer tous les liens avec mfdods ou dods_cp.

Exemple:

> dods_rm DODS/pub/rlab001/arbo
 unlink file /arch/home/DODS/pub/rlab001/arbo/alter/native/expcpl_d01_2002.nc 
/arch/home/DODS/pub/rlab001/arbo/alter/native removed 
/arch/home/DODS/pub/rlab001/arbo/alter removed 
/arch/home/DODS/pub/rlab001/arbo removed 

dods_ls

Ce script affiche, à partir d'un fichier DODS, l'URL utilisable dans un navigateur pour l'affichage direct de ce fichier : il ne reste plus qu'à l'utiliser telle quelle pour un fichier ASCII, ou encore à suffixer cette chaine de caractères par .html avec un fichier NetCDF pour afficher l'OPeNDAP Dataset Access Form de ce fichier dans un navigateur Web.

Par exemple:

> ls -alF /linkhome/DODS/pub/rlab001
total 0
dr-xr-xr-x  4 root    sos  4096 Feb  5 14:47 ./
drwxr-xr-x 88 root    root 4096 Feb  4 16:16 ../
-r--r--r--  2 ssos251 sos    35 Jan 13 17:39 expcpl_d01_2002.nc
> dods_ls  DODS/pub/rlab001/expcpl_d01_2002.nc
https://prodn.idris.fr/thredds/fileServer/ipsl_public/rlab001/expcpl_d01_2002.nc 

Note : tous les scripts dods_ acceptent les caractères de substitution standards * et ? ; ils répondent tous à l'option -h (seule) par un mode d'emploi succinct.