Comment copier des données vers et depuis Amazon EFS en parallèle pour optimiser les performances sur mon instance EC2 ?

Date de la dernière mise à jour : 28/04/2020

Je dispose d’un grand nombre de fichiers à copier ou à supprimer. Comment puis-je exécuter ces tâches en parallèle sur un système de fichiers Amazon Elastic File System (Amazon EFS) sur mon instance Amazon Elastic Compute Cloud (Amazon EC2) ?

Brève description

Utilisez un des outils suivants pour exécuter des tâches en parallèle sur un système de fichiers Amazon EFS :

  • GNU parallel – Pour plus d'informations, consultez GNU Parallel sur le site Web du système d'exploitation GNU.
  • msrsync – Pour plus d'informations, consultez msrsync sur le site Web GitHub.
  • fpsync – Pour plus d'informations, consultez fpsync sur le site Web des manuels Ubuntu.

Solution

GNU parallel

1.    Installez GNU parallel.

Pour Amazon Linux et RHEL 6 :

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ sudo yum install parallel nload -y

Pour RHEL 7 :

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install parallel nload -y

Pour Amazon Linux 2 :

$ sudo amazon-linux-extras install epel
$ sudo yum install nload sysstat parallel -y

Pour Ubuntu :

$ sudo apt-get install parallel

2.    Utilisez rsync pour copier les fichiers vers Amazon EFS.

$ sudo time find -L /src -type f | parallel rsync -avR {} /dst

ou

$ sudo time find /src -type f | parallel -j 32 cp {} /dst

3.    Utilisez l'application de console nload pour surveiller le trafic et la bande passante du réseau.

$ sudo nload -u M

msrsync

mrsync est un wrapper Python pour rsync qui exécute plusieurs processus rsync en parallèle.

Remarque : msrsync est compatible uniquement avec Python 2. Vous devez exécuter le script msrsync en utilisant Python version 2.7.14 ou une version ultérieure.

1.    Installez msrsync.

$ sudo curl -s https://raw.githubusercontent.com/jbd/msrsync/master/msrsync -o /usr/local/bin/msrsync && sudo chmod +x /usr/local/bin/msrsync

2.    Utilisez l'option -p pour préciser le nombre de processus rsync à exécuter en parallèle. Remplacez X par le nombre de processus rsync. L'option -P indique l’avancement de chaque tâche.

$ sudo time /usr/local/bin/msrsync -P -p X --stats --rsync "-artuv" /src/ /dst/

fpsync

L'outil fpsync synchronise les répertoires en parallèle en utilisant fpart et rsync. Il peut exécuter plusieurs processus rsync localement ou lancer des transferts rsync sur plusieurs nœuds (exécutants) via SSH.

Pour plus d'informations sur fpart, consultez fpart sur le site Web des manuels Ubuntu.

1.    Activez le référentiel EPEL, puis installez le package fpart.

Pour Amazon Linux et RHEL 6 :

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ sudo yum install fpart -y

Pour RHEL 7 :

$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install fpart -y

Pour Amazon Linux 2 :

$ sudo amazon-linux-extras install epel
$ sudo yum install fpart -y

Pour Ubuntu :

$ sudo apt-get install fpart

Remarque : dans Ubuntu, fpsync fait partie du package fpart.

2.    Utilisez fpsync pour synchroniser les répertoires /dst et /src. Remplacez X par le nombre de processus rsync à exécuter en parallèle.

$ sudo fpsync -n X /src /dst

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?