Nota

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.

Prerequisiti

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:

Comandi e flag Rclone:

Esempi di utilizzo Rclone

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.

  1. Eseguire il comando seguente per ottenere un elenco di file nell'origine.

    rclone lsf --files-only -R src:bucket | sort > src
    
  2. 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 esempio src_00.

    split -l 1000 --numeric-suffixes src src_
    
  3. 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.

Seguire i passi indicati:

  1. Identificare un host che sarà l'host dell'operatore fpsync che ha accesso ai dati di origine della migrazione e Rclone è installato.

  2. 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
    
  3. 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
    
  4. Impostare il file kubeconfig per accedere al cluster OKE. Per ulteriori informazioni, vedere Impostazione dell'accesso locale ai cluster.

  5. 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
    
  6. 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.

  7. 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 e s5cmd 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 di os sync e s5cmd, 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

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:

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:

Conferme

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.