Aller au contenu

Gestion des données sur la baie de disques

Les chemins, les quotas, les conseils et commandes pour gérer au mieux ses données de calcul sur Austral

Introduction

Les données du calculateur Austral sont stockées sur une baie de disques accessible sur l'ensemble du cluster grâce à un système de fichiers Lustre. La baie est composée d'un pool flash de 1Po de stockage en technologie de flash et d'un pool disk de 1Po de stockage en technologie disques rotatifs mécaniques. Les performances mesurées lors de la livraison sont de 283 Go/s en lecture et 163 Go/s en écriture pour l'espace par défaut (pool flash).
A la saturation de l'espace flash, les données sont automatiquement migrées sur l'espace disk moins performant.
Ces deux espaces forment un système de fichiers unique présenté sur les nœuds du calculateur Austral, de manière transparente pour les utilisateurs.

Rôles des arborescences :

  • /home contient les dossiers d'accueil des utilisateurs.
  • /dlocal contient les dossiers temporaires des calculs (/dlocal/run) et certains dossiers de calcul permanents (/dlocal/home) quand le besoin est qualifié.
  • /soft contient les logiciels mis à disposition par le CRIANN

Attention : aucune sauvegarde n'est effectuée sur les données utilisateurs. Pensez à rapatrier vos codes et vos données dans vos laboratoires.

Les quotas

Afin d'éviter une saturation de la baie de disque en volumétrie et en nombre d'inodes, il a été mis en place des quotas à deux niveaux :

  • par identifiant sur la totalité de la baie de disques
    • volumétrie : quota strict de 30To
    • nombre d'inodes (lié au nombre de fichiers) : quota strict de 5M
  • par arborescence indépendamment du propriétaire des fichiers
    • /home/projet_id/identifiant : quota strict de 50Go, sur le dossier d'accueil de l'utilisateur
    • /home/projet_id/PARTAGE : quota strict de 200Go sur le dossier PARTAGE associé au projet
    • (optionnel) /dlocal/home/projet_id : quota informatif sans limitation. Cas particulier pour certains projets

Ces quotas peuvent être adaptés sur demande justifiée après du support (support@criann.fr).

Ménage dans /dlocal/run

Le CRIANN a fait le choix de décaler la suppression automatique des dossiers temporaires (/dlocal/run/<jobid>). Cela permet d'enchaîner plusieurs calculs dans ce dossier.

Depuis le 2 juin 2025, un script automatique efface les dossiers temporaires /dlocal/home/<jobid> 45 jours après la fin du calcul associé <jobid>. Ce comportement est identique à celui que vous connaissiez sur Myria.
Seuls les dossiers présents dans /dlocal/run/<jobid> sont supprimés : le script ne touche pas aux arborescences /home ou /dlocal/home/<jobid>.

Nous vous recommandons de ne pas laisser de fichiers à conserver dans ces arborescences sous peine de les voir disparaître.

Si vous générez un grand nombre de fichiers lors de vos calculs, surveillez votre consommation d'inodes :

  • supprimer vos données de /dlocal/run/<jobid> au fur et à mesure.
  • archivez certaines arborescences avec la commande tar : une archive = 1 fichier

L'archivage permet de simplifier et d'optimiser les transferts réseaux, notamment pour le rapatriement de vos données sur vos espaces de stockage dans vos laboratoires.

Cas particulier : OpenFoam

En fonction du paramétrage, les solveurs parallèles d'OpenFOAM peuvent fortement solliciter le système de fichiers parallèles d'Austral, en écrivant un tout petit fichier pour chaque tâche MPI à chaque pas de temps, ou fréquemment, et pour chaque variable. Le nombre de fichiers ainsi généré peut être très élevé.
Les post-traitements peuvent alors solliciter fortement le système de fichiers parallèle en relisant tous ces petits fichiers.

Pour rappel : le système de fichiers Lustre est optimisé pour les gros fichiers.

