Infrastructure de stockage dans le nuage Mantis

En bref

Pour utiliser Mantis, vous devez exécuter une fois, sur chaque frontale des clusters que vous voudrez utiliser :

source /applis/site/nix.sh
/applis/site/mantis_init.sh

et, afin de maintenir votre token d’authentification actif, faire au moins une fois toutes les deux semaines :

source /applis/site/nix.sh
iinit --ttl 2160

L’accès depuis les clusters en ligne de commande se fait avec les iCommands (ils, iput, iget…) qui sont packagées avec Nix :

source /applis/site/nix.sh

Mantis

Mantis est un nuage de stockage distribué iRODS disponible depuis tous les nœuds de calcul de l’infrastructure HPC de GRICAD. C’est un moyen efficace de stocker les données d’entrée ou les résultats des jobs de calcul (stage-in/stage-out). Il est puissant (car le stockage est réparti entre plusieurs nœuds), capacitif et extensible (les laboratoires peuvent facilement contribuer à étendre la capacité de stockage en ajoutant de nouveaux nœuds de 250 To) et fournit un moteur de règles programmables.

L’accès et le débit de données ne sont pas aussi rapides que sur d’autres infrastructures telles que Bettik, mais il offre un point où charger les données avant de lancer un travail de calcul et stocker la sortie finale.

Mantis resources

Mantis fournit des ressources “standard” et des ressources “sauvegarde”. Les premières sont regroupées dans les ressources imag. Ce sont les ressources de travail par défaut, fournissant une distribution efficace sur les fichiers. Les secondes sont regroupées dans la ressource backup, qui doit être appelée explicitement. Cette ressource offre une réplication automatique sur deux très gros (mais lents) systèmes de fichiers ZFS situés dans deux centres de données différents.

En mai 2022, les ressources standards offrent 750 TB de capacité, et les ressources de sauvegarde offrent 2 fois 1.5 PB de capacité.

La plupart des infrastructures de stockage, en particulier le stockage en nuage, ne gèrent pas très bien les grandes collections de petits fichiers et c’est notamment le cas d’iRODS. Il est de loin préférable de faire un gros paquet de fichiers avec un outil tel que tar avant de les télécharger vers Mantis et de décompresser le paquet sur le nœud de calcul après son téléchargement plutôt que de télécharger une grande collection de petits fichiers. Chaque transaction de fichier (lecture, écriture, copie, déplacement) génère de nombreuses transactions de base de données associées dans iRODS, le surcoût sur l’opération de fichier proprement dite peut rapidement devenir très important et affecter négativement le temps de traitement de vos travaux de calcul.

Accès

Actuellement, l’accès au stockage Mantis est fourni depuis les clusters Dahu, Bigfoot, Luke et Ceciccluster.

Tous les utilisateurs qui ont un compte PERSEUS ont automatiquement un espace de stockage dans Mantis.

L’utilisation de cette infrastructure est soumise à l’acceptation de la charte.

Initialisation

Avant d’utiliser le stockage de Mantis pour la première fois, vous devez initialiser un répertoire de configuration dans votre répertoire personnel sur chaque cluster de calcul. Pour ce faire, veuillez lancer :

/applis/site/mantis_init.sh

Cela créera un répertoire .irods avec une configuration par défaut et vous demandera votre mot de passe PERSEUS pour créer un jeton d’authentification. Il s’agit d’un processus unique.

Pour vérifier que tout fonctionne bien, utilisez la commande ilsresc qui vous donne la liste actuelle des ressources:

mylogin@cluster:~$ ilsresc
backup:replication
├── nigel4-zfs:unixfilesystem
└── nigel5-zfs:unixfilesystem
imag:random
├── nigel1-r1-pt:passthru
│   └── nigel1-r1:unixfilesystem
├── nigel1-r2-pt:passthru
│   └── nigel1-r2:unixfilesystem
├── nigel2-r1-pt:passthru
│   └── nigel2-r1:unixfilesystem
├── nigel2-r2-pt:passthru
│   └── nigel2-r2:unixfilesystem
├── nigel3-r1-pt:passthru
│   └── nigel3-r1:unixfilesystem
└── nigel3-r2-pt:passthru
    └── nigel3-r2:unixfilesystem
