Remarques :

Déplacer des données vers les services de stockage cloud OCI à l'aide de Rclone

Introduction

Voici le tutoriel 2 d'une série de quatre tutoriels qui vous montre différentes façons de migrer des données vers les services de stockage cloud Oracle Cloud Infrastructure (OCI). La série est configurée pour vous permettre de consulter le tutoriel 1 : Utilisation des outils de migration pour déplacer des données vers les services OCI Cloud Storage afin d'acquérir une connaissance approfondie des différents outils, puis de passer aux tutoriels ou documents associés correspondant à vos besoins en matière de migration. Ce tutoriel se concentrera sur l'utilisation de Rclone pour migrer des données vers les services de stockage cloud OCI.

OCI fournit aux clients des options de calcul haute performance et de stockage cloud à faible coût. Grâce au stockage local, d'objets, de fichiers, de blocs et d'archives à la demande, Oracle répond aux exigences et aux cas d'emploi clés en matière de charge globale de stockage.

Les services de stockage cloud OCI offrent des options de stockage cloud rapides, sécurisées et durables pour tous vos besoins d'entreprise. A partir d'options hautes performances telles qu'OCI File Storage avec Lustre et le service OCI Block Volumes, de systèmes de fichiers entièrement gérés à l'échelle d'exaoctets du service OCI File Storage avec des cibles de montage hautes performances, à OCI Object Storage hautement durable et évolutif. Nos solutions peuvent répondre à vos demandes, allant des applications exigeantes en performances telles que les workloads d'IA/ML aux lacs de données à l'échelle des exaoctets.

Rclone est un utilitaire de ligne de commande open source permettant de migrer des données vers le cloud ou entre les fournisseurs de stockage cloud. Rclone peut être utilisé pour effectuer une migration unique ainsi qu'une synchronisation périodique entre le stockage source et de destination. Rclone peut migrer des données vers et depuis le stockage d'objets, le stockage de fichiers, les lecteurs montés et entre 70 types de stockage pris en charge. OCI Object Storage est pris en charge de façon native en tant que fournisseur back-end Rclone. Les processus Rclone peuvent être augmentés et augmentés pour augmenter les performances de transfert à l'aide des options de paramètre.

Déterminez la quantité de données à migrer et le temps d'inactivité disponible pour le basculement vers la nouvelle plate-forme de stockage OCI. Les migrations par lots sont un bon choix pour décomposer la migration en incréments gérables. Les migrations par lots vous permettent de planifier un temps d'arrêt pour des applications spécifiques dans différentes fenêtres. Certains clients ont la possibilité d'effectuer une migration ponctuelle sur une fenêtre de maintenance programmée sur 2 à 4 jours. OCI FastConnect peut être utilisé pour créer une connexion privée dédiée entre OCI et votre environnement, avec des vitesses de port de 1G à 400G pour accélérer le processus de transfert de données. OCI FastConnect peut être intégré à des solutions partenaires telles que Megaport et ConsoleConnect pour créer une connexion privée à votre centre de données ou une interconnexion cloud à cloud afin de déplacer les données plus directement d'un autre fournisseur cloud vers le service de stockage cloud OCI. Pour plus d'informations, reportez-vous à FastConnect integration with Megaport Cloud Router.

Public

DevOps ingénieurs, développeurs, administrateurs et utilisateurs de stockage cloud OCI, responsables informatiques, super utilisateurs OCI et administrateurs d'applications.

Objectif

Découvrez comment utiliser Rclone pour copier et synchroniser des données dans les services de stockage cloud OCI.

Prérequis

Présentation de Rclone et des termes de base

Rclone est un outil de migration utile en raison des nombreux protocoles et fournisseurs de cloud qu'il prend en charge et de la facilité de configuration. Il s'agit d'un bon outil de migration à usage général pour tout type d'ensemble de données. Rclone fonctionne particulièrement bien pour les ensembles de données qui peuvent être fractionnés en lots pour évoluer entre les nœuds pour un transfert de données plus rapide.

Rclone peut être utilisé pour migrer :

Commandes et indicateurs Rclone :

Exemples d'utilisation de Rclone

Migrer un grand nombre de fichiers à l'aide de Rclone

