Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Démarrer avec le niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
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.
-
Utilisez Rclone pour migrer les données du système de fichiers (local, NAS, hébergé dans le nuage) vers le service de stockage d'objets pour OCI.
-
Migrez les données d'un autre objet en nuage ou d'un objet BLOB vers le service de stockage d'objets pour OCI.
-
Utilisez Rclone sur Oracle Cloud Infrastructure Kubernetes Engine (OKE) pour migrer des données du service de stockage de fichiers OCI vers le service de stockage d'objets OCI.
Préalables
-
Un compte OCI.
-
Instance de machine virtuelle sur OCI pour déployer les outils de migration ou un système dans lequel vous pouvez déployer et utiliser des 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 fonctionnel dans votre répertoire de base dans un sous-répertoire nommé
.oci
. Pour plus d'informations, voir Configuration du fichier de configuration. -
Accès à un seau de stockage d'objets OCI.
-
Autorisations d'utilisateur dans OCI pour utiliser le service de stockage d'objets pour OCI, avoir accès à la gestion des seaux et des objets ou gérer la famille d'objets pour au moins 1 seau ou compartiment. Pour plus d'informations, voir Politiques communes et Informations de référence sur les politiques.
-
Autorisation de l'utilisateur pour créer, exporter et monter le service de stockage de fichiers OCI ou accéder à une cible de montage du service de stockage de fichiers OCI qui est 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, voir Gérer la politique de stockage de fichiers.
-
Connaissance de l'utilisation d'une interface de terminal/coquille sur Mac OS, Linux, Berkeley Software Distribution (BSD) ou Windows PowerShell, invite de commande ou bash.
-
Familiarité avec l'installation de logiciels sur un système Linux et avoir une certaine expérience ou compréhension de Kubernetes.
-
Connaissance de base d'Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) et utilisation des groupes dynamiques avec un hôte Ubuntu dans un groupe dynamique. Pour plus d'informations, voir Gestion des groupes dynamiques.
-
Consultez les éléments essentiels de la migration pour déplacer des données dans OCI Cloud Storage pour installer Rclone et d'autres outils de migration.
-
Pour connaître les outils de migration que nous pouvons utiliser, voir Tutoriel 1 : Utiliser les outils de migration pour déplacer des données vers les services de stockage en nuage pour OCI.
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 :
-
Données de système de fichiers (OCI File Storage, OCI Block Storage, OCI File Storage with Lustre, système de fichiers sur place et NFS sur place) 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 depuis et vers le stockage d'objets d'OCI.
Commandes et indicateurs Rclone :
-
Comprendre la performance du clone
Rclone est un bon outil à usage général pour la synchronisation ou la copie de fichiers entre les données du système de fichiers, d'autres fournisseurs de nuage et les services de stockage en nuage OCI. La performance dépendra de votre capacité d'augmentation et de réduction. Nous vous recommandons d'exécuter divers tests sur vos systèmes de migration avec un exemple de migration défini pour déterminer à quel moment vous atteignez les seuils de votre bande passante réseau.
Par exemple, votre seau source comporte 10 dossiers/préfixes, chacun ayant environ 1 To. Vous pouvez fractionner la migration sur 2 machines virtuelles de grande capacité d'UC/RAM et déclencher plusieurs processus de copie de clone 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'à ce que vous saturiez 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 d'UC, de mémoire et de bande passante de réseau peuvent exécuter plus de transferts et de vérificateurs de fichiers en parallèle. La mise à l'échelle 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 pour une mise à l'échelle.
Nous vous recommandons de passer à l'échelle supérieure pour améliorer les performances de Rclone. Nos tests ont inclus 2 machines virtuelles pour exécuter des transferts Rclone en parallèle afin d'évoluer. Si vous avez un jeu de données plus volumineux, vous pouvez utiliser jusqu'à 4 machines ou même utiliser des instances sans système d'exploitation.
-
-
Cloner les commandes de copie et de synchronisation
-
La commande Rclone copy copie les fichiers ou objets sources vers la destination. Il ignore les fichiers identiques sur la source et la destination, testés par taille et heure de modification ou md5sum. La commande copy 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.
Note : Veillez à utiliser la synchronisation et à l'utiliser uniquement lorsque vous voulez que la destination ressemble exactement à la source. Utilisez la commande copy lorsque vous souhaitez copier de nouveaux fichiers vers la destination.
-
-
Utiliser les indicateurs de ligne de commande Rclone droit
Plusieurs indicateurs de ligne de commande Rclone peuvent être utilisés avec Rclone qui affectent la rapidité de la 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 ne fonctionne qu'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 à la fois pour déterminer s'il doit être copié. 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 copy et ne vérifie pas ou ne liste pas les fichiers de destination pour déterminer ce qui doit être copié ou déplacé, ce qui minimise les appels d'API. Les fichiers sont toujours transférés. Utilisez cette commande lorsque vous savez que vous voulez que tout ce qui se trouve sur la source soit copié, peu importe ce qui se trouve sur la destination ou si vous savez que la destination est vide.Note : Utilisez les commandes
no-traverse
ouno-check-dest
, de nombreux utilisateurs placent les deux sur la ligne de commande, ce qui n'est pas nécessaire.- Si votre cible est vide ou si vous voulez que tous les fichiers soient copiés 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 à jour dans la destination avant de le copier dans la source; cela pourrait enregistrer les appels d'API de liste et la quantité de données copiées dans la cible.
- Si votre cible est vide ou si vous voulez que tous les fichiers soient copiés de la source vers la destination, peu importe quoi, utilisez
-
--ignore-checksum
: Cela accélérera vraiment le transfert, mais Rclone ne vérifiera pas la corruption de 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 chargement et l'ajoute aux métadonnées d'objet, ce qui est idéal pour l'intégrité des données, mais cela entraîne des retards avant que les fichiers volumineux ne commencent le processus de chargement. -
--transfers <int>
: Nombre de transferts de fichiers à exécuter en parallèle (valeur par défaut 4). 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'à ce que vous atteigniez la vitesse de transfert maximale pour votre 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 et 3000 pour obtenir les performances souhaitées. -
--checkers <int>
: Nombre de vérifications à exécuter en parallèle (par défaut, 8). Quantité de vérificateurs de fichiers à exécuter en parallèle, soyez prudent car il peut drainer l'état du serveur et causer des problèmes sur la destination. Si vous avez un système avec une mémoire très grande, 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 n'importe où de 25 à 50% du nombre de transfert; lorsque le nombre de transfert est supérieur, ce nombre tend à être plus proche de 25%.Note : Lors de l'augmentation avec plusieurs hôtes exécutant des transferts et des vérificateurs Rclone, vous pouvez atteindre 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 l'abaissement des chèques ne suffit pas, vous devrez également réduire le nombre de transferts.
-
--progress
: La progression sera affichée lors du transfert. -
--fast-list
: Utilisez une liste récursive, si elle est disponible; utilise plus de mémoire, mais moins de transactions/appels d'API. C'est une bonne option à utiliser lorsque vous avez 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 copier ou synchroniser. -
--oos-no-check-bucket
: Utilisez cette option lorsque vous savez que le seau existe, qu'il réduit le nombre de transactions effectuées par Rclone, qu'il définit Rclone pour présumer que le seau existe et pour commencer à y déplacer des données. -
--oos-upload-cutoff
: Les fichiers dont la taille est supérieure à cette taille seront chargés en fragments, la valeur par défaut est 200MiB. -
--oos-chunk-size
: Lors du chargement de fichiers dont la taille est supérieure au paramètre de limite de chargement ou de fichiers dont la taille est inconnue, ils seront chargés en tant que chargements en plusieurs parties à l'aide de cette taille de bloc. Rclone augmentera automatiquement la taille des fragments lors du chargement d'un fichier volumineux de taille connue pour rester en dessous de la limite de 10 000 fragments. La valeur par défaut est 5MiB. -
--oos-upload-concurrency <int>
: Utilisé pour les chargements en plusieurs parties, il s'agit du nombre de fragments 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 la bande passante n'est pas utilisée, augmentez lentement pour améliorer l'utilisation de la bande passante.Note : Les chargements en plusieurs parties utiliseront de la mémoire supplémentaire lors de l'utilisation des paramètres :
--transfers <int>
,--oos-upload-concurrency <int>
et--oos-chunk-size
. Les chargements d'une seule partie 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 chargements d'une seule partie sont susceptibles d'être plus rapides.
-
-
Exemple de fichier de configuration Rclone pour le service de stockage d'objets pour OCI
[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 de stockage de fichiers OCI vers la destination de stockage d'objets OCI.
rclone copy /src/path oci:bucket-name
-
Exemple d'exécution d'une copie Rclone de la source de stockage d'objets OCI vers un système de fichiers local ou une destination de stockage de fichiers OCI.
rclone copy oci:bucket-name /src/path
-
Exemple d'exécution d'une copie Rclone d'une source S3 vers une destination de stockage d'objets OCI.
rclone copy s3:s3-bucket-name oci:bucket-name
Note : Lors de la migration depuis AWS et de l'utilisation du chiffrement côté serveur avec KMS, assurez-vous que le clone est configuré avec
server_side_encryption = aws:kms
pour éviter les erreurs de somme de contrôle. Pour plus d'informations, voir Cloner S3 KMS et Configuration de cloner S3
Note : Le format de la commande de synchronisation sera essentiellement le même, il suffit de remplacer la copie par la synchronisation.
-
Exemples d'utilisation du clone
-
Exemple 1 : Utilisez Rclone pour migrer un petit nombre de petits fichiers copiés vers 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 : Clonez avec moins de fichiers volumineux avec des chargements en plusieurs parties.
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>
Note : Il s'agit des points de départ pour les options
--transfers
,--oos-chunk-size
,--oos-upload-concurrency
et--checkers
. Vous devrez les ajuster en fonction de la taille du fichier/objet, de la mémoire et des ressources disponibles sur les systèmes que vous utilisez pour la migration 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 des ressources. -
Exemple : 3 Utilisez Rclone pour une exécution d'augmentation sur des machines sans système d'exploitation de 3 avec une carte d'interface réseau de 100 Gbit/s, une taille mixte du jeu de données avec des chargements en plusieurs parties avec des pétaoctets de données, un seau non vide, le service de stockage de fichiers OCI vers le service de stockage d'objets OCI.
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
: Ajustez les statistiques sur une ligne.--max-stats-group
: Le nombre maximal de groupes de statistiques à conserver en mémoire, le plus ancien maximum, est abandonné (par défaut, 1000).--oos-attempt-resume-upload
: Tentative de reprise du chargement en plusieurs parties précédemment démarré pour l'objet.--oos-leave-parts-on-error
: Évitez d'appeler l'abandon du chargement en cas d'échec, en laissant toutes les parties chargées avec succès pour une récupération manuelle.
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.
-
Exécutez la commande suivante pour obtenir la liste des fichiers dans la source.
rclone lsf --files-only -R src:bucket | sort > src
-
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 quesrc_00
.split -l 1000 --numeric-suffixes src src_
-
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.
-
Filesystem partitioner (Fpart) est un outil qui peut être utilisé pour partitionner la structure de répertoire. Il peut appeler des outils tels que rsync, tar et Rclone avec une partition de système de fichiers à exécuter en parallèle, et indépendamment les uns des autres. Nous utiliserons fpart avec Rclone.
-
fpsync est un script d'encapsulation 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 travail distincts. La version modifiée de fpsync prend en charge les pods Rclone et Kubernetes. -
kubectl gère les tâches Kubernetes.
Voici la marche à suivre :
-
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é.
-
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 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
-
Configurez le fichier
kubeconfig
pour avoir accès à la grappe OKE. Pour plus d'informations, voir Configuration de l'accès local aux regroupements. -
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
-
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. -
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
ets5cmd
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 deos sync
et des5cmd
, 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
-
Jeu de données 1 :
Taille totale Nombre de fichiers Intervalle de tailles de fichier 3TB 3 1TB Méthode De Temps Commande Indicateurs synchronisation du système d'exploitation NFS/Fichier PHX vers IAD d'objet 123m17.102s S.O. --parallel-operations-count 100
s5cmd NFS/Fichier PHX vers IAD d'objet 239m20.625s copie run commands.txt
, exécution par défaut--numworkers 256
rclone NFS/Fichier PHX vers IAD d'objet 178m27.101s copie --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
Note : Nos tests ont montré que
os sync
fonctionnait le plus rapidement pour ce jeu de données. -
Jeu de données 2 :
Taille totale Nombre de fichiers Intervalle de tailles de fichier 9.787Go 20 000 1 Mo Méthode De Temps Commande Indicateurs s5cmd NFS/Fichier PHX vers IAD d'objet 1m12.746s copie exécution par défaut --numworkers 256
synchronisation du système d'exploitation NFS/Fichier PHX vers IAD d'objet 2m48.742s S.O. --parallel-operations-count 1000
rclone NFS/Fichier PHX vers IAD d'objet 1m52.886s copie --transfers=500 --oos-no-check-bucket --no-check-dest
Note : Nos tests ont montré que
s5cmd
offre les meilleures performances pour ce jeu 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 :
- Les 14 répertoires ont été fractionnés entre les 2 instances de machine virtuelle.
- Chaque machine virtuelle a exécuté 7 commandes/processus, 1 pour chaque répertoire, sauf indication contraire.
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 :
-
À l'aide de la synchronisation du service de stockage d'objets pour OCI et de S5cmd, voir Tutoriel 3 : Déplacer des données dans les services de stockage en nuage pour OCI à l'aide de la synchronisation du service de stockage d'objets pour OCI et S5cmd.
-
À l'aide de Fpsync et de Rsync pour les migrations de données de système de fichiers, voir Tutoriel 4 : Déplacer des données vers les services de stockage en nuage OCI à l'aide de Fpsync et de Rsync pour les migrations de données de système de fichiers.
Liens connexes
-
Notions essentielles pour la migration des données vers OCI Cloud Storage
-
Déplacer les données vers le stockage d'objets en nuage à l'aide de Rclone
-
Transfert de données entre les systèmes de fichiers et le stockage d'objets OCI à l'aide d'OKE
-
Rcloner la documentation sur le service de stockage d'objets pour OCI
Remerciements
- Authors - Melinda Centeno (Gestionnaire principal de produit, service de stockage d'objets pour OCI), Vinoth Krishnamurthy (membre principal du personnel technique, service de stockage de fichiers pour OCI), Aboo Valappil (membre consultant du personnel technique, service de stockage de fichiers et par blocs pour OCI)
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.
Move Data into OCI Cloud Storage Services using Rclone
G25567-02
Copyright ©2025, Oracle and/or its affiliates.