Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Sposta i dati nei servizi di storage cloud OCI utilizzando Rclone
Introduzione
Questa è l'esercitazione 2 di una serie di quattro esercitazioni che mostra vari modi per eseguire la migrazione dei dati nei servizi di storage cloud Oracle Cloud Infrastructure (OCI). La serie è impostata in modo da poter esaminare l'Esercitazione 1: Utilizzare gli strumenti di migrazione per spostare i dati nei servizi di storage cloud OCI per comprendere a fondo i vari strumenti e quindi procedere alle esercitazioni o ai documenti correlati pertinenti alle esigenze di migrazione. Questa esercitazione si concentrerà sull'uso di Rclone per eseguire la migrazione dei dati nei servizi di storage cloud OCI.
OCI offre ai clienti computing altamente performante e opzioni di storage cloud a basso costo. Attraverso lo storage su richiesta locale, di oggetti, file, a blocchi e di archivio, Oracle soddisfa i requisiti chiave del carico di lavoro dello storage e i casi d'uso.
I servizi di storage cloud OCI offrono opzioni di storage cloud rapide, sicure e durature per tutte le esigenze aziendali. A partire dalle opzioni ad alte prestazioni come OCI File Storage con il servizio Lustre e OCI Block Volumes; dai file system in scala exabyte completamente gestiti dal servizio OCI File Storage con destinazioni di accesso ad alte prestazioni; allo storage degli oggetti OCI altamente duraturo e scalabile. Le nostre soluzioni possono soddisfare le tue esigenze, dalle applicazioni a uso intensivo di prestazioni come i carichi di lavoro AI/ML AI data lake su scala exabyte.
Rclone è una utility open source a riga di comando per eseguire la migrazione dei dati nel cloud o tra fornitori di storage cloud. Rclone può essere utilizzato per eseguire la migrazione una tantum e la sincronizzazione periodica tra lo storage di origine e quello di destinazione. Rclone può eseguire la migrazione dei dati da e verso lo storage degli oggetti, lo storage di file, le unità attivate e tra i 70 tipi di storage supportati. Lo storage degli oggetti OCI è supportato in modo nativo come provider backend Rclone. È possibile eseguire lo scale-up e lo scale-out dei processi Rclone per aumentare le prestazioni di trasferimento utilizzando le opzioni dei parametri.
Determina la quantità di dati di cui eseguire la migrazione e il tempo di inattività disponibile per eseguire il cut-over alla nuova piattaforma di storage OCI. Le migrazioni batch sono una buona scelta per suddividere la migrazione in incrementi gestibili. Le migrazioni batch consentono di pianificare i tempi di inattività per applicazioni specifiche in finestre diverse. Alcuni clienti hanno la flessibilità di eseguire una migrazione una tantum in una finestra di manutenzione pianificata per 2-4 giorni. OCI FastConnect può essere utilizzato per creare una connessione dedicata e privata tra OCI e il tuo ambiente, con velocità di porta da 1G a 400G per accelerare il processo di trasferimento dei dati. OCI FastConnect può essere integrato con le soluzioni dei partner come Megaport e ConsoleConnect per creare una connessione privata al data center o all'interconnessione cloud-to-cloud per spostare i dati più direttamente da un altro fornitore cloud nel servizio di storage cloud OCI. Per ulteriori informazioni, vedere Integrazione FastConnect con Megaport Cloud Router.
Destinatari
DevOps ingegneri, sviluppatori, amministratori e utenti dello storage cloud OCI, responsabili IT, utenti avanzati OCI e amministratori delle applicazioni.
Obiettivo
Scopri come utilizzare Rclone per copiare e sincronizzare i dati nei servizi di storage cloud OCI.
-
Utilizza Rclone per eseguire la migrazione dei dati del file system (locali, NAS, in hosting nel cloud) nello storage degli oggetti OCI.
-
Esegui la migrazione dei dati da un altro oggetto cloud o storage BLOB in OCI Object Storage.
-
Utilizza Rclone su Oracle Cloud Infrastructure Kubernetes Engine (OKE) per eseguire la migrazione dei dati da OCI File Storage a OCI Object Storage.
Prerequisiti
-
Un account OCI.
-
Istanza di virtual machine (VM) su OCI per distribuire gli strumenti di migrazione o un sistema in cui è possibile distribuire e utilizzare gli strumenti di migrazione.
-
Interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI) installata con un file di configurazione funzionante nella directory home in una sottodirectory denominata
.oci
. Per maggiori informazioni, vedere Setting up the Configuration File. -
Accesso a un bucket di storage degli oggetti OCI.
-
Le autorizzazioni utente in OCI per utilizzare OCI Object Storage, avere accesso per gestire bucket e oggetti o gestire object-family per almeno 1 bucket o compartimento. Per ulteriori informazioni, vedere Criteri comuni e Riferimento ai criteri.
-
Autorizzazione utente per creare, esportare e installare lo storage di file OCI oppure accesso a una destinazione di accesso allo storage di file OCI già installata su una VM oppure a un altro accesso NFS o a un file system locale da utilizzare per copiare i dati da e verso una VM. Per ulteriori informazioni, vedere Gestisci criteri di storage dei file.
-
Familiarità con l'utilizzo di un'interfaccia terminale/shell su Mac OS, Linux, Berkeley Software Distribution (BSD) o Windows PowerShell, prompt dei comandi o bash.
-
Acquisire familiarità con l'installazione di software su un sistema Linux e avere qualche esperienza o comprensione di Kubernetes.
-
Conoscenza di base di Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) e utilizzo di gruppi dinamici con un host Ubuntu in un gruppo dinamico. Per ulteriori informazioni, vedere Gestione dei gruppi dinamici.
-
Per installare Rclone e altri strumenti di migrazione, consulta Aspetti fondamentali della migrazione per lo spostamento dei dati nello storage cloud OCI.
-
Per conoscere gli strumenti di migrazione che possiamo utilizzare, consulta l'Esercitazione 1: Utilizza gli strumenti di migrazione per spostare i dati nei servizi di storage cloud OCI.
Panoramica dei termini Rclone e Basic
Rclone è un utile strumento di migrazione a causa dei numerosi protocolli e provider cloud che supporta e della facilità di configurazione. È un buon strumento di migrazione per scopi generali per qualsiasi tipo di set di dati. Rclone funziona particolarmente bene per i data set che possono essere suddivisi in batch per eseguire lo scale-out tra i nodi e velocizzare il trasferimento dei dati.
Rclone può essere utilizzato per eseguire la migrazione:
-
Dati del file system (OCI File Storage, OCI Block Storage, OCI File Storage con Lustre, file system on premise e NFS on premise) ad altri tipi di storage del file system e allo storage degli oggetti (incluso OCI Object Storage).
-
Storage degli oggetti dai provider cloud supportati a e da OCI Object Storage.
Comandi e flag Rclone:
-
Informazioni sulle prestazioni dei cloni
Rclone è un buon strumento di uso generale per sincronizzare o copiare i file tra i dati del file system, altri provider cloud e servizi di storage cloud OCI. Le prestazioni dipendono da quanto è possibile eseguire lo scale-up e lo scale-out. Si consiglia di eseguire vari test sui sistemi di migrazione con una migrazione di esempio impostata per determinare quando si raggiungono le soglie della larghezza di banda di rete.
Ad esempio, il bucket di origine dispone di 10 cartelle/prefissi, ognuno dei quali ha circa 1 TB. Puoi suddividere la migrazione tra 2 VM di grande capacità CPU/RAM e attivare più processi di copia Rclone in parallelo dalle due VM. A seconda della topologia di ogni cartella e della capacità di calcolo, i parametri Rclone possono essere regolati per migliorare la velocità di trasferimento.
Puoi iniziare eseguendo i seguenti comandi su 2 VM e quindi regolare il conteggio dei trasferimenti e il conteggio dello strumento di controllo fino a saturare la NIC su ogni VM.
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
-
Le istanze di sistemi o VM con più CPU, memoria e larghezza di banda di rete possono eseguire più trasferimenti di file e strumenti di controllo in parallelo. La scalabilità fino a sistemi con più risorse consentirà prestazioni più veloci.
-
Se i tuoi dati possono essere suddivisi in vari batch in base alla struttura, puoi anche eseguire Rclone su più sistemi o istanze VM per eseguire lo scale-out.
Si consiglia di eseguire lo scale-up e lo scale-out per migliorare le prestazioni Rclone. I nostri test hanno incluso 2 VM per eseguire i trasferimenti Rclone in parallelo per lo scale-out. Se si dispone di un set di dati più grande, è possibile utilizzare fino a 4 computer o anche istanze Bare Metal (BM).
-
-
Comandi di copia e sincronizzazione Rclone
-
Il comando Copia Rclone copia i file o gli oggetti di origine nella destinazione. Ignorerà i file identici nell'origine e nella destinazione, testando in base alla dimensione e all'ora di modifica o md5sum. Il comando copy non elimina i file dalla destinazione.
-
Il comando di sincronizzazione Rclone sincronizza l'origine con la destinazione, saltando anche file identici. La destinazione verrà modificata in modo da corrispondere all'origine, il che significa che i file non corrispondenti all'origine verranno eliminati.
Nota: fare attenzione a utilizzare la sincronizzazione e utilizzarla solo quando si desidera che la destinazione abbia esattamente l'aspetto dell'origine. Utilizzare il comando copia quando si desidera semplicemente copiare nuovi file nella destinazione.
-
-
Usa flag riga di comando Rclone destro
Esistono diversi flag della riga di comando Rclone che possono essere utilizzati con Rclone che influiscono sulla velocità di migrazione dei dati. È importante capire come funzionano alcuni di questi flag per ottenere il miglior throughput di trasferimento dati.
-
--no-traverse
: funziona solo con il comando copy e non deve spostarsi nel file system di destinazione. Questo flag consente di risparmiare tempo perché non eseguirà elenchi nella destinazione per determinare i file da copiare. Controlla i file uno alla volta per determinare se devono essere copiati. Uno per uno può sembrare lento, ma può essere più veloce quando si dispone di un numero molto piccolo di file / oggetti da copiare in una destinazione con molti file già presenti. -
--no-check-dest
: funziona solo con il comando di copia e non controllerà o elencherà i file di destinazione per determinare gli elementi da copiare o spostare, riducendo al minimo le chiamate API. I file vengono sempre trasferiti. Utilizzare questo comando quando si sa di voler copiare tutto sull'origine indipendentemente da ciò che si trova sulla destinazione o se si sa che la destinazione è vuota.Nota: utilizzare i comandi
no-traverse
ono-check-dest
, molti utenti inseriscono entrambi nella riga di comando, cosa non necessaria.- Se la destinazione è vuota o si desidera che tutti i file vengano copiati dall'origine alla destinazione, utilizzare
no-check-dest
. - Quando si dispone di alcuni file di grandi dimensioni di cui è necessario eseguire la migrazione, utilizzare
no-traverse
, che controllerà ogni file per verificare se è corrente nella destinazione prima di copiarlo nell'origine. Ciò potrebbe salvare le chiamate API dell'elenco e la quantità di dati copiati nella destinazione.
- Se la destinazione è vuota o si desidera che tutti i file vengano copiati dall'origine alla destinazione, utilizzare
-
--ignore-checksum
: questo accelererà il trasferimento, ma Rclone non verificherà il danneggiamento dei dati durante il trasferimento. -
--oos-disable-checksum
: non memorizza il checksum MD5 con i metadati degli oggetti. Rclone calcola il checksum MD5 dei dati prima di caricarli e li aggiunge ai metadati dell'oggetto, il che è ottimo per l'integrità dei dati, ma causa ritardi prima che i file di grandi dimensioni inizino il processo di caricamento. -
--transfers <int>
: numero di trasferimenti di file da eseguire in parallelo (impostazione predefinita: 4). Ridimensionare questo numero in base alle dimensioni del sistema in cui si esegue rclone, è possibile eseguire esecuzioni di test e aumentare il numero intero fino a raggiungere la velocità di trasferimento massima per l'host. Consigliamo davvero di testare e aumentare questo numero fino a ottenere prestazioni accettabili, abbiamo visto i clienti aumentare questo numero tra 64 e 3000 per ottenere le prestazioni desiderate. -
--checkers <int>
: numero di controlli da eseguire in parallelo (impostazione predefinita: 8). Numero di verificatori di file da eseguire in parallelo, prestare attenzione in quanto può eliminare lo stato del server e causare problemi sulla destinazione. Se si dispone di un sistema con memoria molto grande, aumentare questo numero con incrementi di 2. Il numero massimo che abbiamo testato questa impostazione con buoni risultati nell'ambiente di test è 64, in genere 8-10 è sufficiente. Le pedine possono essere ovunque dal 25-50% del numero di trasferimento; quando il numero di trasferimento è più alto questo numero tende ad essere più vicino al 25%.Nota: quando si esegue lo scale-out con più host che eseguono trasferimenti e checker Rclone, è possibile che si verifichi un errore 429 "TooManyRequests", se questo errore inizia con la riduzione della quantità di checker con incrementi di 2 fino a raggiungere 10. Se abbassare le pedine non è sufficiente, dovrai anche abbassare il numero di trasferimenti.
-
--progress
: verrà visualizzato l'avanzamento durante il trasferimento. -
--fast-list
: utilizzare un elenco ricorsivo, se disponibile; utilizza più memoria, ma meno transazioni/chiamate API. Questa è una buona opzione da utilizzare quando si dispone di un numero moderato di file nelle directory nidificate. Non utilizzare conno-traverse
ono-check-dest
poiché sono flag contrari. Può essere utilizzato con il comando di copia o sincronizzazione. -
--oos-no-check-bucket
: utilizzare questa opzione quando si è certi che il bucket esiste, riduce il numero di transazioni eseguite da Rclone, imposta Rclone in modo che il bucket esista e inizi a spostarvi i dati. -
--oos-upload-cutoff
: i file di dimensioni superiori a questa dimensione verranno caricati in chunk, l'impostazione predefinita è 200MiB. -
--oos-chunk-size
: quando si caricano file di dimensioni maggiori dell'impostazione limite di caricamento o file di dimensioni sconosciute, tali file verranno caricati come caricamenti multiparte utilizzando questa dimensione chunk. Rclone aumenterà automaticamente la dimensione del chunk quando si carica un file di grandi dimensioni noto per rimanere al di sotto del limite di 10.000 chunk. L'impostazione predefinita è 5MiB. -
--oos-upload-concurrency <int>
: viene utilizzato per i caricamenti multiparte e rappresenta il numero di chunk caricati contemporaneamente. Se stai caricando piccoli numeri di file di grandi dimensioni su collegamenti ad alta velocità e questi caricamenti non utilizzano completamente la tua larghezza di banda, quindi aumentare questo potrebbe aiutare ad accelerare i trasferimenti. Il valore predefinito è 8, se questo non utilizza la larghezza di banda aumenta lentamente per migliorare l'utilizzo della larghezza di banda.Nota: i caricamenti multiparte utilizzeranno memoria aggiuntiva quando si utilizzano i parametri:
--transfers <int>
,--oos-upload-concurrency <int>
e--oos-chunk-size
. I caricamenti di singole parti non utilizzano memoria aggiuntiva. Quando si impostano questi parametri, considera la latenza di rete, maggiore è la latenza, maggiore è la probabilità che i caricamenti di singole parti siano più veloci.
-
-
Esempio di file di configurazione Rclone per 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
-
Formato comando Rclone di base
rclone <flags> <command> <source> <dest>
-
Esempio di esecuzione della copia Rclone da un'origine file system locale o dall'origine dello storage di file OCI alla destinazione dello storage degli oggetti OCI.
rclone copy /src/path oci:bucket-name
-
Esempio di esecuzione della copia Rclone dall'origine dello storage degli oggetti OCI a un file system locale o a una destinazione dello storage di file OCI.
rclone copy oci:bucket-name /src/path
-
Esempio di esecuzione della copia Rclone da un'origine S3 a una destinazione di storage degli oggetti OCI.
rclone copy s3:s3-bucket-name oci:bucket-name
Nota: quando si esegue la migrazione da AWS e si utilizza la cifratura lato server con KMS, assicurarsi che rclone sia configurato con
server_side_encryption = aws:kms
per evitare errori di checksum. Per ulteriori informazioni, vedere Rclone S3 KMS e Rclone S3 configuration
Nota: il formato del comando di sincronizzazione sarà sostanzialmente lo stesso, sostituendo semplicemente la copia con la sincronizzazione.
-
Esempi di utilizzo Rclone
-
Esempio 1: utilizzare Rclone per eseguire la migrazione di un numero limitato di file di piccole dimensioni copiati in una destinazione che contiene già dati con un conteggio elevato di file o oggetti.
rclone --progress --transfers 16 --oos-no-check-bucket --checkers 8 --no-traverse copy <source> <dest>
-
Esempio 2: clonare con meno file di grandi dimensioni con caricamenti multiparte.
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>
Nota: questi sono i punti di partenza per le opzioni
--transfers
,--oos-chunk-size
,--oos-upload-concurrency
e--checkers
. Sarà necessario modificarli in base alla dimensione file/oggetto, alla memoria e alle risorse disponibili nei sistemi in uso per la migrazione dei dati. Aggiustarli fino a quando non si ottiene un uso sufficiente della larghezza di banda per migrare i dati in modo ottimale. Se il sistema è molto piccolo, potrebbe essere necessario regolare questi numeri per conservare le risorse. -
Esempio: 3 utilizzare Rclone per l'esecuzione dello scale-out su 3 computer BM con NIC da 100 Gbps, dimensioni miste del data set con caricamenti multiparte con petabyte di dati, bucket non vuoto, servizio di storage di file OCI nel servizio di storage degli oggetti 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
Flag aggiuntivi utilizzati:
--stats-one-line
: consente di adattare le statistiche a una riga.--max-stats-group
: numero massimo di gruppi di statistiche da conservare in memoria. Il numero massimo di gruppi meno recenti viene eliminato (l'impostazione predefinita è 1000).--oos-attempt-resume-upload
: tentativo di riprendere il caricamento multiparte avviato in precedenza per l'oggetto.--oos-leave-parts-on-error
: evita di chiamare il caricamento interrotto in caso di errore, lasciando tutte le parti caricate correttamente per il recupero manuale.
Migrazione di file di grandi dimensioni mediante Rclone
Rclone si sincronizza su base directory per directory. Se si stanno migrando decine di milioni di file / oggetti, è importante assicurarsi che le directory / prefissi siano divisi in circa 10.000 file / oggetti o inferiore per directory. Questo per evitare che Rclone utilizzi troppa memoria e poi si blocchi. Molti clienti con un conteggio elevato (100 milioni o più) di file di piccole dimensioni spesso si imbattono in questo problema. Se tutti i file si trovano in un'unica directory, dividerli per primi.
-
Eseguire il comando seguente per ottenere un elenco di file nell'origine.
rclone lsf --files-only -R src:bucket | sort > src
-
Suddividere il file in blocchi di 1.000-10.000 righe, utilizzando il frazionamento. Il seguente comando split dividerà i file in blocchi di 1.000 e li inserirà in file denominati
src_##
, ad esempiosrc_00
.split -l 1000 --numeric-suffixes src src_
-
Distribuisci i file in più istanze VM per eseguire lo scale-out del trasferimento dati. Ogni comando Rclone dovrebbe essere simile al seguente:
rclone --progress --oos-no-check-bucket --no-traverse --transfers 500 copy remote1:source-bucket remote2:dest-bucket --files-from src_00
In alternativa, è possibile utilizzare un ciclo semplice per iterare gli elenchi di file generati dal comando split. Durante i test con circa 270.000 file in un singolo bucket, abbiamo visto i tempi di copia migliorare 40x, il chilometraggio può variare.
Nota: la suddivisione dei file per struttura di directory o l'utilizzo dell'utility di divisione è un modo importante per ottimizzare i trasferimenti.
Utilizza Rclone, OKE e fpart insieme per spostare i dati dai file system allo storage degli oggetti OCI
È possibile utilizzare più pod Kubernetes per eseguire lo scale-out del trasferimento dati tra i file system e lo storage degli oggetti. La parallelizzazione accelera il trasferimento dei dati ai sistemi di storage con latenza relativamente elevata e throughput elevato. L'approccio che combina le strutture di directory Rclone, OKE e fpart delle partizioni in più chunk ed esegue il trasferimento dei dati in parallelo sui container sullo stesso nodo di calcolo o su più nodi. L'esecuzione su più nodi aggrega il throughput di rete e la potenza di calcolo di ciascun nodo.
-
Filesystem partitioner (Fpart) è uno strumento che può essere utilizzato per partizionare la struttura di directory. Può chiamare strumenti come rsync, tar e Rclone con una partizione di file system da eseguire in parallelo e indipendente l'uno dall'altro. Useremo fpart con Rclone.
-
fpsync è uno script wrapper che utilizza fpart per eseguire in parallelo gli strumenti di trasferimento (rsync, Rclone). Il comando
fpsync
viene eseguito da un host operatore fpsync. Lo strumento fpsync dispone anche di opzioni per utilizzare nodi di lavoro separati. L'fpsync modificato supporta Rclone e anche i pod Kubernetes. -
kubectl gestisce i job Kubernetes.
Seguire i passi indicati:
-
Identificare un host che sarà l'host dell'operatore fpsync che ha accesso ai dati di origine della migrazione e Rclone è installato.
-
Eseguire il comando riportato di seguito per installare 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
-
Creare un criterio IAM OCI per l'host operatore fpsync per gestire il cluster OKE.
A questo scopo è possibile utilizzare i seguenti criteri. È possibile configurare un'autorizzazione più granulare per ottenere il requisito minimo per controllare i pod.
Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
-
Impostare il file
kubeconfig
per accedere al cluster OKE. Per ulteriori informazioni, vedere Impostazione dell'accesso locale ai cluster. -
Installare e applicare patch a fpart e fpsync. La patch fpsync è necessaria per eseguire Rclone o rsync in parallelo per eseguire lo scale out del trasferimento dati. L'fpsync fornito con il pacchetto fpart non supporta i pod Rclone o Kubernetes, è necessaria una patch per supportare questi strumenti.
Eseguire il comando riportato di seguito per eseguire l'installazione su 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
-
Creare l'immagine del contenitore.
La specifica di build dell'immagine docker disponibile in
rclone-rsync-image
può essere utilizzata per creare l'immagine del contenitore. Una volta creata, l'immagine deve essere caricata in un registro a cui è possibile accedere dal 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>
Una copia dell'immagine viene conservata in
fra.ocir.io/fsssolutions/rclone-rsync:latest.
La directory di esempio contiene alcuni file di output di esempio. -
Eseguire k-fpsync. L'fpsync con patch (k-fpsync) può partizionare il file system di origine ed eseguire lo scale-out del trasferimento utilizzando più pod Kubernetes. La regola anti-affinità pod Kubernetes è configurata per preferire i nodi che non dispongono di pod di lavoro di trasferimento in esecuzione. Ciò consente di utilizzare la larghezza di banda sui nodi in modo efficace per ottimizzare le prestazioni. Per ulteriori informazioni, vedere Assegnazione dei pod ai nodi.
Esegui il MOUNT del file system di origine sull'host dell'operatore fpart e crea una directory condivisa a cui accederanno tutti i pod. Questa è la directory in cui vengono conservati tutti i file di log e i file di partizione.
Il comando riportato di seguito trasferisce i dati dal file system
/data/src
al bucket di storage degli oggetti OCI rclone-2. Avvierà 2 pod alla volta per trasferire la partizione del file system creata da 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
Nota: i log per l'esecuzione vengono conservati nella directory
run-ID
, nell'esempio seguente sono in/data/fpsync/{Run-Id}/log directory
. Gli output di esempio vengono forniti nella directory di esempio.
(Opzionale) Ambienti di test
I suggerimenti vengono forniti in base ai test e alle interazioni con i clienti.
Nota: vengono eseguite dallo script di copia di massa, i risultati
os sync
es5cmd
vengono inclusi per fornire ulteriori informazioni sulle prestazioni. Informazioni sull'uso dello script di copia in blocco sono disponibili qui: Usa le utility Python di Oracle Cloud Infrastructure Object Storage per le operazioni in blocco. Per ulteriori informazioni sull'uso dios sync
es5cmd
, vedere l'Esercitazione 3: Spostare i dati nei servizi di storage cloud OCI utilizzando OCI Object Storage Sync e S5cmd.
Ambiente di test 1:
1 istanza VM VM.Standard.E4.Flex
, 1 OCPU, larghezza di banda di rete 1Gbps, 16 GB di memoria. Per simulare la migrazione da on premise a OCI, i dati copiati da PHX NFS a IAD.
Data set
-
Data set 1:
Dimensione totale Conteggio file Intervallo dimensioni file 3TB 3 1TB Metodo A - Da Periodo Comando Flag sincronizzazione os NFS/File PHX per Object IAD 123m17.102s ND --parallel-operations-count 100
s5cmd NFS/File PHX per Object IAD 239m20.625s copy run commands.txt
, esecuzione predefinita--numworkers 256
rclone NFS/File PHX per Object IAD 178m27.101s copy --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
Nota: i nostri test hanno mostrato che
os sync
è il più veloce in esecuzione per questo set di dati. -
Data set 2:
Dimensione totale Conteggio file Intervallo dimensioni file 9.787GB 20.000 1 MB Metodo A - Da Periodo Comando Flag s5cmd NFS/File PHX per Object IAD 1m12.746s copy esecuzione predefinita --numworkers 256
sincronizzazione os NFS/File PHX per Object IAD 2m48.742s ND --parallel-operations-count 1000
rclone NFS/File PHX per Object IAD 1m52.886s copy --transfers=500 --oos-no-check-bucket --no-check-dest
Nota: i nostri test hanno dimostrato che
s5cmd
ha ottenuto le prestazioni migliori per questo set di dati.
Ambiente di test 2:
Istanze VM: per ogni test sono state utilizzate 2 istanze VM, è stata utilizzata una VM.Standard.E4.Flex
con 24 OCPU, larghezza di banda di rete 24Gbps e 384 GB di memoria. Oracle Linux 8 è stato utilizzato per il test di Linux.
Set di dati utilizzati nel test: 14 directory principali con il conteggio e la dimensione dei file riportati di seguito.
Directory set di dati | Dimensione | Conteggio file | Dimensione di ogni file |
---|---|---|---|
Directory 1 | 107.658 GiB | 110.242 | 1 MiB |
Directory 2 | 1.687 GiB | 110.569 | 15 MiB |
Directory 3 | 222 GiB | 111 | 2 GiB |
Directory 4 | 1.265 TiB | 1.295 | 1 GiB |
Directory 5 | 26.359 GiB | 1.687 | 16 MiB |
Directory 6 | 105.281 MiB | 26.952 | 4 KiB |
Directory 7 | 29.697 MiB | 30.410 | 1 KiB |
Directory 8 | 83.124 GiB | 340.488 | 256 KiB |
Directory 9 | 21.662 GiB | 354.909 | 64 KiB |
Directory 10 | 142.629 GiB | 36.514 | 4 MiB |
Directory 11 | 452.328 MiB | 57.898 | 8 MiB |
Directory 12 | 144 GiB | 72 | 2GiB |
Directory 13 | 208.500 GiB | 834 | 256 MiB |
Directory 14 | 54.688 GiB | 875 | 64 MiB |
Nota:
- Le 14 directory sono state divise tra le 2 istanze VM.
- Ogni VM ha eseguito 7 comandi/processi, 1 per ogni directory se non diversamente indicato.
Metodo | A - Da | Periodo | Comando | Flag/Note |
---|---|---|---|---|
s5cmd | NFS/File PHX per Object IAD | 54m41.814s | copy | --numworkers 74 |
sincronizzazione os | NFS/File PHX per Object IAD | 65m43.200s | ND | --parallel-operations-count 50 |
rclone | NFS/File PHX per Object IAD | 111m59.704s | copy | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50 |
rclone | Da PHX oggetto a IAD oggetto | 28m55.663s | copy | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400 , stesso comando eseguito su 2 VM per una concorrenza di 800 trasferimenti |
Script di copia in blocco python | Da PHX oggetto a IAD oggetto | 25m43.715s | Predefinita | 1 VM, 50 worker, 100.000 file in coda alla volta |
I comandi s5cmd
e os sync
superano il file system/NFS nello storage degli oggetti. Lo script di copia di massa esegue solo trasferimenti da bucket a bucket e non è stato sottoposto a test per la migrazione NFS.
Solo rclone
e lo script di copia di massa python sono in grado di eseguire trasferimenti da bucket a bucket tra aree in modo che gli altri strumenti non siano stati sottoposti a test. Le prestazioni dello script di copia di massa python risultano migliori nei dati tra bucket e bucket tra più aree, ma sono compatibili solo con OCI Object Storage, mentre rclone
supporta molti backend e provider cloud.
Sono state eseguite piccole esecuzioni di test utilizzando rclone
per trasferire i dati da Microsoft Azure Blob Storage, Amazon Simple Storage Service (Amazon S3) e Google Cloud Platform Cloud Storage a OCI Object Storage per verificare il funzionamento degli strumenti per questi tipi di trasferimenti. Per ulteriori informazioni, vedere Sposta i dati nello storage degli oggetti nel cloud utilizzando Rclone.
Ambiente di test 3:
Istanze VM: per ogni test sono state utilizzate 1-2 istanze VM. Abbiamo utilizzato una VM.Standard.E4.Flex
con 24 OCPU, larghezza di banda di rete 24Gbps e 384 GB di memoria. Oracle Linux 8 è stato utilizzato per il test di Linux. Tutti i test sono stati bucket-to-bucket.
Dimensione totale | Conteggio file | Intervallo dimensioni file |
---|---|---|
7.74 TiB | 1.000.000 | 30 MiB |
Metodo | A - Da | Periodo | Comando | Flag | Note | |
---|---|---|---|---|---|---|
rclone | IAD da oggetto a oggetto -> IAD | 18h39m11.4s | copy | --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi |
1 VM, molto lenta a causa dell'elevato numero di file e dell'elenco delle chiamate all'origine | |
rclone | IAD da oggetto a oggetto -> IAD | 55m8.431s | copy | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 VM, 500 trasferimenti per VM, l'elenco di oggetti/file ha alimentato 1.000 file alla volta, impedisce l'inserimento nell'elenco di origine e destinazione e migliora le prestazioni | |
Script di copia in blocco python | IAD da oggetto a oggetto -> IAD | 28m21.013s | ND | Predefinita | 1 VM, 50 worker, 100.000 file in coda alla volta | |
Script di copia in blocco python | IAD da oggetto a oggetto -> IAD | ND | ND | Predefinita | 2 VM, 50 lavoratori per VM, 100.000 file in coda alla volta. Ricevuti 429 errori, script bloccato e impossibile completare | |
s5cmd | IAD da oggetto a oggetto -> IAD | 14m10.864s | copy | Impostazioni predefinite (256 lavoratori) | 1 VM | ND |
s5cmd | IAD da oggetto a oggetto -> IAD | 7m50.013s | copy | Impostazioni predefinite | 2 VM, 256 lavoratori per ogni VM | Ran in abuot metà del tempo come 1 VM |
s5cmd | IAD da oggetto a oggetto -> IAD | 3m23.382s | copy | --numworkers 1000 |
1 VM, 1000 lavoratori | In più test abbiamo rilevato che questa era l'esecuzione ottimale per questo set di dati con il s5cmd |
rclone | Object-to-Object IAD -> PHX | 184m36.536s | copy | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 VM, 500 trasferimenti per VM, elenco di oggetti/file con 1.000 file alla volta | |
Script di copia in blocco python | Object-to-Object IAD -> PHX | 35m31.633s | ND | Predefinita | 1VM, 50 lavoratori, 100.000 file in coda alla volta |
Il comando s5cmd
è stato eseguito in modo coerente per il numero di file di grandi dimensioni e per i file di piccole dimensioni. s5cmd
è limitato perché può eseguire copie solo da bucket a bucket all'interno della stessa tenancy e della stessa area.
Si notano miglioramenti elevati a rclone
una volta che i file vengono inseriti nel comando e dallo scale-out a un'altra VM. Rclone può funzionare più lentamente di altri strumenti, è il più versatile nelle varie piattaforme che supporta e tipi di migrazioni che può eseguire.
L'API Python di copia di massa dello storage degli oggetti OCI può utilizzare solo l'API CopyObject nativa OCI e può ottenere fino a un massimo di 50 lavoratori prima di essere rallentata.
I test per IAD a PHX sono stati eseguiti solo su ciò che ha funzionato meglio in IAD a IAD e i test problematici non sono stati rieseguiti. s5cmd
non è stato eseguito per IAD in PHX perché può eseguire solo copie da bucket a bucket all'interno della stessa area.
Passi successivi
Passare alle esercitazioni correlate pertinenti alle esigenze di migrazione. Per spostare i dati nei servizi di storage cloud OCI:
-
Utilizzando OCI Object Storage Sync e S5cmd, consulta l'Esercitazione 3: Sposta i dati nei servizi di storage cloud OCI utilizzando OCI Object Storage Sync e S5cmd.
-
Utilizzando Fpsync e Rsync per le migrazioni dei dati del file system, vedere l'Esercitazione 4: Spostare i dati nei servizi di storage cloud OCI utilizzando Fpsync e Rsync per le migrazioni dei dati del file system.
Collegamenti correlati
-
Elementi fondamentali per la migrazione dei dati nello storage cloud OCI
-
Sposta i dati nello storage degli oggetti nel cloud utilizzando Rclone
-
Trasferimento dati tra file system e storage degli oggetti OCI utilizzando OKE
-
Annuncio del supporto backend del provider di storage degli oggetti OCI nativo in rclone
Conferme
- Autori - Melinda Centeno (Senior Principal Product Manager, OCI Object Storage), Vinoth Krishnamurthy (Principal Member of Technical Staff, OCI File Storage), Aboo Valappil (Consulting Member of Technical Staff, OCI File and Block Storage)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Move Data into OCI Cloud Storage Services using Rclone
G25569-02
Copyright ©2025, Oracle and/or its affiliates.