Bonne pratique : utilisation d'objets fonctionnels pour créer des images de post-traitement de sous-ensembles de données :
https://doc.openfoam.com/2306/tools/post-processing/function-objects/

En outre, le format de fichier agrégé (collated) a été introduit dans OpenFOAM, dans lequel les données de chaque champ (et maille) décomposé sont agrégées dans un fichier unique qui est écrit (et lu) sur le processeur principal. Les fichiers sont stockés dans un répertoire unique appelé pocessors.

L’option -fileHandler collated est disponible pour les lignes de commande de decomposePar et des solveurs parallèles.

Voir par exemple « File input/output in parallel » sur :
https://doc.cfd.direct/openfoam/user-guide-v11/running-applications-parallel

et la page :
https://www.openfoam.com/news/main-news/openfoam-v1712/parallel

Volumétrie utilisée

Les commandes Lustre étant complexes, le Criann a mis un place un script permettant un affichage simplifié et synthétique : cri_quota

Syntaxe : cri_quota

  • -h : aide en ligne indiquant des options avancées
$ cri_quota
Quota information for user user_name (member of primary group project_id) : 2024-06-04 11:58:46

p.s: user and group types: across the whole storage

+------+----------------------------+---------+--------+----------+----------+-----------+-----------+-----------+------------+------------+-------------+
| type | name                       | blk_pct |   used | blk_soft | blk_hard | blk_grace | inode_pct |     files | inode_soft | inode_hard | inode_grace |
+------+----------------------------+---------+--------+----------+----------+-----------+-----------+-----------+------------+------------+-------------+
| user | user_name                  |  0.298% | 91.46G |      30T |      30T |         - |      1.3% |   195 414 |  5 000 000 |  5 100 000 |           - |
| path | /home/project_id/PARTAGE   |       - | 15.12T |        - |        - |         - |         - | 2 946 756 |          - |          - |           - |
| path | /home/project_id/user_name |       - | 27.35G |        - |        - |         - |         - |   147 056 |          - |          - |           - |
+------+----------------------------+---------+--------+----------+----------+-----------+-----------+-----------+------------+------------+-------------+

Il reste possible d'interroger Lustre directement avec la commande lfs quota. Pour plus d'informations sur cette commande consulter le manuel : man lfs-quota

Utilisation d'une arborescence sur le pool disk

Le pool par défaut dans les arborescences /home, /dlocal/run et /dlocal/home est le pool flash.

Pour éviter la saturation du pool flash, dans le cas d'utilisation d'une grosse volumétrie, il peut être pertinent d'utiliser le pool disk. Ce pool étant plus lent, nous vous conseillons de comparer les performances par rapport au pool flash.
En cas de questions, contacter le support.

Création d'un dossier dans le pool disk

# Création
$ mkdir mon_dossier
$ lfs setstripe --pool disk mon_dossier

# Vérification
$ lfs getstripe -d --pool mon_dossier
disk

Remarque :

  • pour choisir le pool flash, il suffit de spécifier --pool flash
  • l'option -d indique que l'on souhaite connaître l'information pour le dossier et non son contenu.

Création des fichiers dans le pool disk

Le pool utilisé lors de la création d'un nouveau fichier ou dossier est déterminé par héritage du dossier où il est créé.
Si le fichier ou dossier est ensuite déplacé (mv), il reste sur le pool initial. Par conséquence, pour changer de pool, recopiez vos fichiers dans le nouveau dossier ou archivez-désarchivez s'il s'agit d'une arborescence.

L'espace par défaut est le pool flash mais en cas de remplissage important de la baie de disques, les fichiers les plus volumineux sont déplacés automatiquement vers le pool disk sans changer leur emplacement dans l'arborescence. En cas de doute, vérifiez le pool utilisé pour vos fichiers.

Localisation d'un fichier (pool)

La commande lfs getstripe permet de connaître le pool utilisé par un fichier.

