Introduction¶
À propos de ce document¶
Ce document présente l’utilisation du client iRODS avec le service FG-iRODS proposé par France Grilles. Il est basé sur sur le contenu de la documentation en ligne du service FG-iRODS rédigée initialement par Catherine Biscarat, Pierre Gay et Jérôme Pansanel.
La dernière version de ce document est disponible sur : https://github.com/FranceGrilles/user-docs/tree/main/irods-fr.
Le service FG-iRODS¶
Le service FG-iRODS, proposé par l’infrastructure de recherche France Grilles, a pour objectif de faciliter la gestion des données de recherche. Il repose sur :
une infrastructure de stockage géographiquement distribuée de niveau production hautement disponible ;
l’utilisation du logiciel iRODS ;
un accompagnement personnalisé des utilisateurs ;
un ensemble d’outils permettant d’en simplifier l’usage.
L’accès à ce service est nominatif et réalisé par une simple demande adressée à info@france-frilles.fr. Après étude de la demande et avant création des comptes, il est demandé aux utilisateurs :
de signer les conditions d’accès au service FG-iRODS : https://www.france-grilles.fr/wp-content/uploads/2025/07/fg_irods_user_policy.pdf ;
de fournir un plan de gestion de données (PGD). Plusieurs exemples de PGD sont disponibles sur le site de DMP OPIDoR https://dmp.opidor.fr/.
Une fois les documents reçus, l’accès au service est ouvert, les identifiants et la documentation du service transmis aux utilisateurs.
Installation du client¶
Prérequis¶
L’installation du client iRODS nécessite de disposer d’un poste client fonctionnant avec le système Redhat, Ubuntu et leurs dérivés, sur lequel il est possible d’installer de nouveaux logiciels.
Environnement¶
Le client en ligne de commande iRODS utilise un fichier pour stocker
la configuration pour se connecter à l’infrastructure iRODS. Ce fichier
est ~/irods/irods_environment.json
et doit être créé avec le contenu
suivant :
{
"irods_host": "sbgirodsfg.in2p3.fr",
"irods_port": 5555,
"irods_zone_name": "FranceGrillesZone",
"irods_user_name": "<username>",
"irods_default_resource": "iphc",
"irods_client_server_negotiation": "request_server_negotiation",
"irods_client_server_policy": "CS_NEG_REQUIRE",
"irods_default_hash_scheme": "SHA256",
"irods_default_number_of_transfer_threads": 4,
"irods_encryption_algorithm": "AES-256-CBC",
"irods_encryption_key_size": 32,
"irods_encryption_num_hash_rounds": 16,
"irods_encryption_salt_size": 8,
"irods_match_hash_policy": "compatible",
"irods_maximum_size_for_single_buffer_in_megabytes": 32,
"irods_ssl_verify_server": "cert"
}
La valeur <username> doit être remplacées par les valeurs qui vous ont été transmises lors de l’enregistrement auprès du service.
Installation des paquets¶
Les paquets pour le client iRODS sont disponibles pour les systèmes détaillés sur la page de téléchargement d’iRODS.
Les instructions d’installation pour les systèmes de gestion de paquets APT et YUM sont détaillées sur la page https://packages.irods.org.
Une fois que le dépôt est correctement configuré, il faut installer le
paquet irods-icommands
.
La vérification de l’installation du client est réalisée avec :
$ iinit
La commande iinit permets d’ouvrir une session vers l’instance iRODS. Elle vous demande le mot de passe pour vous connecter. Une fois que vous avez terminé votre transfert de données, vous pouvez terminer la session avec la commande iexit.
La commande ienv affiche l’environnement iRODS :
irods_version - 4.3.2
irods_client_server_negotiation - request_server_negotiation
irods_encryption_key_size - 32
irods_environment_file - /home/<user>/.irods/irods_environment.json
irods_default_hash_scheme - SHA256
irods_default_number_of_transfer_threads - 4
irods_host - sbgirodsfg.in2p3.fr
irods_client_server_policy - CS_NEG_REQUIRE
irods_session_environment_file - /home/<user>/.irods/irods_environment.json.15934
irods_default_resource - <default_resource>
irods_encryption_algorithm - AES-256-CBC
irods_encryption_num_hash_rounds - 16
irods_encryption_salt_size - 8
irods_match_hash_policy - compatible
irods_ssl_verify_server - cert
irods_maximum_size_for_single_buffer_in_megabytes - 32
irods_port - 5555
irods_user_name - <username>
irods_zone_name - FranceGrillesZone
Image Singularity¶
Afin de rendre le client disponible sur la majorité des OS, nous maintenons une image du client iRODS utilisable avec Singularity (Apptainer) : https://scigne.fr/resources/CLOUD/irods.sif
Les instructions pour l’utiliser sont sur : https://github.com/FranceGrilles/singularity-images/tree/main
Utilisation du service FG-iRODS¶
Aide interactive¶
ihelp permet d’afficher la liste des commandes iRODS, ainsi que l’aide sur une commande spécifique :
$ ihelp ils
Usage: ils [-ArlLv] dataObj|collection ...
Usage: ils --bundle [-r] dataObj|collection ...
Display data Objects and collections stored in irods.
Options are:
-A ACL (access control list) and inheritance format
-l long format
-L very long format
-r recursive - show subcollections
-t ticket - use a read (or write) ticket to access collection information
-v verbose
-V Very verbose
-h this help
--bundle - list the subfiles in the bundle file (usually stored in the
/myZone/bundle collection) created by iphybun command.
iRODS Version 4.3.2 ils
La liste complète des commandes disponibles est également disponible dans la documentation officielle iRODS.
Répertoire de travail¶
La commande ils affiche le contenu du répertoire courant avec lequel vous travaillez sur le système FG-iRODS (par défaut, il s’agit de votre répertoire utilisateur) :
$ ils
/FranceGrillesZone/home/<username>:
FranceGrillesZone : le nom de la zone iRODS
/home/<username> : votre répertoire personnel
Il est possible de modifier le répertoire sur lequel le client iRODS se connecte en ajoutant la lignes suivante au fichier de configuration iRODS :
"irods_cwd": "<chemin_repertoire>",
"irods_home": "<chemin_repertoire>",
Il faut remplacer <chemin_repertoire> par le chemin souhaité par défaut.
Chargement des données¶
Dans cette section, des fichiers vont être chargés vers FG-iRODS. Le
fichier utilisé pour ces exemples est foo.bin
, il peut être
remplacé par un autre fichier de votre choix. Si vous souhaitez travailler
avec le fichier foo.bin
, vous pouvez le créer avec la commande
suivante :
$ dd if=/dev/urandom of=foo.bin count=65536
Le fichier est copié vers l’infrastructure iRODS avec la commande :
$ iput -K foo.bin
L’option -K permet de vérifier le checksum et de le stocker dans la base de données. Il est recommandé de l’utiliser systématiquement. Le fichier est maintenant disponible sur FG-iRODS :
$ ils
/FranceGrillesZone/home/<username>:
foo.bin
Le fichier peut être supprimé avec la commande suivante :
$ irm foo.bin
Espace de nom et chemin physique¶
iRODS fournit une abstraction de l’emplacement physique des fichiers.
Par exemple, /FranceGrillesZone/home/<username>/foo.bin
est le chemin
logique utilisé par iRODS. Pour savoir où sont réellement stockées
les données, il faut utiliser l’option -L avec la commande ils :
$ ils -L
/FranceGrillesZone/home/<username>:
<username> 0 iphc;iphc-random;iphc-storage_01 33554432 2020-11-20.09:30 & foo.bin
sha2:veVzp+ApMzyVRzZN0BZIkDyFuqUp/4tM4sLVACp00B8= generic /storage/irods_01/home/<username>/foo.bin
Le résultat de cette commande nous indique que :
le fichier
foo.bin
est enregistré par FG-iRODS comme :/FranceGrillesZone/home/<username>/foo.bin
;son propriétaire est <username> ;
il a été chargé sur la ressource de stockage iphc ;
il n’y a qu’un seul réplica, dont l’identifiant est 0 ;
sa taille est de 33554432 octets ;
son checksum a été enregistréi (sha:veVzp+ApMzyVRzZN0BZIkDyFuqUp/4tM4sLVACp00B8=).
Téléchargement de données¶
Le fichier stocké dans FG-iRODS peut être téléchargé avec :
$ iget -K foo.bin foo-restore.txt
Le fichier foo.bin
a été téléchargé et nommé foo-restore.txt
.
Avec l’option -K option, le checksum du fichier local est comparé
avec le checksum du fichier sur FG-iRODS.
Structuration des données¶
Création d’une collection¶
Sur votre ordinateur, les données sont organisées dans des répertoires. Avec iRODS, elles sont organisées de la même manière, sauf que ces dossiers sont appelés des collections.
Pour créer une collection iRODS :
$ imkdir mycollection
Le fichier foo.bin
peut être déplacé dans la collection
mycollection avec :
$ imv foo.bin mycollection
$ ils -L mycollection
/FranceGrillesZone/home/<username>/mycollection:
<username> 0 iphc;iphc-random;iphc-storage_01 33554432 2020-11-20.10:18 & foo.bin
sha2:veVzp+ApMzyVRzZN0BZIkDyFuqUp/4tM4sLVACp00B8= generic /storage/irods_01/home/<username>/mycollection/foo.bin
Vous pouver voir que le chemin logique de la collection
/FranceGrillesZone/home/<username>/mycollection
a un
répertoire physique : /storage/irods_01/home/<username>/mycollection
.
Ainsi, les données n’arrivent pas n’importe où sur un serveur iRODS,
mais se placent dans cette structure.
Les données peuvent être chargées directement dans une collection :
$ iput -K -r bar.txt mycollection
$ ils /FranceGrillesZone/home/<username>/mycollection
/FranceGrillesZone/home/<username>/mycollection:
bar.txt
foo.bin
L’option -r permet un chargement récursif.
Gestion des métadonnées¶
iRODS est un logiciel disposant de nombreuses fonctionnalités reposant sur l’utilisation des métadonnées.
Création de métadonnées¶
Il est possible d’ajouter à chaque fichier une ou plusieurs métadonnées représentées sous forme de triplet Attribute, Value, Unit (AVU). Ces triplets sont ajoutés dans la base iCAT d’iRODS et peuvent être recherchés. Les métadonnées sont ajoutées avec la commande :
$ imeta add -d foo.bin 'length' '20' 'words'
Le champ Unit peut être vide :
$ imeta add -d foo.bin 'project' 'example'
Les métadonnées peuvent également être ajoutées à une collection :
$ imeta add -C mycollection 'author' 'John Smith'
Affichage des métadonnées¶
Pour afficher les métadonnées d’un objet de données (fichier), il faut entrer :
$ imeta ls -d foo.bin
AVUs defined for dataObj /FranceGrillesZone/home/<username>/mycollection/foo.bin:
attribute: length
value: 20
units: words
et pour une collection, la commande suivante :
$ imeta ls -C mycollection
AVUs defined for collection /FranceGrillesZone/home/<username>/mycollection:
attribute: author
value: John Smith
units:
Recherche avec les métadonnées¶
La recherche de fichiers ou de collections à l’aide des métadonnées est effectuée avec la commande suivante :
$ imeta qu -d 'length' = '20'
collection: /FranceGrillesZone/home/<username>/mycollection
dataObj: foo.bin
Recherche avancée¶
Afin d’effectuer une recherche plus fine de fichiers ou de collections, il est possible d’interroger directement le catalogue iCAT avec la commande iquest :
$ iquest "select COLL_NAME, META_COLL_ATTR_VALUE where META_COLL_ATTR_NAME like 'author'"
COLL_NAME = /FranceGrillesZone/home/<username>/mycollection
META_COLL_ATTR_VALUE = John Smith
------------------------------------------------------------
Les résultats peuvent être filtrés à l’aide d’un ou plisusieurs attributs :
$ iquest "select COLL_NAME, META_COLL_ATTR_VALUE where META_COLL_ATTR_NAME like 'author' \
and META_COLL_ATTR_VALUE like 'John%'"
COLL_NAME = /FranceGrillesZone/home/<username>/mycollection
META_COLL_ATTR_VALUE = John Smith
------------------------------------------------------------
NOTE : le caractère “%” est un caractère générique (wildcard).
Si vous recherchez un objet de données plutôt qu’une collection, il faut remplacer META_COLL_ATTR_NAME par META_DATA_ATTR_NAME. De nombreux attributs peuvent être utilisés pour les recherches. Pour les afficher, utilisez :
$ iquest attrs
Contrôle d’accès¶
iRODS propose un mécanisme de droits d’accès similaire au système disponible sur les systèmes UNIX (ACL). Il permet de contrôler les droits de lecture, d’écriture et de propriété. Pour afficher les droits d’accès à la collection actuelle :
$ ils -r -A
/FranceGrillesZone/home/<username>/mycollection:
ACL - <username>#FranceGrillesZone:own
Inheritance - Disabled
bar.txt
ACL - <username>#FranceGrillesZone:own
foo.bin
ACL - <username>#FranceGrillesZone:own
Les droits d’accès à un fichier sont spécifiés après le mot-clé ACL. Dans cet exemple, <username> est propriétaire de tous les fichiers affichés. Aucune autre personne ne peut y accéder.
Les collections ont un attribut Inheritance. Lorsque la valeur de cet attribut est égale à Enabled, l’ensemble du contenu de la collection hérite des droits d’accès de la collection. Cet héritage ne s’applique qu’aux nouveaux fichiers copiés dans la collection.
La modification des droits d’accès pour autoriser un collègue à accéder à ses données se fait avec :
$ ichmod read <colleague> foo.bin
L’utilisateur <colleague> peut maintenant accéder en lecture au
fichier foo.bin
.