Utiliser l'espace de stockage

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Sommaire

Description

Sur une grappe Linux, il y a divers types de stockages couramment disponibles. La liste de choix varie d'un système à un autre. Il est donc important de regarder ce que le système que vous utilisez vous offre. Vous trouverez la documentation spécifique aux serveurs dans le bas de la page. Le choix approprié pour vos besoins dépend de plusieurs paramètres:

  • Quelle est la taille des fichiers en question?
  • Combien de fichiers sont requis?
  • Est-ce que vos fichiers sont temporaires ou ont besoin d'être conservés?
  • Quel est le format des fichiers?
  • Est-ce que l'accès au fichier est fait de façon contiguë?

Une fois que aurez répondu à ces questions, vous pourrez faire un choix approprié de l'unité de stockage approprié pour vos besoins.

Les bonnes pratiques

  • N'utilisez le format texte que pour des fichiers ne dépassant pas quelques Mo.
  • Autant que possible, utilisez l'espace de stockage local pour les fichiers temporaires.
  • Si votre programme doit faire des recherches dans un fichier, il est plus rapide d'en faire la lecture complète puis alors faire la recherche, ou d'utiliser un disque en mémoire ($RAMDISK ou /dev/shm).
  • Nettoyez de façon régulière les systèmes de fichiers parallèles, car ces systèmes sont utilisés pour de très grands ensembles de données.
  • Si vous n'utilisez plus certains fichiers, compressez-les (vous devriez les grouper avant) et mettez-les sur l'unité d'archive (si disponible).
  • Si vos besoins ne sont pas bien desservis par l'ensemble des unités disponibles contactez l'équipe technique de Calcul Québec

Types de stockage

Les types de stockage se distinguent par le matériel, l'accès et le système d'écriture disponible. Typiquement, la plupart des systèmes offre les unités de stockage des types suivants :

Système de fichiers réseau (NFS, network filesystem)
Ce type de stockage est généralement visible aussi bien des nœuds interactifs que des nœuds de calcul. C'est l'endroit approprié pour les fichiers que vous utilisez régulièrement : code source, programme et fichiers de configuration. C'est un type de stockage qui offre des performances comparables à celles d'un disque dur conventionnel.
Système de fichiers parallèle (Lustre ou GPFS)
Ce type de stockage est généralement visible aussi bien des nœuds interactifs que des nœuds de calcul. Combinant plusieurs jeux de disques et des serveurs performants, ce type de stockage offre d'excellentes performances pour traiter des gros fichiers à travers de grosses opérations d'entrée-sortie. On distingue souvent deux types de stockage sur des systèmes de fichiers parallèles : le stockage à long terme et le stockage temporaire (scratch). Les performances sont sujettes à des variations causées par d'autres utilisateurs.
Système de fichiers sur disque local
Ce type de stockage est composé d'un disque dur local à chaque nœud de calcul. L'avantage de ce dernier est que la performance d'écriture y est stable, car un seul usager peut l'utiliser. Toutefois, il ne faut pas oublier de rapatrier vos fichiers avant de fermer votre session car l'unité sera nettoyée après chaque tâche.
Système de fichiers en mémoire vive
Il s'agit d'un système de fichiers virtuel localisé dans la mémoire vive du nœud de calcul. Son utilisation réduit donc la mémoire disponible pour le calcul. Elle est très rapide pour les petits fichiers et particulièrement plus performante que les autres unités lorsque l'accès au fichier n'est pas fait de façon contiguë. Cette unité est toujours nettoyée à la fin d'une session.

Le tableau qui suit résume les propriétés de ces divers types de stockage.

