Note :

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

Présentation

Il s'agit du tutoriel 2 d'une série de quatre tutoriels qui vous montrent différentes façons de migrer des données vers les services de stockage en nuage Oracle Cloud Infrastructure (OCI). La série est configurée pour que vous puissiez consulter le tutoriel 1 : Utiliser les outils de migration pour déplacer des données vers les services de stockage en nuage pour OCI pour mieux comprendre les différents outils, puis passer aux tutoriels ou documents connexes adaptés à vos besoins de migration. Ce tutoriel mettra l'accent sur l'utilisation de Rclone pour migrer des données vers les services de stockage en nuage OCI.

OCI offre aux clients des options de calcul haute performance et de stockage infonuagique à faible coût. Grâce au stockage sur demande local, d'objet, de fichier, de blocs et d'archives, Oracle répond aux exigences clés en matière de charge de travail de stockage et aux cas d'utilisation.

Les services de stockage en nuage OCI offrent des options de stockage en nuage rapides, sécurisées et durables pour tous vos besoins d'entreprise. En commençant par les options de haute performance telles que le service de stockage de fichiers OCI avec Lustre et le service de volumes par blocs OCI; les systèmes de fichiers à l'échelle de l'exaoctet entièrement gérés à partir du service de stockage de fichiers OCI avec des cibles de montage haute performance; vers le service de stockage d'objets OCI hautement durable et évolutif. Nos solutions peuvent répondre à vos demandes, qu'il s'agisse d'applications exigeantes en matière de performance telles que les charges de travail d'intelligence artificielle et d'apprentissage automatique, ou de lacs de données à l'échelle d'exaoctets.

Rclone est un utilitaire à code source libre de ligne de commande permettant de migrer des données vers le nuage ou entre des fournisseurs de stockage en nuage. Rclone peut être utilisé pour effectuer une migration ponctuelle ainsi qu'une synchronisation périodique entre le stockage source et le stockage 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 manière native en tant que fournisseur dorsal Rclone. Les processus Rclone peuvent être redimensionnés pour augmenter les performances de transfert à l'aide d'options de paramètre.

Déterminez la quantité de données à migrer et le temps d'arrêt disponible pour la mise en service vers la nouvelle plate-forme de stockage OCI. Les migrations par lots sont un bon choix pour diviser la migration en incréments gérables. Les migrations par lots vous permettront de programmer des temps d'arrêt pour des applications spécifiques dans différentes fenêtres. Certains clients peuvent effectuer une migration ponctuelle sur une fenêtre de maintenance programmée sur une période de 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 de partenaires telles que Megaport et ConsoleConnect pour créer une connexion privée à votre centre de données ou une interconnexion entre le nuage et le nuage afin de déplacer des données plus directement d'un autre fournisseur de services en nuage vers le service de stockage en nuage OCI. Pour plus d'informations, voir Intégration à FastConnect avec le routeur Megaport Cloud.

Public cible

ingénieurs, développeurs DevOps, administrateurs et utilisateurs du stockage en nuage OCI, gestionnaires des TI, utilisateurs expérimentés OCI et administrateurs d'applications.

Objectif

Voyez comment utiliser Rclone pour copier et synchroniser des données dans les services de stockage en nuage OCI.

Préalables

Aperçu de Rclone et des termes de base

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

Rclone peut être utilisé pour migrer :

Commandes et indicateurs Rclone :

Exemples d'utilisation du clone

Migrer des fichiers volumineux à l'aide de Rclone