mantis-cargoResource:unixfilesystem

Authentification

Si votre jeton d’authentification est expiré, vous pouvez avoir l’erreur suivante :

failed with error -826000 CAT_INVALID_AUTHENTICATION

La solution consiste à se ré-authentifier avec la commande iinit depuis n’importe quelle machine de calcul de GRICAD et à fournir votre mot de passe GRICAD PERSEUS :

mylogin@cluster:~$ iinit --ttl 2160
Enter your current PAM password:
mylogin@cluster:~$

L’option –ttl 2160 signifie que votre jeton d’authentification sera valable pendant 2160 heures, soit 90 jours. Cela signifie que vous devrez utiliser iinit au moins une fois avant 90 jours si vous voulez toujours utiliser le service.

Quotas

Par défaut, un quota de 100 TB est établi pour chaque utilisateur. Si vous avez besoin de plus d’espace, veuillez ouvrir un ticket sur le helpdesk SOS-GRICAD helpdesk ou en écrivant à sos-calcul-gricad.

Clients

iCommands

Pour accéder à Mantis via la ligne de commande, vous devez utiliser les clients iCommands. Les iCommands sont la manière la plus eficace et la plus performante d’accéder à Mantis. Elles sont utilisables depuis tous les noeuds de calcul des plateformes CIMENT de GRICAD. Ils sont disponibles sous la forme d’un paquet Nix qui est installé par défaut lorsque vous sourcez l’environnement Nix :

source /applis/site/nix.sh

Les iCommands communes sont : ils (pour lister les fichiers), iput (pour téléverser des fichiers), iget (pour télécharger des fichiers). Consultez la documentation irods pour plus d’informations.

Quelques exemples:

# Téléverser un fichier depuis un répertoire Bettik de Dahu:
$ iput 10GBtestfile

# Lister les fichiers
$ ils
/mantis/home/username:
  10GBtestfile

# Lister les fichiers avec les détails
$ ils -l
/mantis/home/username:
  username            0 imag;nigel1-r2-pt;nigel1-r2  10485760000 2022-06-27.16:14 & 10GBtestfile
$ rm 10GBtestfile

# Téléchargement d'un fichier
$ iget 10GBtestfile

# Création d'une collection (un répertoire)
$ imkdir images
$ iput stickers.jpg

# Effacement d'un fichier
$ irm stickers.jpg

# Téléversement d'un fichier dans une collection
$ iput stickers.jpg images
$ ils
/mantis/home/username:
  10GBtestfile
  C- /mantis/home/username/images
$ ils images
/mantis/home/username/images:
  stickers.jpg

# Calculer la taille d'une collection récursivement en octets
$ iquest "SELECT SUM(DATA_SIZE) WHERE COLL_NAME LIKE '/mantis/home/username/images%'"
DATA_SIZE = 1015834187376

# Calculer et afficher les checksum des fichiers d'une collection
$ ichksum images
C- /mantis/home/bzizou/images:
 ngc7000.jpg    sha2:2T6SMIUxiFqaJ6I+XqnyWSRDTDRzlGooc2FEEndpMfA=
 stickers.jpg    sha2:9xzvtX7XEQda4FMOUPw7JYjTUdEEaKTHnxK4YfmEp80=

Note : si vous ne souhaitez pas charger l’environnement Nix, veillez à ajouter /nix/var/nix/profiles/default/bin à votre variable d’environnement PATH (export PATH=/nix/var/nix/profiles/default/bin:$PATH)

Interface web

L’interface web Metalnx vous permet de naviguer et de gérer vos fichiers à partir d’un navigateur web. L’interface Matalnx de Mantis est accessible ici : Metalnx

