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.
Les commandes OpenSSH pour transférer des fichiers sont : scp ou sftp
Warning
Si vous utilisez un autre client de transfert que OpenSSH (par exemple WinSCP ou FileZilla), nous vous invitons à lire la documentation pour adapter la configuration au rebond ssh.
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...
On suppose que votre client OpenSSH est configuré pour un accès transparent au cluster via le bastion (cf. Accès distant transparent)
D'un fichier ou d'un dossier d'une machine en local vers le cluster
$ scp /path/to/my_local_file hpc2:/home/<login>/
$ scp -r /path/to/my_local_dir hpc2:/home/<login>/my_remote_dir
De fichiers du cluster vers une machine en local
$ scp hpc2:/home/<login>/my_remote_file /path/to/store/my_remote_file
Plus d'informations sur l'usage de la commande scp dans le manuel
Transfert de fichier par SFTP
Le client sftp permet d'interagir en ligne de commande par le protocole ssh pour les transferts de fichiers.
Lancer une session interactive sftp (avec l'alias hpc2 définit ici: Accès distant transparent) :
sftp hpc2
Naviguer dans les répertoires distants (ceux de hpc2) et locaux (ceux de votre poste):
pwd # Chemin distant courant
lpwd # Chemin local courant
ls # Lister les fichiers distants
lls # Lister les fichiers locaux
cd dossier # Changer de dossier distant
lcd dossier # Changer de dossier local
Envoyer un fichier (local -> serveur) :
put fichier.txt
Télécharger un fichier (cluster -> local) :
get fichier.txt
Télécharger dans un dossier local spécifique :
get fichier.txt /chemin/local/destination/
Transférer un dossier entier (récursif) :
get -r dossier_distant/
put -r dossier_local/
Quitter le client sftp:
exit
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 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