Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
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.
-
Utilisez Rclone pour migrer les données de système de fichiers (locales, NAS, hébergées dans le cloud) vers OCI Object Storage.
-
Migrez des données à partir d'un autre objet cloud ou d'un stockage BLOB vers OCI Object Storage.
-
Utilisez Rclone sur Oracle Cloud Infrastructure Kubernetes Engine (OKE) pour migrer des données d'OCI File Storage vers OCI Object Storage.
Prérequis
-
Un compte OCI.
-
Instance de machine virtuelle sur OCI pour déployer les outils de migration ou un système sur lequel vous pouvez déployer et utiliser les outils de migration.
-
L'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI) est installée avec un fichier de configuration de travail dans votre répertoire de base, dans un sous-répertoire appelé
.oci
. Pour plus d'informations, reportez-vous à la rubrique Configuration du fichier de configuration. -
Accès à un bucket OCI Object Storage.
-
Droits d'accès utilisateur dans OCI pour utiliser OCI Object Storage, avoir accès à la gestion des buckets et des objets ou à la gestion de la famille d'objets pour au moins 1 bucket ou compartiment. Pour plus d'informations, reportez-vous à Stratégies courantes et à Référence de stratégie.
-
Droits d'accès utilisateur permettant de créer, d'exporter et de monter OCI File Storage, ou d'accéder à une cible de montage OCI File Storage déjà montée sur une machine virtuelle, ou à un autre montage NFS ou système de fichiers local à utiliser pour copier des données vers et depuis. Pour plus d'informations, reportez-vous à Gestion de la stratégie File Storage.
-
Connaissance de l'utilisation d'une interface terminal/shell sur Mac OS, Linux, Berkeley Software Distribution (BSD), ou Windows PowerShell, invite de commande ou bash.
-
Connaissance de l'installation de logiciels sur un système Linux et connaissance de Kubernetes.
-
Connaissances de base d'Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) et utilisation de groupes dynamiques avec un hôte Ubuntu dans un groupe dynamique. Pour plus d'informations, reportez-vous à Gestion des groupes dynamiques.
-
Consultez Migration Essentials for Moving Data into OCI Cloud Storage pour installer Rclone et d'autres outils de migration.
-
Pour connaître les outils de migration que nous pouvons utiliser, reportez-vous au Tutoriel 1 : Utilisation des outils de migration pour déplacer des données vers les services OCI Cloud Storage.
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 :
-
Données de système de fichiers (OCI File Storage, OCI Block Storage, OCI File Storage avec Lustre, système de fichiers sur site et NFS sur site) vers d'autres types de stockage de système de fichiers et vers/depuis le stockage d'objets (y compris OCI Object Storage).
-
Stockage d'objets à partir de fournisseurs cloud pris en charge vers et depuis OCI Object Storage.
Commandes et indicateurs Rclone :
-
Comprendre les performances des clones
Rclone est un bon outil à usage général pour la synchronisation ou la copie de fichiers entre des données de système de fichiers, d'autres fournisseurs cloud et des services de stockage cloud OCI. Les performances dépendent de l'augmentation et de l'augmentation. Nous vous recommandons d'exécuter divers tests sur vos systèmes de migration avec un exemple de jeu de migration pour déterminer à quel moment vous atteignez les seuils de la bande passante réseau.
Par exemple, votre bucket source comporte 10 dossiers/préfixes, chacun d'environ 1 To. Vous pouvez diviser la migration en 2 machines virtuelles de grande capacité CPU/RAM et déclencher plusieurs processus de copie Rclone en parallèle à partir des deux machines virtuelles. En fonction de la topologie de chaque dossier et de la capacité de calcul, les paramètres Rclone peuvent être ajustés pour améliorer la vitesse de transfert.
Vous pouvez commencer par exécuter les commandes suivantes sur 2 machines virtuelles, puis ajuster le nombre de transferts et le nombre de vérificateurs jusqu'à saturer la carte d'interface réseau sur chaque machine virtuelle.
rclone copy --progress --transfers 10 --checkers 8 --no-check-dest aws_s3_virgina:/source_bucket_name/folder1 iad_oss_native:/destination_bucket_name/folder1 rclone copy --progress --transfers 50 --checkers 8 --no-check-dest aws_s3_virgina:/source_bucket_name/folder2 iad_oss_native:/destination_bucket_name/folder2
-
Les systèmes ou les instances de machine virtuelle avec plus de CPU, de mémoire et de bande passante réseau peuvent exécuter plus de transferts de fichiers et de vérificateurs en parallèle. La mise à l'échelle vers des systèmes avec plus de ressources permettra des performances plus rapides.
-
Si vos données peuvent être fractionnées en différents lots en fonction de la structure, vous pouvez également exécuter Rclone sur plusieurs systèmes ou instances de machine virtuelle à des fins d'augmentation.
Nous vous recommandons d'augmenter et d'augmenter les performances de Rclone. Nos tests comprenaient 2 machines virtuelles pour exécuter des transferts Rclone en parallèle afin de les augmenter. Si vous disposez d'un ensemble de données plus volumineux, vous pouvez utiliser jusqu'à 4 machines ou même des instances Bare Metal.
-
-
Cloner les commandes de copie et de synchronisation
-
La commande de copie de clone copie copie les fichiers ou objets source vers la destination. Les fichiers identiques sur la source et la destination seront ignorés, testés par taille et heure de modification ou md5sum. La commande de copie ne supprime pas les fichiers de la destination.
-
La commande de synchronisation Rclone synchronise la source avec la destination, en ignorant également les fichiers identiques. La destination sera modifiée pour correspondre à la source, ce qui signifie que les fichiers ne correspondant pas à la source seront supprimés.
Remarque : faites attention en utilisant la synchronisation et utilisez-la uniquement lorsque vous souhaitez que la destination ressemble exactement à la source. Utilisez la commande de copie lorsque vous souhaitez simplement copier de nouveaux fichiers vers la destination.
-
-
Utiliser les indicateurs de ligne de commande de clone droit
Il existe plusieurs indicateurs de ligne de commande Rclone qui peuvent être utilisés avec Rclone et qui affectent la vitesse de migration des données. Il est important de comprendre comment certains de ces indicateurs fonctionnent pour obtenir le meilleur débit de transfert de données.
-
--no-traverse
: cela fonctionne uniquement avec la commande de copie, ne parcourez pas le système de fichiers de destination. Cet indicateur permet de gagner du temps car il n'effectue pas de listes sur la destination pour déterminer les fichiers à copier. Il vérifiera les fichiers un par un pour déterminer s'ils doivent être copiés. Un par un peut sembler lent, mais peut être plus rapide lorsque vous avez un très petit nombre de fichiers / objets à copier vers une destination avec de nombreux fichiers déjà présents. -
--no-check-dest
: cela fonctionne uniquement avec la commande de copie et ne vérifie ni ne répertorie les fichiers de destination pour déterminer ce qui doit être copié ou déplacé, ce qui réduit les appels d'API. Les fichiers sont toujours transférés. Utilisez cette commande lorsque vous savez que vous voulez que tout soit copié sur la source, indépendamment de ce qui se trouve sur la destination ou si vous savez que la destination est vide.Remarque : utilisez les commandes
no-traverse
ouno-check-dest
, de nombreux utilisateurs insèrent les deux sur la ligne de commande, ce qui n'est pas nécessaire.- Si la cible est vide ou que vous voulez copier tous les fichiers de la source vers la destination, peu importe quoi, utilisez
no-check-dest
. - Lorsque vous avez quelques fichiers très volumineux à migrer, utilisez
no-traverse
qui vérifiera chaque fichier pour voir s'il est en cours sur la destination avant de le copier vers la source. Cela peut enregistrer les appels d'API de liste et la quantité de données copiées vers la cible.
- Si la cible est vide ou que vous voulez copier tous les fichiers de la source vers la destination, peu importe quoi, utilisez
-
--ignore-checksum
: cela va vraiment accélérer le transfert, mais Rclone ne vérifiera pas l'altération des données lors du transfert. -
--oos-disable-checksum
: ne stockez pas la somme de contrôle MD5 avec les métadonnées d'objet. Rclone calcule la somme de contrôle MD5 des données avant le téléchargement et l'ajoute aux métadonnées d'objet, ce qui est idéal pour l'intégrité des données. Toutefois, il entraîne des retards avant que les fichiers volumineux ne commencent le processus de téléchargement. -
--transfers <int>
: nombre de transferts de fichiers à exécuter en parallèle (4 par défaut). Augmentez ce nombre en fonction de la taille du système sur lequel vous exécutez rclone. Vous pouvez effectuer des exécutions de test et augmenter le nombre entier jusqu'à atteindre la vitesse de transfert maximale pour l'hôte. Nous recommandons vraiment de tester et d'augmenter ce nombre jusqu'à ce que vous obteniez des performances acceptables, nous avons vu des clients augmenter ce nombre entre 64-3000 pour obtenir les performances souhaitées. -
--checkers <int>
: nombre de vérifications à exécuter en parallèle (valeur par défaut : 8). Nombre de vérificateurs de fichiers à exécuter en parallèle, soyez prudent car il peut drainer l'intégrité du serveur et causer des problèmes sur la destination. Si vous disposez d'un système avec une mémoire très importante, augmentez ce nombre par incréments de 2. Le nombre maximum que nous avons testé ce paramètre avec de bons résultats dans l'environnement de test est de 64, généralement 8-10 est suffisant. Les vérificateurs peuvent être de 25 à 50% du numéro de transfert ; lorsque le numéro de transfert est plus élevé, ce nombre tend à être plus proche de 25%.Remarque : lors de l'augmentation avec plusieurs hôtes exécutant des transferts et des vérificateurs Rclone, vous risquez de rencontrer une erreur 429 "TooManyRequests", si cela se produit, commencez par réduire le nombre de vérificateurs par incréments de 2 jusqu'à ce que vous atteigniez 10. Si la réduction des vérificateurs ne suffit pas, vous devrez également réduire le nombre de transferts.
-
--progress
: affiche la progression lors du transfert. -
--fast-list
: utilisez une liste récursive si elle est disponible. Elle utilise davantage de mémoire mais moins de transactions/appels d'API. Il s'agit d'une bonne option à utiliser lorsque vous disposez d'un nombre modéré de fichiers dans des répertoires imbriqués. Ne pas utiliser avecno-traverse
ouno-check-dest
car il s'agit d'indicateurs contraires. Peut être utilisé avec la commande de copie ou de synchronisation. -
--oos-no-check-bucket
: utilisez cette option lorsque vous savez que le bucket existe, qu'elle réduit le nombre de transactions effectuées par Rclone, qu'elle définit Rclone pour qu'il suppose qu'il existe et qu'il commence à y déplacer des données. -
--oos-upload-cutoff
: les fichiers de taille supérieure seront téléchargés par blocs. La valeur par défaut est 200MiB. -
--oos-chunk-size
: lors du téléchargement de fichiers dont la taille est supérieure au paramètre de limite de téléchargement ou de fichiers dont la taille est inconnue, ils sont téléchargés en tant que téléchargements multipart à l'aide de cette taille de bloc. Rclone augmentera automatiquement la taille des blocs lors du téléchargement d'un fichier volumineux de taille connue pour rester en dessous de la limite de 10 000 blocs. La valeur par défaut est 5MiB. -
--oos-upload-concurrency <int>
: cette option est utilisée pour les téléchargements multipart et représente le nombre de blocs téléchargés simultanément. Si vous téléchargez un petit nombre de fichiers volumineux sur des liens haut débit et que ces téléchargements n'utilisent pas entièrement votre bande passante, l'augmentation de ce nombre peut aider à accélérer les transferts. La valeur par défaut est 8, si cette option n'utilise pas la bande passante, augmentez lentement pour améliorer l'utilisation de la bande passante.Remarque : les téléchargements multipart utilisent davantage de mémoire lorsque vous utilisez les paramètres
--transfers <int>
,--oos-upload-concurrency <int>
et--oos-chunk-size
. Les téléchargements de partie unique n'utilisent pas de mémoire supplémentaire. Lorsque vous définissez ces paramètres, tenez compte de la latence de votre réseau. Plus la latence est élevée, plus les téléchargements de partie unique sont susceptibles d'être plus rapides.
-
-
Exemple de fichier de configuration Rclone pour OCI Object Storage
[oci] type = oracleobjectstorage namespace = xxxxxxxxxxx compartment = ocid1.compartment.oc1..xxxxxxxxx region = us-ashburn-1 provider = user_principal_auth config_file = ~/.oci/config config_profile = Default
-
Format de commande Rclone de base
rclone <flags> <command> <source> <dest>
-
Exemple d'exécution d'une copie Rclone à partir d'une source de système de fichiers local ou d'une source OCI File Storage vers la destination OCI Object Storage.
rclone copy /src/path oci:bucket-name
-
Exemple d'exécution de la copie Rclone à partir de la source OCI Object Storage vers un système de fichiers local ou une destination OCI File Storage.
rclone copy oci:bucket-name /src/path
-
Exemple d'exécution d'une copie Rclone d'une source S3 vers une destination OCI Object Storage.
rclone copy s3:s3-bucket-name oci:bucket-name
Remarque : lors de la migration à partir d'AWS et de l'utilisation du cryptage côté serveur avec KMS, assurez-vous que rclone est configuré avec
server_side_encryption = aws:kms
pour éviter les erreurs de somme de contrôle. Pour plus d'informations, reportez-vous aux sections Rclone S3 KMS et Rclone S3 configuration.
Remarque : le format de la commande de synchronisation sera fondamentalement le même, remplacez simplement la copie par la synchronisation.
-
Exemples d'utilisation de Rclone
-
Exemple 1 : utilisez Rclone pour migrer un petit nombre de petits fichiers copiés dans une destination contenant déjà des données avec un nombre élevé de fichiers ou d'objets.
rclone --progress --transfers 16 --oos-no-check-bucket --checkers 8 --no-traverse copy <source> <dest>
-
Exemple 2 : clonage à l'aide de fichiers volumineux avec téléchargements multipart.
rclone --progress --oos-no-check-bucket --fast-list --no-traverse --transfers 8 --oos-chunk-size 10M --oos-upload-concurrency 10 --checkers 10 copy <source> <dest>
Remarque : points de départ des options
--transfers
,--oos-chunk-size
,--oos-upload-concurrency
et--checkers
. Vous devez les ajuster en fonction de la taille de fichier/d'objet, de la mémoire et des ressources disponibles sur les systèmes que vous utilisez pour migrer des données. Ajustez-les jusqu'à ce que vous obteniez une utilisation suffisante de la bande passante pour migrer vos données de manière optimale. Si votre système est très petit, vous devrez peut-être ajuster ces chiffres pour économiser les ressources. -
Exemple : 3 utilisez Rclone pour une exécution de redimensionnement sur 3 machines Bare Metal avec une carte d'interface réseau de 100 Gbits/s, un ensemble de données de taille mixte avec des téléchargements multipart avec des pétaoctets de données, un bucket non vide, le service OCI File Storage vers le service OCI Object Storage.
rclone --progress --stats-one-line --max-stats-groups 10 --fast-list --oos-no-check-bucket --oos-upload-cutoff 10M --transfers 64 --checkers 32 --oos-chunk-size 512Mi --oos-upload-concurrency 12 --oos-disable-checksum --oos-attempt-resume-upload --oos-leave-parts-on-error --no-check-dest /src/path oci:bucket
Indicateurs supplémentaires utilisés :
--stats-one-line
: placez les statistiques sur une ligne.--max-stats-group
: le nombre maximal de groupes de statistiques à conserver en mémoire, sur le nombre maximal de groupes les plus anciens, est supprimé (par défaut, 1000).--oos-attempt-resume-upload
: tentative de reprise du téléchargement multipart précédemment démarré pour l'objet.--oos-leave-parts-on-error
: évitez d'appeler un téléchargement d'abandon en cas d'échec, en laissant toutes les parties téléchargées pour une récupération manuelle.
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.
-
Exécutez la commande suivante pour obtenir la liste des fichiers dans la source.
rclone lsf --files-only -R src:bucket | sort > src
-
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 quesrc_00
.split -l 1000 --numeric-suffixes src src_
-
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.
-
Partitionneur de système de fichiers (Fpart) est un outil qui peut être utilisé pour partitionner la structure de répertoires. Il peut appeler des outils tels que rsync, tar et Rclone avec une partition de système de fichiers pour s'exécuter en parallèle et indépendamment les uns des autres. Nous utiliserons fpart avec Rclone.
-
fpsync est un script wrapper qui utilise fpart pour exécuter les outils de transfert (rsync, Rclone) en parallèle. La commande
fpsync
est exécutée à partir d'un hôte d'opérateur fpsync. L'outil fpsync propose également des options permettant d'utiliser des noeuds de processus actif distincts. La synchronisation fpsync modifiée prend en charge Rclone et les pods Kubernetes. -
kubectl gère les travaux Kubernetes.
Suivez les étapes décrites:
-
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é.
-
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
-
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
-
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. -
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
-
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. -
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
ets5cmd
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 deos sync
et des5cmd
, 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
-
Ensemble de données 1:
Taille totale Nombre de fichiers Plage de tailles de fichier 3TB 3 1TB Méthode A - De Temps Commande Indicateurs synchronisation os NFS/Fichier PHX vers Object IAD 123m17.102s S/O --parallel-operations-count 100
s5cmd NFS/Fichier PHX vers Object IAD 239m20.625s copier run commands.txt
, exécution par défaut--numworkers 256
rclone NFS/Fichier PHX vers Object IAD 178m27.101s copier --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
Remarque : nos tests ont montré que
os sync
fonctionnait le plus rapidement pour cet ensemble de données. -
Ensemble de données 2:
Taille totale Nombre de fichiers Plage de tailles de fichier 9.787GB 20 000 1 Mo Méthode A - De Temps Commande Indicateurs s5cmd NFS/Fichier PHX vers Object IAD 1m12.746s copier exécution par défaut --numworkers 256
synchronisation os NFS/Fichier PHX vers Object IAD 2m48.742s S/O --parallel-operations-count 1000
rclone NFS/Fichier PHX vers Object IAD 1m52.886s copier --transfers=500 --oos-no-check-bucket --no-check-dest
Remarque : nos tests ont montré que
s5cmd
était le mieux adapté à cet ensemble 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 :
- Les 14 répertoires ont été répartis entre les 2 instances de machine virtuelle.
- Chaque machine virtuelle exécutait 7 commandes/processus, 1 pour chaque répertoire, sauf indication contraire.
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 :
-
A l'aide d'OCI Object Storage 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.
-
A l'aide de Fpsync et de Rsync pour les migrations de données de système de fichiers, reportez-vous à Tutoriel 4 : Déplacement de données vers les services OCI Cloud Storage à l'aide de Fpsync et de Rsync pour les migrations de données de système de fichiers.
Liens connexes
-
Notions fondamentales relatives à la migration des données vers OCI Cloud Storage
-
Déplacer des données vers Object Storage dans le cloud en utilisant Rclone
-
Transfert de données entre les systèmes de fichiers et OCI Object Storage à l'aide d'OKE
-
Annonce de la prise en charge native du back-end du fournisseur OCI Object Storage dans rclone
Remerciements
- Auteurs - Melinda Centeno (chef de produit principal senior, OCI Object Storage), Vinoth Krishnamurthy (membre principal du personnel technique, OCI File Storage), Aboo Valappil (membre consultant du personnel technique, OCI File et Block Storage)
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.
Move Data into OCI Cloud Storage Services using Rclone
G25568-02
Copyright ©2025, Oracle and/or its affiliates.