Metalnx browser

Cette interface permet également de faire des recherches de fichiers en faisant des requêtes dans les meta-données, et d’afficher un aperçu des images.

Metalnx search

Metalnx preview

L’interface Metalnx est intéressante pour parcourir les fichiers mais ses performances sont assez mauvaises. Donc si vous avez de gros fichiers à transférer, nous vous recommandons fortement d’utiliser le protocole webdav décrit ci-dessous ou les icommands quand elles sont disponibles depuis votre machine d’origine.

Protocole webdav

Le protocole webdav peut être utile comme passerelle vers le monde extérieur au stockage en nuage de Mantis. Tout ce dont vous avez besoin est un client webdav et de le connecter à l’URL suivante :

https://mantis.univ-grenoble-alpes.fr/davrods/

ou, selon l’outil:

davs://mantis.univ-grenoble-alpes.fr/davrods/

Le slash final est important

Example de session avec le File Manager graphique de gnome:

Gnome file manager and davrods

Gnome file manager and davrods

Il suffit d’entrer la chaine de connexion davs://mantis.univ-grenoble-alpes.fr/davrods/ dans la zone “Autre serveur " de votre gestionnaire de fichiers

Example de session avec le client Linux en ligne de commande cadaver:

[bzizou@bart:~]$ cadaver https://mantis.univ-grenoble-alpes.fr/davrods/
WARNING: Untrusted server certificate presented for `mantis.univ-grenoble-alpes.fr':
Issued to: Université Grenoble Alpes, 621 avenue Centrale, Saint-Martin-d'Hères, Auvergne-Rhône-Alpes, 38400, FR
Issued by: GEANT Vereniging, NL
Certificate is valid from Tue, 15 Dec 2020 00:00:00 GMT to Wed, 15 Dec 2021 23:59:59 GMT
Do you wish to accept the certificate? (y/n) y
Authentication required for DAV on server `mantis.univ-grenoble-alpes.fr':
Username: bzizou
Password: 
dav:/davrods/> ls
Listing collection `/davrods/': succeeded.
Coll:   povray_results_mantis2                 0  Jun  3  2020
Coll:   system                                 0  Jun 30 16:48
        10GBtestfile                  10485760000  Nov 13 14:26
        test1                          161886424  Aug 26 15:08
dav:/davrods/> get test1
Downloading `/davrods/test1' to test1:
Progress: [=============================>] 100.0% of 161886424 bytes succeeded.
dav:/davrods/> quit
Connection to `mantis.univ-grenoble-alpes.fr' closed.

Cargo

Un hôte spécifique a été mis en place pour certaines opérations de transfert à destination ou en provenance de Mantis : mantis-cargo.u-ga.fr. Cet hôte est directement accessible avec votre compte PERSEUS et fournit des clients iCommands par défaut.

Cet hôte “Cargo” fournit également un répertoire local temporaire volumineux pour les opérations de transfert (situé dans /cargo).

Deux scripts spécifiques ont été mis en place pour permettre la registration irods ou la réplication centralisée :

~$ cireg.py -h
Usage: cireg.py [options]

Options:
  -h, --help            show this help message and exit
  -c COLLECTION, --collection=COLLECTION
                        Full path of the directory to register as an irods
                        collection
  -y, --yes             Answer yes to all questions
  -K, --checksum        Calculate a checksum on the iRODS server and store
                        with the file details
  -v, --verbose         Be verbose

~$ cipull.py -h
Usage: cipull.py [options]

Options:
  -h, --help            show this help message and exit
  -c COLLECTION, --collection=COLLECTION
                        Full path of the collection to centralize
  -y, --yes             Answer yes to all questions
  -v, --verbose         Be verbose

Accès direct à distance

L’accès direct à distance depuis les machines des laboratoires de recherche est possible, afin de permettre aux utilisateurs une plus grande souplesse dans la gestion de leurs données informatiques (génération initiale de données directement dans l’infrastructure, téléchargement des données produites par un équipement, téléchargement de la sortie de jobs de calcul etc.). La mise en place de ces accès n’est pas triviale, puisqu’elle nécessite d’ouvrir des brèches dans différents firewall, vers des machines avec une adresse ip fixe. Afin de mettre en place et d’optimiser ces accès, une évaluation au cas par cas doit être demandée. Pour ce faire, veuillez nous contacter, soit par email à sos-calcul-gricad ou via le helpdesk SOS-GRICAD.

Ressources de sauvegarde

Introduction

Mantis fournit des ressources spéciales de haute capacité pour faire des copies de sauvegarde de vos fichiers sensibles, ou des fichiers que vous voulez archiver à moyen terme, ou pour faire un peu de place sur les scratches des clusters pendant une certaine période. Ces ressources sont répliquées dans deux centres de données différents, afin que vous ayez toujours une copie en cas de gros crash (inondation, incendie, …).

Les ressources de sauvegarde sont beaucoup plus capacitives que les ressources “standard”, mais elles sont aussi beaucoup plus lentes ! Elles sont juste là pour héberger des copies de sauvegarde de vos fichiers, mais pas pour être accédées de manière intensive depuis les nœuds de calcul, donc, s’il vous plaît, utilisez-les avec précaution, et préférez faire une réplication (dite de “stage-in”) de vos fichiers sur les ressources par défaut si vous prévoyez à nouveau de faire des accès intensifs.

Une “copie de sauvegarde” n’est pas une “sauvegarde complète”. Cela signifie qu’elle n’empêche pas les erreurs humaines comme “oops, j’ai supprimé les fichiers, puis-je les récupérer?” Non, vous ne pourrez pas restaurer les fichiers supprimés par vous ! Une copie de sauvegarde vous évite de perdre vos fichiers originaux si le système initial tombe en panne, par exemple. Elle vous permet de faire de la place sur un système de fichiers “scratch”. Mais il ne s’agit pas d’une sauvegarde versionnée avec une période de rétention. Il n’y a pas de rétention !

Les ressources de sauvegarde sont “lentes”. C’est le prix à payer pour avoir de très grandes ressources capacitives. Pour éviter le débordement de données sur ces ressources lentes, nous recommandons vivement l’utilisation de l’option -N 0 des commandes iput et irepl lors de l’envoi de fichiers vers les ressources de sauvegarde.

règle 321

Il existe une règle qui dit que si vous voulez être à l’abri de la perte de données, vous devriez avoir 3 copies de vos fichiers, sur 2 types de stockage différents et 1 copie hors site. Si vos fichiers originaux sont sur un stockage différent (par exemple Bettik ou Summer), vous faites une combinaison 321 en téléversant simplement vos fichiers vers les ressources de sauvegarde de mantis2, car ces ressources sont répliquées sur 2 sites physiques différents.

Usage

Les ressources de sauvegarde sont actuellement composées de nigel4-zfs et nigel5-zfs sous le nom backup:

$ ilsresc backup
backup:replication
├── nigel4-zfs:unixfilesystem
└── nigel5-zfs:unixfilesystem

Pour information, nigel-4 se trouve dans le batiment IMAG et nigel-5 dans le batiment DSIM.

Il y a principalement deux façons différentes d’utiliser les ressources de sauvegarde de Mantis2 : vous pouvez répliquer des fichiers qui sont déjà hébergés par Mantis, ou vous pouvez téléverser directement vers les ressources de sauvegarde. Dans les deux cas, vous n’avez pas à vous soucier de la réplication sur les deux sites différents : Mantis crée automatiquement les 2 répliques.

Sachez tout de même que dans le premier cas, si vous n’avez pas déjà une copie hors de Mantis, vous ne remplissez pas entièrement la règle des 321 puisque vous stockez 3 copies sur un seul type de système de fichiers alors qu’il faudrait au moins 2 types différents.

Réplication de fichiers qui sont déjà hébergés par Mantis

Supposons que vous ayez déjà téléchargé une collection my_files sur Mantis, vous pouvez sécuriser vos données en les répliquant sur la ressource backup, en utilisant la commande irepl :

$ irepl -N 0 -r my_files -R backup

Vous pouvez vérifier si un fichier de cette collection a été correctement répliqué sur les 2 ressources de sauvegarde :

$ ils -l my_files/biology/quast
/mantis/home/username/my_files/biology/quast:
  username         0 imag;nigel2-r1-pt;nigel2-r1         1623 2022-05-31.11:04 & default.nix
  username         1 backup;nigel5-zfs         1623 2022-05-31.11:05 & default.nix
  username         2 backup;nigel4-zfs         1623 2022-05-31.11:05 & default.nix

Si vous avez déjà les fichiers originaux ailleurs (recommandé pour satisfaire la règle 321), vous pouvez supprimer la première réplique (celle dont l’id est 0) pour libérer de l’espace sur les ressources imag de Mantis, en utilisant la commande itrim :

$ itrim -n 0 -r my_files
Total size trimmed = 0.125 MB. Number of files trimmed = 108.
$ ils -l my_files/biology/quast
/mantis/home/username/my_files/biology/quast:
  username          1 backup;nigel5-zfs         1623 2022-05-31.11:05 & default.nix
  username          2 backup;nigel4-zfs         1623 2022-05-31.11:05 & default.nix

Notez que vos fichiers sont toujours disponibles pour un téléchargement direct :

$ iget my_files/biology/quast/default.nix

La seule différence est que les ressources de sauvegarde ne sont pas aussi rapides que les ressources “imag”, donc vous pourriez avoir à répliquer vers elles :

$ irepl -r my_files -R imag

Vous pouvez supprimer une collection entière et n’importe lequel de ses fichiers répliqués (même ceux qui sont sur les ressources de sauvegarde !) :

# WARNING : pas de retour en arrière possible !
$ irm -r my_files

Copier des fichiers directement sur les ressources de sauvegarde

Vous pouvez téléverser directement des fichiers vers les ressources backup, et obtenir 2 répliques de vos fichiers :

$ imkdir my_files
$ iput -N 0 -r biology my_files -R backup

Vérifiez la copie répliquée :

$ ils -l my_files/biology/astral
/mantis/home/username/my_files/biology/astral:
  username          0 backup;nigel5-zfs         1081 2022-05-31.11:28 & default.nix
  username          1 backup;nigel4-zfs         1081 2022-05-31.11:28 & default.nix

Notez que vos fichiers sont toujours disponibles pour un téléchargement direct :

$ iget my_files/biology/quast/default.nix

La seule différence est que les ressources de sauvegarde ne sont pas aussi rapides que les ressources “imag”, vous devrez donc peut-être les répliquer :

$ irepl -r my_files -R imag

Vous pouvez supprimer une collection entière et n’importe lequel de ses fichiers répliqués (même ceux qui sont sur les ressources de sauvegarde !) :

# WARNING : pas de retour en arrière possible !
$ irm -r my_files

Cohérence des données et utilisation des sommes de contrôle

Les ressources de sauvegarde de Mantis2 sont 2 ressources répliquées dans 2 centres de données différents. La réplication est automatique mais elle ne garantit pas la cohérence des données ! Cela signifie que dans certains cas très rares, une défaillance d’un site pourrait entraîner la non-synchronisation d’une réplique si vous effectuez une mise à jour.

Il est donc recommandé d’utiliser des sommes de contrôle. Une somme de contrôle est une signature unique qui est calculée lorsqu’un fichier est transféré et stockée en tant que métadonnée du fichier. Elle permet des comparaisons futures pour vérifier la cohérence du fichier. C’est également un bon moyen de savoir si le fichier transféré est exactement le même que le fichier source (aucune altération des données pendant le transfert).

Les sommes de contrôle ne sont pas calculées par défaut, car cela prend du temps et des ressources. Nous vous recommandons d’utiliser l’option -K lorsque vous utilisez iput pour téléverser des fichiers. Cette option calcule une somme de contrôle sur le fichier source, transfère le fichier, puis calcule la somme de contrôle sur la ressource de destination (qui sera stockée pour une vérification ultérieure), et compare si les 2 sommes de contrôle sont identiques :

$ iput -N 0 -K -r biology my_files -R backup 

Règles avancées

Mantis fournit quelques personnalisations, que nous avons implémentées pour certains cas d’utilisation provenant de la communauté GRICAD. N’hésitez pas à les utiliser ou à demander d’autres personnalisations…

Importation des informations EXIF des images dans les méta-données

Lorsque vous déposez des fichiers .JPG (ou .jpg) contenant des informations EXIF, ces données sont automatiquement converties en méta-données irods, ce qui vous permet d’effectuer des requêtes en les utilisant.

Voici un exemple :

# Print metadata of the previously uploaded "stickers.jpg" image
$ imeta ls -d stickers.jpg
AVUs defined for dataObj /mantis/home/bzizou/stickers.jpg:
attribute: EXIF ApertureValue
value: 7983/3509
units:
----
attribute: EXIF BrightnessValue
value: 2632/897
units:
----
[...]
# Obtenir toutes les images de plus de 4000 pixels
$ imeta qu -d "EXIF ExifImageWidth" ">" "4000"

Pour une utilisation avancée des métadonnées, nous recommandons le module python python-irodsclient.

Création automatique de vignettes d’images

Lorsque vous créez une sous-collection avec le nom thumbnails et que vous mettez des images dans la collection parente, vous obtenez automatiquement des petites versions 600x600 des images dans cette sous-collection thumbnails :

$ imkdir images
$ imkdir images/thumbnails
$ iput stickers.jpg images
$ ils -l images/stickers.jpg
  bzizou            0 imag;nigel1-r1-pt;nigel1-r1      2157087 2022-05-31.15:52 & stickers.jpg
$ ils -l images/thumbnails
/mantis/home/bzizou/images/thumbnails:
  bzizou            0 imag;nigel3-r1-pt;nigel3-r1        98861 2022-05-31.15:52 & stickers.jpg

Fichier de déclenchement d’un job OAR

Vous pouvez déclencher un job OAR sur un cluster de GRICAD en mettant simplement un fichier (même vide) dont le nom est formulé comme ceci :

<script>_<cluster>_oar-autosubmit

  • Le script avec le nom <script> doit être un script OAR situé dans un répertoire mantis/ dans votre home sur le cluster.
  • Le job oar est soumis sur le cluster <cluster> (actuellement seul bigfoot.u-ga.fr est supporté)
  • Le job oar est soumis avec le chemin iRods complet du fichier <script>_<cluster>_oar-autosubmit donné en paramètre.

Exemple :

$ # From the bigfoot.u-ga.fr frontend, set up a OAR script
$ mkdir ~/mantis
$ echo > ~mantis/orchamp.oar <<EOF
#!/bin/bash

#OAR -l /nodes=1/gpu=1,walltime=00:05:00
#OAR -p gpumodel='A100' or gpumodel='V100'
#OAR --project orchampvision

echo $1
nividia-smi -L
EOF
$ chmod 755 ~/mantis/orchamp.oar
$ # suppose you have some input files into the "test_jobs" collection on mantis
$ touch orchamp.oar_bigfoot.u-ga.fr_oar-autosubmit
$ iput orchamp.oar_bigfoot.u-ga.fr_oar-autosubmit test_jobs/
$ # check your jobs
$ oarstat -u
$ oarstat -fj <id>

Vous devriez voir un nouveau job exécutant la commande command = ./mantis/orchamp.oar /mantis/home/username/test_jobs/orchamp.oar_bigfoot.u-ga.fr_oar-autosubmit.