Rclone se synchronise sur une base répertoire par répertoire. Si vous migrez des dizaines de millions de fichiers / objets, il est important de vous assurer que les répertoires / préfixes sont divisés en environ 10 000 fichiers / objets ou moins par répertoire. Cela permet d'empêcher Rclone d'utiliser trop de mémoire, puis de planter. De nombreux clients avec un nombre élevé (100's de millions ou plus) de petits fichiers rencontrent souvent ce problème. Si tous vos fichiers se trouvent dans un seul répertoire, divisez-les en premier.

  1. Exécutez la commande suivante pour obtenir la liste des fichiers dans la source.

    rclone lsf --files-only -R src:bucket | sort > src
    
  2. Répartissez le fichier en blocs de 1 000 à 10 000 lignes, à l'aide de la fonction de fractionnement. La commande split suivante divise les fichiers en blocs de 1 000, puis les place dans des fichiers nommés src_##, tels que src_00.

    split -l 1000 --numeric-suffixes src src_
    
  3. Distribuez les fichiers à plusieurs instances de machine virtuelle pour augmenter le transfert de données. Chaque commande Rclone doit ressembler à :

    rclone --progress --oos-no-check-bucket --no-traverse --transfers 500 copy remote1:source-bucket remote2:dest-bucket --files-from src_00
    

    Une boucle for simple peut également être utilisée pour parcourir les listes de fichiers générées à partir de la commande split. Lors du test avec environ 270 000 fichiers dans un seul bucket, nous avons vu les temps de copie améliorer 40x, votre kilométrage peut varier.

    Remarque : Le fractionnement des fichiers par structure de répertoires ou l'utilisation de l'utilitaire de fractionnement est un moyen important d'optimiser les transferts.

Utilisation de Rclone, d'OKE et de fpart pour le déplacement de données des systèmes de fichiers vers OCI Object Storage

Vous pouvez utiliser plusieurs pods Kubernetes pour augmenter le transfert de données entre les systèmes de fichiers et le stockage d'objets. La mise en parallèle accélère les transferts de données vers des systèmes de stockage présentant une latence relativement élevée et un débit élevé. L'approche combinant les structures de répertoires de partitions Rclone, OKE et fpart en plusieurs blocs et exécute le transfert de données en parallèle sur des conteneurs situés sur le même noeud de calcul ou sur plusieurs noeuds. L'exécution sur plusieurs noeuds regroupe le débit réseau et la puissance de calcul de chaque noeud.

Suivez les étapes décrites:

  1. Identifiez un hôte qui sera votre hôte opérateur fpsync qui a accès aux données source de migration et Rclone est installé.

  2. Exécutez la commande suivante pour installer kubectl.

    # curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    # chmod 755 kubectl
    # cp -a kubectl /usr/bin
    
  3. Créez une stratégie OCI IAM pour l'hôte de l'opérateur fpsync afin de gérer le cluster OKE.

    La stratégie suivante peut être utilisée à cette fin. Une autorisation plus granulaire peut être configurée pour répondre à l'exigence minimale de contrôle des pods.

    Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
    
  4. Configurez le fichier kubeconfig pour avoir accès au cluster OKE. Pour plus d'informations, reportez-vous à Configuration de l'accès local aux clusters.

  5. Installez et corrigez fpart et fpsync. Le patch fpsync est requis pour exécuter Rclone ou rsync en parallèle afin d'augmenter le transfert de données. La synchronisation fpsync fournie avec le package fpart ne prend pas en charge les pods Rclone ou Kubernetes, un patch est nécessaire pour prendre en charge ces outils.

    Exécutez la commande suivante pour effectuer l'installation sur Ubuntu.

    # apt-get install fpart
    # git clone https://github.com/aboovv1976/fpsync-k8s-rclone.git
    # cd fpsync-k8s-rclone/
    # cp -p /usr/bin/fpsync /usr/bin/k-fpsync
    # patch /usr/bin/k-fpsync fpsync.patch
    
  6. Créez l'image du conteneur.

    La spécification de build d'image docker disponible dans rclone-rsync-image peut être utilisée pour créer l'image de conteneur. Une fois l'image créée, elle doit être téléchargée vers un registre accessible à partir du cluster OKE.

    # rclone-rsync-image
    # docker build -t rclone-rsync . 
    # docker login
    # docker tag rclone-rsync:latest <registry url/rclone-rsync:latest>
    # docker push <registry url/rclone-rsync:latest>
    

    Une copie de l'image est conservée dans fra.ocir.io/fsssolutions/rclone-rsync:latest. L'exemple de répertoire contient des exemples de fichiers de sortie.

  7. Exécutez k-fpsync. La synchronisation à l'aide de patches (k-fpsync) peut partitionner le système de fichiers source et redimensionner le transfert à l'aide de plusieurs pods Kubernetes. La règle d'anti-affinité de pod Kubernetes est configurée pour préférer les noeuds qui ne disposent d'aucun pod de processus actif de transfert en cours d'exécution. Cela permet d'utiliser efficacement la bande passante sur les noeuds pour optimiser les performances. Pour plus d'informations, reportez-vous à Affectation de pods à des noeuds.

    Montez le système de fichiers source sur l'hôte de l'opérateur fpart et créez un répertoire partagé auquel tous les pods accèdent. Il s'agit du répertoire dans lequel tous les fichiers journaux et les fichiers de partition sont conservés.

    La commande suivante transfère les données du système de fichiers /data/src vers le bucket OCI Object Storage rclone-2. Il démarrera 2 pods à la fois pour transférer la partition du système de fichiers créée par fpart.

    # mkdir /data/fpsync
    # PART_SIZE=512 && ./k-fpsync -v -k fra.ocir.io/fsssolutions/rclone-rsync:latest,lustre-pvc  -m rclone -d /data/fpsync  -f $PART_SIZE -n 2 -o "--oos-no-check-bucket --oos-upload-cutoff 10Mi --multi-thread-cutoff 10Mi --no-check-dest --multi-thread-streams 64 --transfers $PART_SIZE  --oos-upload-concurrency 8 --oos-disable-checksum  --oos-leave-parts-on-error" /data/src/ rclone:rclone-2
    

    Remarque : les journaux de l'exécution sont conservés dans le répertoire run-ID, dans l'exemple suivant, ils se trouvent dans /data/fpsync/{Run-Id}/log directory. Les exemples de sortie sont fournis dans le répertoire exemple.

Environnements de test (facultatif)

Les recommandations sont basées sur les tests et les interactions avec les clients.

Remarque : les exécutions à partir du script de copie en masse incluent les résultats os sync et s5cmd pour fournir plus d'informations sur les performances. Découvrez comment utiliser le script de copie en masse à partir de cette page : Utilisation des utilitaires Python Oracle Cloud Infrastructure Object Storage pour les opérations en masse. Pour plus d'informations sur l'utilisation de os sync et de s5cmd, reportez-vous au tutoriel 3 : déplacement de données vers les services OCI Cloud Storage à l'aide d'OCI Object Storage Sync et de S5cmd.

Environnement de test 1:

1 instance de machine virtuelle VM.Standard.E4.Flex, 1 OCPU, 1Gbps bande passante réseau, 16 Go de mémoire. Pour simuler une migration sur site vers OCI, les données copiées de NFS PHX vers IAD ont été copiées.

Ensembles de données

Environnement de test 2:

Instances de machine virtuelle : 2 instances de machine virtuelle ont été utilisées pour chaque test. Nous avons utilisé un élément VM.Standard.E4.Flex avec 24 OCPU, une bande passante réseau 24Gbps et 384 Go de mémoire. Oracle Linux 8 a été utilisé pour les tests Linux.

Ensembles de données utilisés dans les tests : 14 répertoires principaux avec les tailles et le nombre de fichiers suivants.

Répertoire d'ensemble de données Taille Nombre de fichiers Taille de chaque fichier
Répertoire 1 107.658 Gio 110 242 1 Mio
Répertoire 2 1.687 Gio 110 569 15 Mio
Répertoire 3 222 Gio 111 2 Gio
Répertoire 4 1.265 Tio 1 295 1 Gio
Répertoire 5 26.359 Gio 1 687 16 Mio
Répertoire 6 105.281 Mio 26 952 4 kio
Répertoire 7 29.697 Mio 30 410 1 kio
Répertoire 8 83.124 Gio 340 488 256 kio
Répertoire 9 21.662 Gio 354 909 64 kio
Répertoire 10 142.629 Gio 36 514 4 Mio
Répertoire 11 452.328 Mio 57 898 8 Mio
Répertoire 12 144 Gio 72 2Gio
Répertoire 13 208.500 Gio 834 256 Mio
Répertoire 14 54.688 Gio 875 64 Mio

Remarque :

Méthode A - De Temps Commande Indicateurs/Notes
s5cmd NFS/Fichier PHX vers Object IAD 54m41.814s copier --numworkers 74
synchronisation os NFS/Fichier PHX vers Object IAD 65m43.200s S/O --parallel-operations-count 50
rclone NFS/Fichier PHX vers Object IAD 111m59.704s copier --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50
rclone Objet PHX vers objet IAD 28m55.663s copier --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400, même commande exécutée sur 2 machines virtuelles pour une simultanéité d'accès aux données de 800 transferts
Script de copie en masse python Objet PHX vers objet IAD 25m43.715s Par défaut 1 machine virtuelle, 50 processus actifs, 100 000 fichiers mis en file d'attente à la fois

Les commandes s5cmd et os sync sont efficaces sur le système de fichiers/NFS vers le stockage d'objets. Le script de copie en masse effectue uniquement des transferts de bucket à bucket et n'a pas été testé pour la migration NFS.

Seuls rclone et le script de copie en masse python sont capables d'effectuer des transferts de bucket à bucket entre les régions, de sorte que les autres outils n'ont pas été testés. Le script de copie en masse python est plus performant sur les données inter-région de bucket à bucket. Cependant, il est uniquement compatible avec OCI Object Storage, tandis que rclone prend en charge de nombreux back-ends et fournisseurs cloud.

De petites exécutions de test ont été effectuées à l'aide de rclone pour transférer des données de Microsoft Azure Blob Storage, d'Amazon Simple Storage Service (Amazon S3) et de Google Cloud Platform Cloud Storage vers OCI Object Storage afin de vérifier que les outils fonctionnent pour ces types de transfert. Pour plus d'informations, reportez-vous à Déplacement de données vers Object Storage dans le cloud en utilisant Rclone.

Environnement de test 3:

Instances de machine virtuelle : 1 à 2 instances de machine virtuelle ont été utilisées pour chaque test. Nous avons utilisé un élément VM.Standard.E4.Flex avec 24 OCPU, une bande passante réseau 24Gbps et 384 Go de mémoire. Oracle Linux 8 a été utilisé pour les tests Linux. Tous les tests étaient bucket-to-bucket.

Taille totale Nombre de fichiers Plage de tailles de fichier
7.74 Tio 1 000 000 30 Mio
Méthode A - De Temps Commande Indicateurs Remarques   
rclone IAD d'objet à objet -> IAD 18h39m11.4s copier --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi 1 VM, très lente en raison du nombre élevé de fichiers et de la liste des appels à la source  
rclone IAD d'objet à objet -> IAD 55m8.431s copier --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> 2 machines virtuelles, 500 transferts par machine virtuelle, liste d'objets/de fichiers alimentés à la fois 1 000 fichiers, empêche la création de listes sur la source et la destination et améliore les performances  
Script de copie en masse python IAD d'objet à objet -> IAD 28m21.013s S/O Par défaut 1 machine virtuelle, 50 processus actifs, 100 000 fichiers mis en file d'attente à la fois  
Script de copie en masse python IAD d'objet à objet -> IAD S/O S/O Par défaut 2 machines virtuelles, 50 processus actifs par machine virtuelle, 100 000 fichiers mis en file d'attente à la fois. Réception d'erreurs 429, script bloqué et impossible de terminer  
s5cmd IAD d'objet à objet -> IAD 14m10.864s copier Valeurs par défaut (256 salariés) 1 VM S/O
s5cmd IAD d'objet à objet -> IAD 7m50.013s copier Valeurs par défaut 2 machines virtuelles, 256 processus actifs par machine virtuelle Exécution en deux fois moins de temps que 1 machine virtuelle
s5cmd IAD d'objet à objet -> IAD 3m23.382s copier --numworkers 1000 1 VM, 1000 travailleurs Au cours de plusieurs tests, nous avons constaté que c'était l'exécution optimale pour cet ensemble de données avec s5cmd
rclone IAD d'objet à objet -> PHX 184m36.536s copier --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> 2 machines virtuelles, 500 transferts par machine virtuelle, liste d'objets/de fichiers alimentés à la fois 1 000 fichiers  
Script de copie en masse python IAD d'objet à objet -> PHX 35m31.633s S/O Par défaut 1VM, 50 processus actifs, 100 000 fichiers mis en file d'attente à la fois  

La commande s5cmd s'exécutait toujours mieux pour le nombre de fichiers volumineux et les petits fichiers. s5cmd est limité car il ne peut effectuer que des copies de bucket à bucket dans la même location et la même région.

Notez les améliorations importantes apportées à rclone une fois que les fichiers ont été transmis à la commande et qu'ils ont été redimensionnés vers une autre machine virtuelle. Rclone peut fonctionner plus lentement que d'autres outils, il est le plus polyvalent dans les différentes plates-formes qu'il prend en charge et les types de migrations qu'il peut effectuer.

L'API Python de copie en masse OCI Object Storage peut uniquement utiliser l'API CopyObject native OCI et ne peut obtenir qu'une simultanéité d'accès aux données de 50 processus avant d'être ralentie.

Les tests pour IAD à PHX ont été effectués uniquement sur ce qui fonctionnait le mieux dans IAD à IAD et les tests problématiques n'ont pas été réexécutés. s5cmd n'a pas été exécuté pour IAD vers PHX car il ne peut effectuer que des copies de bucket à bucket dans la même région.

Etapes suivantes

Passez au(x) tutoriel(s) correspondant(s) à vos besoins en matière de migration. Pour déplacer des données vers les services de stockage cloud OCI, procédez comme suit :

Remerciements

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir la documentation produit, consultez le site Oracle Help Center.