Utilisation des outils parallèles de stockage de fichiers

La boîte à outils pour fichiers parallèles fournit des versions parallèles de tar, rm et cp. Ces outils peuvent exécuter des demandes sur de grands systèmes de fichiers en parallèle, en maximisant la performance pour les opérations de protection des données.

La boîte à outils comprend les éléments suivants :

  • partar : Utilisez cette commande pour créer et extraire des archives tar (tarball) en parallèle.
    Note

    L'outil partar prend en charge l'extraction des fichiers tar créés dans le format POSIX 1003.1-1990 tar de base GNU. Les fichiers créés dans d'autres formats d'archive, tels que PAX, ne sont pas pris en charge.
  • parrm : Vous pouvez utiliser cette commande pour retirer (remove) de façon récursive un répertoire en parallèle.
  • parcp : Utilisez cette commande pour copier (copy) de manière récursive un répertoire en parallèle.

Installation des outils pour fichiers parallèles

La suite d'outils est distribuée sous la forme d'un RPM pour Oracle Linux, Red Hat Enterprise Linux et CentOS.

Pour installer les outils pour fichiers parallèles sur Linux

Pour installer les outils pour fichiers parallèles sur une instance Oracle Linux :

  1. Ouvrez une fenêtre de terminal sur l'instance de destination.
  2. Entrez la commande suivante :
    sudo yum install -y fss-parallel-tools
Pour installer les outils pour fichiers parallèles sur Oracle Linux 8

Pour installer les outils pour fichiers parallèles sur une instance Oracle Linux 8 :

  1. Ouvrez une fenêtre de terminal sur l'instance de destination.
  2. Installez le référentiel Oracle Linux Developer, si nécessaire, à l'aide de la commande suivante :
    dnf install oraclelinux-developer-release-el8
  3. Installez les outils pour fichiers parallèles à partir du référentiel à l'aide de la commande suivante :
    dnf --enablerepo=ol8_developer install fss-parallel-tools
Pour installer les outils pour fichiers parallèles sur CentOS et Red Hat 6.x

Pour installer les outils pour fichiers parallèles sur CentOS et Red Hat 6.x :

  1. Ouvrez une fenêtre de terminal sur l'instance de destination.
  2. Entrez la commande suivante :
    sudo wget http://yum.oracle.com/public-yum-ol6.repo -O /etc/yum.repos.d/public-yum-ol6.repo
    sudo wget http://yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    sudo yum --enablerepo=ol6_developer install fss-parallel-tools
Pour installer les outils pour fichiers parallèles sur CentOS et Red Hat 7.x
  1. Ouvrez une fenêtre de terminal sur l'instance de destination.
  2. Entrez la commande suivante :
    sudo wget http://yum.oracle.com/public-yum-ol7.repo -O /etc/yum.repos.d/public-yum-ol7.repo
    sudo wget http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    sudo yum --enablerepo=ol7_developer install fss-parallel-tools

Exemples de base

Voici quelques exemples simples d'utilisation courante des différents outils dans le service Stockage de fichiers pour Oracle Cloud Infrastructure.

Pour copier tous les fichiers et dossiers d'un répertoire vers un autre

Dans cet exemple, parcp est utilisé pour copier le répertoire "folder" dans /source vers /destination. L'option -P permet de définir le nombre d'unités d'exécution parallèles à utiliser.

$parcp -P 16 /source/folder /destination

Dans l'exemple suivant, parcp est utilisé pour copier le contenu du répertoire "folder" dans /source vers /destination. Le répertoire "folder" lui-même n'est pas copié.

$parcp -P 16 /source/folder/. /destination
Pour créer une archive .TAR d'un répertoire
La commande suivante crée une archive .tar du contenu du répertoire spécifié et la stocke en tant que fichier tarball dans le répertoire. Dans l'exemple ci-dessous, le nom du répertoire utilisé pour créer le fichier tarball est example.
$partar pcf example.tar example -P 16
Vous pouvez également créer un fichier tarball et l'envoyer à un autre répertoire. Dans l'exemple ci-dessous, le répertoire utilisé pour créer le tarball est example. Le fichier tarball est en cours de création dans le répertoire /test.
$partar pcf example.tar example -P 16 -C /test

Utilisation des outils - Exemples avancés

Voici quelques exemples d'utilisation des différents outils dans des scénarios plus avancés.

Pour copier les fichiers ou dossiers sélectionnés dans une archive .TAR et exclure les autres

Vous pouvez spécifier quels fichiers et dossiers sont inclus lors de la création d'une archive .tar à l'aide de partar. Supposons que vous ayez un répertoire qui ressemble à ceci :

[opc@example sourcedir]$ ls -l
total 180
-rw-r-----.  1 opc opc          0 Apr 15 02:55 example2020-04-15_02-55-33_217107549.error
-rw-r-----.  1 opc opc         10 Apr 15 03:18 example2020-04-15_02-55-33_217107549.log
-rw-rw-r--.  1 opc opc         12 Apr 15 03:18 example2020-04-15_03-18-13_267771997.error
-rw-rw-r--.  1 opc opc         10 Apr 15 03:18 example2020-04-15_03-18-13_267771997.log
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
-rwxr-xr-x.  1 opc opc         57 Dec  1  2017 File4.txt