# Pour un fichier
$ lfs getstripe --pool mon_fichier
disk

Changement de pool d'un fichier ou d'une arborescence

Deux solutions pour changer un fichier de pool :

  • le migrer avec la commande lfs migrate (voir ci-dessous)
  • le recopier (cp et non mv) dans un dossier déjà situé sur le pool souhaité puis supprimer l'original

La commande lfs migrate, comme son nom l'indique, permet entre autre de migrer des fichiers d'un pool à l'autre. Celle-ci ne fonctionne pas sur les dossiers.

Deux solutions pour changer un dossier (sans son contenu) de pool :

  • utiliser la commande lfs setstripe (voir ci-dessous)
  • le recopier dans un dossier déjà dans le pool souhaité

Pour changer une arborescence (dossier et contenu) de pool :

  • les migrer en utilisant les deux commandes lfs migrate et lfs setstripe (voir ci-dessous)
  • recopier (cp -R) dans un dossier déjà dans le pool souhaité
  • l'archiver/désarchiver (tar)

Il n'existe pas de commande unique accessible par les utilisateurs pour migrer une arborescence (dossier et contenu) : il faut combiner 2 commandes.

Exemples :

# Migration d'un fichier du pool disk au pool flash
$ lfs migrate --pool flash mon_fichier
# Migration d'un fichier du pool flash au pool disk
$ lfs migrate --pool disk mon_fichier


# Migration d'un dossier du pool disk au pool flash
$ lfs setstripe --pool flash mon_dossier
# Migration d'un dossier du pool flash au pool disk
$ lfs setstripe --pool disk mon_dossier


# Migration d'une arborescence (dossier et contenu) du pool flash au pool disk, en 2 temps
## Les dossiers
$ lfs find mon_dossier --pool disk --type f --print0 | xargs -n 1 -0 lfs migrate --pool flash
## Les fichiers
$ lfs find mon_dossier --pool disk --type d --print0 | xargs -n 1 -0 lfs setstripe --pool flash

Attention : ne pas modifier un fichier en cours de migration.

Le stripping

La baie de stockage est composée de plusieurs serveurs de données. Le stripping correspond à la répartition de données des fichiers sur ces différents serveurs. Il permet également de définir une taille de blocs.

Si vous souhaitez plus d'informations sur les commandes liée au striping, contactez le support (support@criann.fr).

Astuces et commandes utiles

Liste des dossiers temporaires pour un utilisateur

$ lfs find /dlocal/run -type d -mindepth 1 -maxdepth 1 -user nom_login

Liste des calculs dans une partition

Liste des calculs soumis dans la partition hpda entre le 1/10/2023 et le 15/10/2023

$ sacct -r hpda -S 2023-10-01 -E 2023-10-15

Vous pouvez rajouter l'option -l pour afficher plus d'informations.

Nombre de fichiers dans une arborescence

Pour connaître le nombre de fichiers dans une arborescence :

$ lfs find chemin_dossier -type f | wc -l

Recommandations

Dans les scripts de soumission...

Le rapatriement des données s'effectue avec une commande mv pour rester sur le pool flash et cp pour recopier dans un dossier sur pool disk.

Intérêt des gros fichiers

Si vous développez, privilégiez les fichiers volumineux avec des formats de type HDF5 plutôt qu'une multitude de petits fichiers. Vous gagnerez en performances sur les clusters de calcul.

Surveillance des quotas

Si vous générez un très grand nombre de fichiers, surveillez votre quota : vous pouvez l'afficher automatiquement lors de la connexion, en ajoutant la commande ma_conso dans votre fichier ~/.bash_profile.

Versioning

Nous vous encourageons fortement à utiliser les outils de versioning de vos établissements, tel que GIT. Renseignez-vous auprès de vos DSI.

Le client git est installé sur les frontales, sans chargement de module.


Dernière mise à jour: 4 juin 2025 15:50:20