Transfert de données
Une fois qu'un utilisateur a obtenu un compte sur le cluster de calcul, une des choses qu'il souhaite faire est de transférer ses données vers ou en provenance du cluster.
Il existe plusieurs manières de transférer des données, parmi les plus communes, il y a scp
(Secure Copy), sftp
(Secure File TRansfer Protocol) et winscp
Transfert de fichiers par scp
scp est un outil disponible en ligne de commande, simple et non-interactif contrairement à sftp qui est interactif et offre la possibilité de lister des répertoires, copier, supprimer, créer des répertoires, etc...
D'un fichier ou d'un dossier d'une machine en local vers le cluster
$ scp /path/to/my_local_file <login>@hpc2.mesocentre.uca.fr:/home/<login>/
$ scp -r /path/to/my_local_dir <login>@hpc2.mesocentre.uca.fr:/home/<login>/my_remote_dir
De fichiers du cluster vers une machine en local
$ scp <login>@hpc2.mesocentre.uca.fr:/home/<login>/my_remote_file /path/to/store/my_remote_file
(si vous avez configuré votre ~/.ssh/config en précisant HPC2, alors vous pouvez remplacer '
Plus d'informations sur l'usage de la commande scp dans le manuel
Transfert de fichier par SFTP
Un exemple est détaillé dans le cadre de l'utilisation du web service Galaxy et nécessite l'installation de FileZilla.
Transfert de fichiers sous Windows avec WinSCP
Vous pouvez utiliser WinSCP pour transférer directement vos données entre votre poste de travail et HPC2. Il est possible de configurer WinSCP pour qu'il utilise directement la passerelle ext de façon transparente, en faisant comme suit :
-
Il faut disposer de sa clé privée générée avec PuTTYgen, mettons
key.ppk
-
Dans WinSCP, dans la fenêtre de login, entrez les informations suivantes (mettez votre login à la place de donaduck). Le champ Password est bien vide, on va se connecter via la clé privée :
-
Cliquez sur "Advanced", et dans Connexion -> Tunnel, entrez les informations suivantes (en choisissant bien votre fichier key.ppk, et en mettant votre login à la place de donaduck). Le champ Password est bien vide, on va se connecter via la clé privée :
-
Toujours dans Advanced, cette fois dans SSH -> Authentication, indiquez votre clé key.ppk :
-
Cliquez sur OK pour retourner sur la fenêtre de Login, cliquez sur "Save" pour enregistrer cette configuration, puis sur Login pour se connecter, normalement, avec succès. La première fois que vous vous connectez, il est possible que WinSCP vous demande d'accepter les clés des serveurs distants.
Transfert de fichiers avec le système de stockage S3
Utilisation du dashboard Oscar
Pour effectuer des opérations simples telles que la création d'un répertoire ou d'un dépôt de fichier, se déplacer dans le menu à gauche : Projet > Stockage d'objets > Conteneurs et cliquez sur le nom de votre bucket. La taille des fichiers téléchargeable est limitée à 5 Go.
Utilisation d'outils graphiques
Des outils gratuits sous Windows gèrent le stockage S3 comme Cyberduck et WinSCP. Lors de leur configuration, il est nécessaire de spécifier des informations disponibles dans le fichier de configuration ~/.config/rclone/rclone.conf
Exemple d'utilisation de la ligne de commande sur le cluster de calcul via les applications rclone
et goofys
Les exemples ci-dessous complètes ceux fournis sur les pages de documentation rclone et goofys
En fonction des cas d'usage, deux options sont recommandées :
Option 1 : Transférer et stocker temporairement des données dans l'espace dans le scratch
L'utilisation de cette option nécessite de vérifier au préalable que l'espace partagé (le scratch) disponible sur le noeud correspond au besoin du job (volumétrie des données initiales et des données produites). Sur un noeud de calcul standard, il y a 500 Go d'espace de stockage mis à disposition de tous les utilisateurs et 5 To sur le noeud hpcsmp01.
Exemple de script (bash) de soumission utilisant le module rclone
:
#SBATCH --job-name=my_jobname
#SBATCH --ntasks=1
#SBATCH --nodelist=hpcnodeXX
#SBATCH ...
#SBATCH ...
module load rclone/1.55.1
WORKDIR=/storage/scratch/login/XXYYZZ
mkdir -p $WORKDIR
mkdir -p $WORKDIR/input
mkdir -p $WORKDIR/output
mkdir -p $WORKDIR/tmp
# Les données sont copiées dans le `scratch`
rclone copy s3-myproject:monBucket/path/to/files/ $WORKDIR/input/
cd $WORKDIR
# Exécution du job. Les données créées sont également copiées dans le `scratch`
my_tool ... --input-directory=$WORKDIR/input \
--output-directory=$WORKDIR/output \
--temporary-directory=$WORKDIR/tmp
# Transfert des données produites dans l'espace de stockage S3
rclone copy $WORKDIR/output s3-myproject:monBucket/path/to/output/
# Nettoyage du `scratch` pour une remise à disposition de l'espace aux autres utilisateurs
cd /tmp
rm -rf $WORKDIR
Option 2 : Créer un point de montage dans le système de fichiers
Ce point de montage se fait en lecture seule dans un répertoire temporaire du système de fichiers. Les données produites sont écrites dans le scratch
avant d'être envoyées dans le S3. L'utilisation de cette option nécessite de vérifier au préalable que l'espace partagé (le scratch) disponible sur le noeud correspond au besoin du job (volumétrie des données produites). Bien penser à défaire le point de montage à la fin du job !
Les clés demandées sont des informations privées fournies à la création du projet et disponibles dans les fichiers configs : ~/.s3cfg et ~/.config/rclone/rclone.conf.
#SBATCH --job-name=my_jobname
#SBATCH --ntasks=1
#SBATCH --nodelist=hpcnodeXX
#SBATCH ...
#SBATCH ...
module load rclone/1.55.1 goofys/0.24.0
WORKDIR=/storage/scratch/login/XXYYZZ
mkdir -p $WORKDIR
mkdir -p $WORKDIR/input
mkdir -p $WORKDIR/output
mkdir -p $WORKDIR/tmp
cd $WORKDIR
export AWS_SECRET_ACCESS_KEY=XXX
export AWS_ACCESS_KEY_ID=YYY
# Création du point de montage
goofys --stat-cache-ttl 3600s \
--type-cache-ttl 3600s \
-uid $UID \
-gid $(id -g) \
--dir-mode=0500 \
--file-mode=0400 \
-o ro \
--cheap \
--endpoint https://s3.mesocentre.uca.fr monBucket $WORKDIR/input
# Exécution du job. Les données créées sont copiées dans le `scratch`
my_tool ... --input-directory=$WORKDIR/input \
--output-directory=$WORKDIR/output \
--temporary-directory=$WORKDIR/tmp
# Défaire le point de montage
fusermount -u $WORKDIR/input
# Récupération des données produites dans l'espace projet S3
rclone copy $WORKDIR/output s3-myproject:monBucket/path/to/output/
# Nettoyage du `scratch` pour une remise à disposition de l'espace aux autres utilisateurs
cd /tmp
rm -rf $WORKDIR