Description des types de stockage
Type de stockage Répertoire typique Accessibilité Débit (grosses opérations, > 1 Mo par opération) Latence (petites opérations) Durée de vie
Système de fichiers réseau $HOME Tous les nœuds 100 Mo/s partagé Haute Long terme
Système de fichiers parallèle à long terme $HOME, $RAP, /home, /sb/project/, /gs/project Tous les nœuds 1-10 Go/s partagé Haute Long terme
Système de fichiers parallèle à court terme $SCRATCH Tous les nœuds 1-10 Go/s partagé Haute Court terme (purgé périodiquement)
Système de fichiers sur disque local $LSCRATCH Local sur le nœud 100 Mo/s Moyenne Très court terme
Système de fichiers en mémoire vive $RAMDISK, /dev/shm Local sur le nœud 1-10 Go/s Très courte Très court terme, nettoyé après chaque tâche

Unités de stockage

Les unités de stockage se distinguent par le matériel, son accès et le système d'écriture disponible. Typiquement, la plupart des systèmes offre les unités de stockage des types suivant (notez que les noms exacts peuvent changer d'un serveur à l'autre):

$HOME
Il s'agit de l'unité où vous arrivez lorsque vous ouvrez une session. Cette unité est visible des nœuds interactifs ainsi que des nœuds de calcul. C'est l'endroit approprié pour les fichiers que vous utilisez régulièrement: code source, programme et fichiers de configuration. Bien souvent, les informations y sont sauvegardées et peuvent donc être retrouvées en cas de perte. Pour Cottos, Mp2, Ms2 et Psi cette unité est de type réseau alors qu'elle est parallèle pour Briarée, Colosse, Guillimin et Hadès
$SCRATCH
Cette unité se trouve sur un système de fichiers parallèle, Lustre (pour Colosse, Mp2, Ms2 et Cottos) ou GPFS (pour Briarée et Guillimin). Elle est généralement visible par tous les nœuds. C'est très rapide pour les grands fichiers, mais peu efficace lorsqu'on traite plusieurs petits fichiers. Ce dossier est approprié pour de grands fichiers que vous n'utilisez que pendant des périodes de quelques jours ou semaines. Cette unité de stockage peut être purgée (fichiers supprimés) automatiquement et périodiquement.
$LSCRATCH
Si disponible, cette unité de stockage est locale, elle se situe sur le disque dur de chaque nœud de calcul. L'avantage de ce dernier est que la performance d'écriture y est stable, car un seul usager peut l'utiliser. Toutefois, il ne faut pas oublier de rapatrier vos fichiers avant de fermer la session car l'unité sera nettoyée après chaque tâche.
$RAMDISK
Cette unité se trouve sur un disque virtuel dans la mémoire vive. Son utilisation réduit donc la mémoire disponible pour le calcul. Elle est rapide pour les petits fichiers et particulièrement plus performante que les autres unités lorsque l'accès au fichier n'est pas fait de façon contiguë. Ce dossier est toujours nettoyé à la fin d'une session.

Certains systèmes contiennent une liste plus longue d'unité. Pour connaître les unités spécifiques au système que vous utilisez, visitez les onglets en bas de cette page.

Formats de stockage

Tout comme pour les unités, divers choix s'offrent à vous en ce qui concerne le format de stockage. La diversité des choix dépend de votre type d'application (série ou parallèle), du langage dans lequel il est écrit (C, C++, Fortran, Python, etc.), de la quantité d'information que vous avez besoin d'écrire, etc. Nous nous contenterons de décrire les formats les plus communs. Les deux premiers formats sont les formats de base sur lesquels les autres formats sont construits.