Rclone se synchronise répertoire par répertoire. Si vous migrez des dizaines de millions de fichiers/objets, il est important de s'assurer que les répertoires/préfixes sont divisés en environ 10 000 fichiers/objets ou moins par répertoire. C'est pour empêcher Rclone d'utiliser trop de mémoire, puis de s'écraser. De nombreux clients avec un nombre élevé (100 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. Décomposez le fichier en fragments de 1 000 à 10 000 lignes, à l'aide du fractionnement. La commande de fractionnement suivante divisera les fichiers en fragments de 1 000, puis les placera dans des fichiers nommés src_## tels que src_00.

    split -l 1000 --numeric-suffixes src src_
    
  3. Répartissez les fichiers sur plusieurs instances de machine virtuelle afin d'adapter 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
    

    Alternativement, une boucle for simple peut être utilisée pour itérer à travers les listes de fichiers générées à partir de la commande split. Lors des tests avec environ 270 000 fichiers dans un seul seau, nous avons constaté que les temps de copie amélioraient 40x, votre kilométrage peut varier.

    Note : Le fractionnement des fichiers par structure de répertoire ou à l'aide de l'utilitaire de fractionnement est un moyen important d'optimiser les transferts.

Utiliser Rclone, OKE et fpart ensemble pour déplacer des données des systèmes de fichiers vers le service de stockage d'objets pour OCI

Plusieurs pods Kubernetes peuvent être utilisés pour réduire le transfert de données entre les systèmes de fichiers et le stockage d'objets. La parallélisation accélère les transferts de données vers les systèmes de stockage offrant une latence relativement élevée et un débit élevé. L'approche combinant les structures de répertoire des partitions Rclone, OKE et fpart en plusieurs blocs et exécute le transfert de données en parallèle sur des conteneurs, soit sur le même noeud de calcul, soit sur plusieurs noeuds. L'exécution sur plusieurs noeuds agrège le débit réseau et la puissance de calcul de chaque noeud.

Voici la marche à suivre :

  1. Identifiez un hôte qui sera l'hôte de votre opérateur fpsync qui a accès aux données sources 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 politique OCI IAM pour l'hôte de l'opérateur fpsync afin de gérer la grappe OKE.

    La politique suivante peut être utilisée à cette fin. Une autorisation plus granulaire peut être configurée pour obtenir le strict minimum requis pour contrôler les pods.

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

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

    Exécutez la commande suivante pour installer 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 création 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 dans un registre accessible à partir de la grappe 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 tenue à jour dans fra.ocir.io/fsssolutions/rclone-rsync:latest. L'exemple de répertoire contient quelques exemples de fichiers de sortie.

  7. Exécutez k-fpsync. Le fpsync corrigé (k-fpsync) peut partitionner le système de fichiers source et augmenter le transfert à l'aide de plusieurs pods Kubernetes. La règle d'antiaffinité de pod Kubernetes est configurée pour privilégier les noeuds qui n'ont aucun pod de transfert en cours d'exécution. Cela permet d'utiliser efficacement la bande passante sur les nœuds pour optimiser les performances. Pour plus d'informations, voir 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 auront accès. 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 seau de stockage d'objets OCI 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
    

    Note : Les journaux pour 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.

(Facultatif) Environnements de test

Les recommandations sont faites sur la base des tests et des interactions avec les clients.

Note : S'exécute à partir du script de copie en masse, les résultats os sync et s5cmd sont inclus pour fournir plus d'informations sur la performance. Découvrez comment utiliser le script de copie en masse ici : Utiliser les utilitaires Python d'Oracle Cloud Infrastructure Object Storage pour les opérations en masse. Pour plus d'informations sur l'utilisation de os sync et de s5cmd, voir Tutoriel 3 : Déplacer des données dans les services de stockage en nuage OCI à l'aide de la synchronisation du stockage d'objets OCI et S5cmd.

Environnement de test 1 :

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

Jeux 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 VM.Standard.E4.Flex avec 24 OCPU, une bande passante de réseau 24Gbps, 384 Go de mémoire. Oracle Linux 8 a été utilisé pour les tests Linux.

Jeux de données utilisés pour les tests : 14 répertoires principaux avec le nombre et la taille de fichiers suivants.

Répertoire du jeu 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

Note :

Méthode De Temps Commande Indicateurs/Notes
s5cmd NFS/Fichier PHX vers IAD d'objet 54m41.814s copie --numworkers 74
synchronisation du système d'exploitation NFS/Fichier PHX vers IAD d'objet 65m43.200s S.O. --parallel-operations-count 50
rclone NFS/Fichier PHX vers IAD d'objet 111m59.704s copie --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50
rclone Objet PHX vers IAD d'objet 28m55.663s copie --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 un accès simultané de 800 transferts
Script de copie en masse python Objet PHX vers IAD d'objet 25m43.715s Valeur par défaut 1 machine virtuelle, 50 programmes, 100 000 fichiers mis en file d'attente à la fois

Les commandes s5cmd et os sync passent bien du système de fichiers/NFS au stockage d'objets. Le script de copie en masse effectue uniquement des transferts seau à seau 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 seau à seau entre les régions afin que les autres outils n'aient pas été testés pour cela. Le script de copie en masse python se perfectionne mieux sur les données inter-région de seau à seau. Toutefois, il n'est compatible qu'avec le stockage d'objets OCI alors que rclone prend en charge de nombreux serveurs dorsaux et fournisseurs de nuage.

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, Amazon Simple Storage Service (Amazon S3) et Google Cloud Platform Cloud Storage vers OCI Object Storage afin de vérifier que les outils fonctionnent pour ces types de transferts. Pour plus d'informations, voir Déplacer les données vers le stockage d'objets en nuage à l'aide du clone.

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 VM.Standard.E4.Flex avec 24 OCPU, une bande passante de réseau 24Gbps, 384 Go de mémoire. Oracle Linux 8 a été utilisé pour les tests Linux. Tous les tests étaient de seau à seau.

Taille totale Nombre de fichiers Intervalle de tailles de fichier
7.74 Tio 1,000,000 30 Mio
Méthode De Temps Commande Indicateurs Notes  
rclone IAD objet à objet -> IAD 18h39m11.4s copie --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi 1 machine virtuelle, très lente en raison du nombre élevé de fichiers et de la liste des appels à la source  
rclone IAD objet à objet -> IAD 55m8.431s copie --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/fichiers alimentée en 1 000 fichiers à la fois, empêche la liste à la source et à la destination et améliore les performances  
Script de copie en masse python IAD objet à objet -> IAD 28m21.013s S.O. Valeur par défaut 1 machine virtuelle, 50 programmes, 100 000 fichiers mis en file d'attente à la fois  
Script de copie en masse python IAD objet à objet -> IAD S.O. S.O. Valeur par défaut 2 machines virtuelles, 50 programmes par machine virtuelle, 100 000 fichiers en file d'attente à la fois. 429 erreurs reçues, script bloqué et impossible de terminer  
s5cmd IAD objet à objet -> IAD 14m10.864s copie Valeurs par défaut (256 travailleurs) 1 VM S.O.
s5cmd IAD objet à objet -> IAD 7m50.013s copie Valeurs par défaut 2 VM, 256 salariés par VM Exécuté la moitié du temps en tant que 1 machine virtuelle
s5cmd IAD objet à objet -> IAD 3m23.382s copie --numworkers 1000 1 MV, 1000 travailleurs Pour plusieurs tests, nous avons constaté qu'il s'agissait de l'exécution optimale pour ce jeu de données avec s5cmd
rclone IAD objet-à-objet -> PHX 184m36.536s copie --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/fichiers alimentée 1 000 fichiers à la fois  
Script de copie en masse python IAD objet-à-objet -> PHX 35m31.633s S.O. Valeur par défaut 1 machine virtuelle, 50 travailleurs, 100 000 fichiers en file d'attente à la fois  

La commande s5cmd s'exécutait de manière cohérente pour le nombre de fichiers volumineux et les petits fichiers. La valeur s5cmd est limitée, car elle ne peut effectuer que des copies de seau à seau dans la même location et la même région.

Notez les améliorations élevées apportées à rclone une fois que les fichiers sont transmis à la commande et qu'ils passent de l'extensibilité à 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 du service de stockage d'objets pour OCI peut uniquement utiliser l'API native CopyObject d'OCI et ne peut obtenir une simultanéité d'accès qu'à 50 programmes avant d'être ralentie.

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

Étapes 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 en nuage OCI :

Remerciements

Autres ressources d'apprentissage

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

Pour obtenir la documentation sur le produit, visitez Oracle Help Center.