La commande suivante crée une archive .tar qui :

  • Contient un répertoire mydir nommé comme spécifié.
  • Inclut File1.txt, File2.txt, File3.txt et File4.txt.
  • Exclut tous les fichiers .log et .error.
  • Envoie la balle .tar de /sourcedir à /mnt/destinationdir
  • Extraction de l'archive .tar
[opc@example sourcedir]$ sudo partar cf - mydir --exclude '*.log*' --exclude '*.err*' | sudo partar xf - -C /mnt/destinationdir

L'exécution de ls -l sur /mnt/destinationdir/mytar montre que seuls les fichiers souhaités ont été copiés.

[opc@example mytar]$ ls -l
total 148
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
-rwxr-xr-x.  1 opc opc         57 Dec  1  2017 File4.txt

Lorsque vous excluez un répertoire ou un fichier de l'archive, indiquez uniquement le nom du répertoire ou du fichier. L'option --exclude ne prend pas en charge l'utilisation d'un chemin absolu. L'utilisation d'un chemin absolu dans l'option --exclude n'exclut pas le répertoire ou les fichiers spécifiés de l'archive .tar. Par exemple, si vous devez exclure un répertoire nommé testing du chemin du répertoire source, vous devez le spécifier dans une commande comme suit :

sudo partar pczf name_of_tar_file.tar.gz /<path_source_directory> --exclude=testing
Note

Tous les fichiers ou répertoires qui correspondent au modèle --exclude sous le chemin du répertoire source seront exclus de l'archive partar.
Pour copier les fichiers ou dossiers sélectionnés d'un répertoire vers un autre

Vous pouvez spécifier quels fichiers et dossiers sont inclus lorsque vous utilisez parcp pour effectuer une copie d'un répertoire à un autre. Supposons que vous ayez un répertoire qui ressemble à ceci :

[opc@example sourcedir]$ ls -l
total 180
-rw-r-----.  1 opc opc          0 Apr 15 02:55 example2020-04-15_02-55-33_217107549.error
-rw-r-----.  1 opc opc         10 Apr 15 03:18 example2020-04-15_02-55-33_217107549.log
-rw-rw-r--.  1 opc opc         12 Apr 15 03:18 example2020-04-15_03-18-13_267771997.error
-rw-rw-r--.  1 opc opc         10 Apr 15 03:18 example2020-04-15_03-18-13_267771997.log
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
-rwxr-xr-x.  1 opc opc         57 Dec  1  2017 File4.txt

Tout d'abord, créez un fichier .txt contenant la liste des fichiers à exclure. Dans cet exemple, il s'agit de /home/opc/list.txt.

La commande suivante copie le contenu de sourcedir vers /mnt/destinationdir et :

  • Copie File1.txt, File2.txt et File3.txt.
  • Exclut File4.txt et les fichiers .log et .error, tels qu'ils sont répertoriés dans /home/opc/list.txt.
[opc@example ~]$ cat /home/opc/list.txt
File4.txt
*.log*
*.err*
[opc@example ~]$ date; time sudo parcp --exclude-from=/home/opc/list.txt -P 16 --restore /sourcedir /mnt/destinationdir;
date Mon Jun  1 15:58:30 GMT 2020

real 9m55.820s
user 0m3.602s
sys 1m5.441s

Mon Jun  1 16:08:25 GMT 2020
L'exécution de ls -l sur /mnt/destinationdir montre que seuls les fichiers souhaités ont été copiés.
[opc@example destinationdir]$ ls -l
total 91
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
Pour utiliser PARCP comme alternative efficace pour RSYNC en parallèle

L'option --restore dans parcp est similaire à l'utilisation des options -a -r -x et -H dans rsync. (Voir rsync(1)- Page Man Linux.) L'option -P permet de définir le nombre d'unités d'exécution parallèles à utiliser.

L'option restore comprend le comportement suivant :

  • Récupérer dans les répertoires
  • Arrêter aux frontières du système de fichiers
  • Conserver les liens physiques, les liens symboliques, les autorisations, les temps de modification, le groupe, les responsables et les fichiers spéciaux tels que named sockets et fifo
$parcp -P 16 --restore /source/folder/ /destination

Vous pouvez utiliser parcp avec les options --restore et --delete pour synchroniser des fichiers entre un dossier source et un dossier cible. Ceci est un bon substitut pour l'utilisation de rsync en parallèle. Lorsque des fichiers sont ajoutés ou supprimés du répertoire source, vous pouvez exécuter cette commande à intervalles réguliers pour ajouter ou supprimer les mêmes fichiers du répertoire de destination. Vous pouvez automatiser la synchronisation en utilisant cette option de commande dans une tâche cron.

sudo parcp -P 32 --restore --delete /source/folder/ /destination