Texte
Appelé également format ASCII (mais d'autres jeux de caractères sont possibles), ce format est généralement lisible par un humain. Il peut être édité et modifié par un simple éditeur, cependant, l'écriture et la lecture sont lents et occupe davantage d'espace. Généralement portable, ce format peut requérir de petits changements, par exemple en ce qui concerne le retour de chariot. Ce format est pratique pour les fichiers de configuration et de paramètres. Il englobe des formats structurés tel XML et est accessible à tous les langages.
Binaire
Ce format a comme principal défaut qu'il n'est pas lisible par un humain, bien que certains logiciels permettent de visualiser de tels fichiers. Il offre cependant l'avantage d'être beaucoup plus rapide d'accès et requiert moins d'espace de stockage que le format texte. Sa portabilité est moyenne : elle est moindre que celle du format texte, car elle dépend du boutisme (endianness) de la machine utilisée. Notez qu'il y a quelques complications pour l'écriture binaire en Fortran réduisant la portabilité du fichier. Ce format est disponible dans tous les langages, mais ne se porte par facilement du Fortran vers un autre langage.
MPI-IO
Uniquement pour les codes parallèles MPI. Ce format est une sous-catégorie du format binaire. En fait, on devrait plutôt parler d'une bibliothèque que d'un format, car une fois le fichier écrit, il n'y a pas de différence avec le format binaire. La portabilité du fichier est identique à celle du fichier binaire. L'utilisation de MPI-IO aide à rendre un code indépendant du nombre de processus MPI (en comparaison de l'écriture binaire simple). Le débit d'écriture-lecture est également semblable. Sur un système de fichiers parallèle (Lustre ou GPFS), il peut être plus rapide selon le réseau. Les problèmes de portabilité des fichiers binaires en Fortran sont partiellement corrigés.
HDF5
Permet de structurer l'écriture de données complexes. Elle permet ainsi de généraliser et aide à maintenir un code. La portabilité est améliorée par rapport au cas binaire, car le boutisme des données est enregistré dans l'entête du fichier. Le fichier produit contient une signature particulière à ce format, mais ces données sont en binaire, ce qui permet d'avoir un assez bon débit d'écriture-lecture. De plus, HDF5 supporte certaines compressions permettant ainsi de produire des fichiers de plus petite taille. Il est également possible d'installer HDF5 sur MPI-IO pour utiliser HDF5 dans des codes parallèles. Il est également possible d'optimiser HDF5 pour son utilisation sur Lustre ou GPFS.
netCDF
Il s'agit également d'une bibliothèque qui structure des données complexes. Celle-ci est bâtie sur HDF5 (netCDF-4) et ainsi elle peut être utilisée en parallèle (MPI-IO). Cette bibliothèque est également très répandue et offre donc une très bonne portabilité (toutefois, elle est plus récente que HDF5). Le principal avantage de netCDF sur HDF5 est son interface plus simple qui est inspirée de celle des versions précédentes (netCDF-3). Les caractéristiques de netCDF sont un sous-ensemble des caractéristiques de HDF5, ce qui fait que certains fichiers HDF5 ne pourront être lus avec netCDF.
Description des formats de stockage
Format Taille Débit Portabilité
Texte Plus gros que requis Lent Très bonne
Binaire Bonne Rapide Boutisme
MPI-IO Bonne Rapide Bibliothèque requise
HDF5 Compressé Rapide Bibliothèque requise
netCDF Compressé Rapide Bibliothèque requise

Documentation spécifique aux serveurs

$HOME
Espace individuel, différent pour chaque utilisateur.
Accessible en lecture et écriture de tous les nœuds, par l'utilisateur seulement (par défaut).
Système de fichiers partagé GPFS de 7,3 To.
Données persistantes.
Sauvegardes régulières.
$SCRATCH
Espace individuel, différent pour chaque utilisateur.
Accessible en lecture et écriture de tous les nœuds par l'utilisateur.
Accessible en lecture seulement par les membres du groupe.
Système de fichiers partagé GPFS de 219 To.
De quatre à 16 fois plus rapide que $HOME.
Données persistantes.
Aucune sauvegarde.
$LSCRATCH
Espace de stockage local sur chaque nœud d'une tâche.
Répertoire créé pour la tâche au début de l'exécution, effacé à la fin.
Système de fichiers ext4 de 182 Go.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
$PARALLEL_LSCRATCH
Espace de stockage partagé entre les nœuds associés à une même tâche (utilise les disques locaux).
Système de fichiers parallèles entre ces nœuds (FhGFS)
La capacité est la somme des $LSCRATCH des nœuds.
Disponible sur demande. Il suffit de définir ENABLE_PARALLEL_LSCRATCH=1 dans le fichier de soumission.
Fichiers temporaires pour le temps du calcul. Il faut copier les fichiers désirés vers $HOME ou $SCRATCH avant que ne se termine la tâche.
$RAMDISK
Espace de stockage local au nœud, en mémoire.
Très rapide.
Taille inférieure à la moitié de la mémoire du nœud.
Répertoire créé pour la tâche au début de l'exécution, effacé à la fin.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
$PARALLEL_RAMDISK
Espace de stockage partagé entre les nœuds associés à une même tâche (utilise la mémoire du nœud).
Système de fichiers parallèles entre ces nœuds (FhGFS)
La capacité est la somme des $RAMDISK des nœuds.
Disponible sur demande. Il suffit de définir ENABLE_PARALLEL_RAMDISK=1 dans le fichier de soumission.
Fichiers temporaires pour le temps du calcul. Il faut copier les fichiers désirés vers $HOME ou $SCRATCH avant que ne se termine la tâche.
Colosse n'offre aucun disque local à chaque nœud, excepté l'espace disque en mémoire vive. Tout le stockage disponible aux utilisateurs fonctionne sur le système de fichiers Lustre. De même, aucune sauvegarde n'est effectuée. Les chercheurs sont les seuls responsables de l'intégrité de leurs données.
$HOME
Accessible de tous les nœuds.
Débit de 10 Go/s partagé.
Répertoire $HOME généralement accessible en lecture par tous les membres d'un groupe, mais en écriture par le propriétaire uniquement.
$RAP
Accessible de tous les nœuds.
Débit de 10 Go/s partagé.
Répertoire accessible en lecture et écriture par tous les membres d'un groupe de recherche.
$SCRATCH
Accessible de tous les nœuds.
Débit de 10 Go/s partagé.
Répertoire accessible en lecture et écriture par tous les membres d'un groupe de recherche.
Répertoire purgé périodiquement.
$RAMDISK
Espace de stockage local au nœud
Débit de 10 Go/s, taille inférieure à 12 Go.
Temporaire, nettoyé après chaque tâche.

Politique d'utilisation

La Politique d'utilisation des systèmes de fichiers de Colosse est disponible en suivant ce lien.
$HOME
Espace individuel, différent pour chaque utilisateur.
Accessible en lecture et écriture de tous les nœuds, par l'utilisateur seulement (par défaut).
Système de fichiers partagé NFS de 745 Go.
Données persistantes.
Sauvegardes régulières.
$SCRATCH
Espace individuel, différent pour chaque utilisateur.
Accessible en lecture et écriture de tous les nœuds par l'utilisateur.
Accessible en lecture seulement par les membres du groupe.
Système de fichiers partagé Lustre de 151 To.
Accès performant pour les gros fichiers.
Données persistantes.
Aucune sauvegarde.
$LSCRATCH
Espace de stockage local sur chaque nœud de la grappe
Système de fichiers ext3 de 129 Go.
Créez un sous-répertoire où vous écrirez et que vous effacerez vous-mêmes avant la fin de la tâche.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
/dev/shm
Espace de stockage local au nœud, en mémoire.
Très rapide.
Taille inférieure à la moitié de la mémoire du nœud.
Créez un sous-répertoire où vous écrirez et que vous effacerez vous-mêmes avant la fin de la tâche.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
$HOME
Espace individuel, différent pour chaque utilisateur.
Répertoire $HOME généralement accessible en lecture par tous les membres d'un groupe, mais en écriture par le propriétaire uniquement.
Système de fichiers partagé GPFS de 3,7 Po, taille de 10 GB par utilisateur.
Données persistantes.
Sauvegardes quotidiennes.
/gs/project/rapID ou /sb/project/rapID/
Espace groupe, différent pour chaque groupe.
Accessible en lecture et écriture de tous les nœuds.
Accessible en lecture et écriture de tous les membres d'un groupe.
Système de fichiers partagé GPFS de 3,7 Po, taille de 1 TB par groupe.
Données persistantes.
Aucune sauvegarde.
$SCRATCH (/gs/scratch/nom_utilisateur)
Espace individuel, différent pour chaque utilisateur.
Accessible en lecture et écriture de tous les nœuds par l'utilisateur.
Généralement accessible en lecture par tous les membres d'un groupe, mais en écriture par le propriétaire uniquement.
Système de fichiers partagé GPFS de 3,7 Po.
Données persistantes.
Aucune sauvegarde.
Répertoire purgé périodiquement : tous les fichiers non modifiés dans les 45 derniers jours sont supprimés le 15e jour de chaque mois.
$LSCRATCH (/localscratch/$PBS_JOBID)
Espace de stockage local sur chaque nœud de la grappe
Système de fichiers ext4 de 343 Go.
Répertoire créé pour la tâche au début de l'exécution, effacé à la fin.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
$RAMDISK (/dev/shm/$PBS_JOBID)
Espace de stockage local au nœud, en mémoire.
Très rapide.
Taille inférieure à la moitié de la mémoire du nœud.
Répertoire créé pour la tâche au début de l'exécution, effacé à la fin.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
$HOME
Espace individuel, différent pour chaque utilisateur.
Accessible en lecture et écriture de tous les nœuds, par l'utilisateur seulement (par défaut).
Système de fichiers partagé GPFS de 7,3 To.
Données persistantes.
Sauvegardes régulières.
$SCRATCH
Espace individuel, différent pour chaque utilisateur.
Accessible en lecture et écriture de tous les nœuds par l'utilisateur.
Accessible en lecture seulement par les membres du groupe.
Système de fichiers partagé GPFS de 219 To.
De quatre à 16 fois plus rapide que $HOME.
Données persistantes.
Aucune sauvegarde.
$LSCRATCH
Espace de stockage local sur chaque nœud d'une tâche.
Répertoire créé pour la tâche au début de l'exécution, effacé à la fin.
Système de fichiers ext4 de 412 Go.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
$RAMDISK
Espace de stockage local au nœud, en mémoire.
Très rapide.
Taille inférieure à la moitié de la mémoire du nœud.
Répertoire créé pour la tâche au début de l'exécution, effacé à la fin.
Aucune sauvegarde, copiez les résultats ailleurs avant la fin de la tâche.
Helios partage les mêmes systèmes de fichiers parallèles que Colosse. De même, aucune sauvegarde n'est effectuée. Les chercheurs sont les seuls responsables de l'intégrité de leurs données.
$HOME
Accessible de tous les nœuds.
Débit de 10 Go/s partagé.
Répertoire $HOME généralement accessible en lecture par tous les membres d'un groupe, mais en écriture par le propriétaire uniquement.
$RAP
Accessible de tous les nœuds.
Débit de 10 Go/s partagé.
Répertoire accessible en lecture et écriture par tous les membres d'un groupe de recherche.
$SCRATCH
Accessible de tous les nœuds.
Débit de 10 Go/s partagé.
Répertoire accessible en lecture et écriture par tous les membres d'un groupe de recherche.
Répertoire purgé périodiquement.
$RAMDISK
Espace de stockage local au nœud
Débit de 10 Go/s, taille inférieure à 12 Go.
Temporaire, nettoyé après chaque tâche.
$LSCRATCH (ou $LSCRATCH_JOB)
Espace de stockage local au noeud, sur disque
Débit de ~1 Go/s, taille de 2To.
Temporaire, nettoyé après chaque tâche.
$LSCRATCH_USER
Espace de stockage local au noeud, sur disque
Débit de ~1 Go/s, taille de 2To.
Temporaire, nettoyé quand il ne reste plus de tâches de l'usager sur le noeud


Politique d'utilisation

La Politique d'utilisation des systèmes de fichiers de Colosse est disponible en suivant ce lien.

Mammouth parallèle II

Certains noms des espaces de stockage ont été modifiés en 2014. Nous avons utilisé les principes suivants pour choisir les nouveaux noms:

Un nom doit bien décrire le système en question: Est-ce un système parallèle? Est-il temporaire? Quand est-il nettoyé?
Ce n'est pas bien grave si un nom est long: il est possible à l'usager de se définir des alias, la touche de tabulation permet de compléter le nom.
$HOME
Accessible de tous les nœuds (Ms2 également)
Débit de 105 Mo/s partagé, taille de 100 Go/groupe
Sauvegardé.
Utilisez le répertoire $HOME_GROUP pour le partage de données avec des collègues de travail.
$PARALLEL_SCRATCH_MP2_WIPE_ON_...
Il y a deux variantes avec des dates de nettoyage différentes.
Accessible de tous les nœuds (pas de Ms2)
Débit de 10 Go/s partagé, taille de 1 To/groupe
Pas de sauvegarde.
Système de fichiers distribué Lustre.
Utilisez le répertoire $PARALLEL_SCRATCH_GROUP_MP2_WIPE_ON_... pour le partage de données avec des collègues de travail.
$ARCHIVE
Accessible des nœuds interactifs (de Ms2 aussi)
Débit de 80 Mo/s partagé, taille de 1 To/groupe
Sauvegardé.
Pour le stockage à longue durée.
Utilisez le répertoire $ARCHIVE_GROUP pour le partage de données avec des collègues de travail.
$LSCRATCH
Espace de stockage local au nœud
Débit de 120 Mo/s, taille de 820 Go
Temporaire.
$PARALLEL_LOCAL_SCRATCH
Espace de stockage partagé entre les noeuds associés à une même tâche (utilise les disques locaux).
Système de fichiers parallèles entre ces noeuds (FhGFS) avec compression (lz4)
Capacité de 1.8 To multiplié par le nombre de noeud.
Striping de 512 Ko.
Disponible sur demande (il suffit de définir ENABLE_PARALLEL_LOCAL_SCRATCH=1 dans le fichier de soumission.
Fichiers temporaires pour le temps du calcul. Il faut copier les fichiers désirés vers $HOME ou $PARALLEL_SCRATCH_MP2_... avant que ne se termine la tâche.
$RAMDISK
Espace de stockage local au nœud
Débit de 1,8 Go/s (par coeur), taille inférieur à 32 Go
Temporaire.

Mammouth série II

Certains noms des espaces de stockage ont été modifiés en 2014. Nous avons utilisé les principes suivants pour choisir les nouveaux noms:

Un nom doit bien décrire le système en question: Est-ce un système parallèle? Est-il temporaire? Quand est-il nettoyé?
Ce n'est pas bien grave si un nom est long: il est possible à l'usager de se définir des alias, la touche de tabulation permet de compléter le nom.
$HOME
Accessible de tous les nœuds (Mp2 également)
Débit de 80 Mo/s partagé, taille de 100 Go/groupe
Sauvegardé.
Utilisez le répertoire $HOME_GROUP pour le partage de données avec des collègues de travail.
$PARALLEL_SCRATCH_MS2_WIPE_ON_...
Accessible de tous les nœuds (mais pas des noeuds de Mp2)
Débit de 5,5 Go/s partagé, taille de 1 To/groupe
Pas de sauvegarde.
Système de fichiers distribué Lustre.
Utilisez le répertoire $PARALLEL_SCRATCH_GROUP_MS2_WIPE_ON_... pour le partage de données avec des collègues de travail.
$ARCHIVE
Accessible des nœuds interactifs (de Mp2 aussi)
Débit de 80 Mo/s partagé, taille de 1 To/groupe
Sauvegardé.
Pour le stockage à longue durée.
Utilisez le répertoire $ARCHIVE_GROUP pour le partage de données avec des collègues de travail.
$LSCRATCH
Espace de stockage local au nœud
Débit de 120 Mo/s, taille de 500 Go
Temporaire.
$RAMDISK
Espace de stockage local au nœud
Débit de 1,8 Go/s (par coeur), taille inférieur à 32 Go
Temporaire.


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager