Hinweis:

Daten mit Rclone in OCI Cloud Storage Services verschieben

Einführung

Dieses Tutorial 2 einer vier Tutorialreihe zeigt Ihnen verschiedene Möglichkeiten, Daten in Oracle Cloud Infrastructure-(OCI-)Cloud-Speicherservices zu migrieren. Die Serie ist so eingerichtet, dass Sie das Tutorial 1: Migrationstools zum Verschieben von Daten in OCI Cloud Storage Services verwenden lesen können, um ein umfassendes Verständnis der verschiedenen Tools zu erhalten, und dann mit den zugehörigen Tutorials oder Dokumenten fortfahren können, die für Ihre Migrationsanforderungen relevant sind. Dieses Tutorial konzentriert sich auf die Verwendung von Rclone zur Migration von Daten in OCI-Cloud-Speicherservices.

OCI bietet Kunden leistungsstarkes Computing und kostengünstige Cloud-Speicheroptionen. Über On-Demand-Lokal-, Objekt-, Datei-, Block- und Archivspeicher erfüllt Oracle die wichtigsten Anforderungen und Anwendungsfälle für Speicher-Workloads.

OCI-Cloud-Speicherservices bieten schnelle, sichere und dauerhafte Cloud-Speicheroptionen für alle Unternehmensanforderungen. Angefangen bei den leistungsstarken Optionen wie OCI File Storage mit Lustre und OCI Block Volumes-Service, vollständig verwalteten Dateisystemen im Exabyte-Bereich vom OCI File Storage-Service mit leistungsstarken Mountzielen bis hin zu extrem langlebigem und skalierbarem OCI Object Storage. Unsere Lösungen können Ihre Anforderungen erfüllen, von leistungsintensiven Anwendungen wie KI/ML-Workloads bis hin zu Data Lakes im Exabyte-Bereich.

Rclone ist ein Open-Source-Befehlszeilenutility zur Migration von Daten in die Cloud oder zwischen Cloud-Speicheranbietern. Rclone kann zur einmaligen Migration sowie zur regelmäßigen Synchronisierung zwischen Quell- und Zielspeicher verwendet werden. Rclone kann Daten in Objektspeicher, Dateispeicher, gemountete Laufwerke und zwischen 70 unterstützten Speichertypen migrieren. OCI Object Storage wird nativ als Rclone-Backend-Provider unterstützt. Rclone-Prozesse können vertikal und horizontal skaliert werden, um die Übertragungsperformance mit Parameteroptionen zu erhöhen.

Bestimmen Sie die Datenmenge, die migriert werden muss, und die Ausfallzeit, die für den Übergang zur neuen OCI-Speicherplattform verfügbar ist. Batchmigrationen sind eine gute Wahl, um die Migration in verwaltbare Inkremente aufzuteilen. Mit Batchmigrationen können Sie Ausfallzeiten für bestimmte Anwendungen über verschiedene Fenster hinweg planen. Einige Kunden haben die Flexibilität, eine einmalige Migration über ein geplantes Wartungsfenster über einen Zeitraum von 2 bis 4 Tagen durchzuführen. Mit OCI FastConnect kann eine dedizierte, private Verbindung zwischen OCI und Ihrer Umgebung mit Portgeschwindigkeiten von 1G bis 400G erstellt werden, um den Datenübertragungsprozess zu beschleunigen. OCI FastConnect kann in Partnerlösungen wie Megaport und ConsoleConnect integriert werden, um eine private Verbindung zu Ihrem Data Center oder eine Cloud-to-Cloud-Verbindung zu erstellen und Daten direkter von einem anderen Cloud-Anbieter in den OCI-Cloud-Speicherservice zu verschieben. Weitere Informationen finden Sie unter Integration von FastConnect mit Megaport Cloud Router.

Zielgruppe

DevOps Ingenieure, Entwickler, OCI-Cloud-Speicheradministratoren und -benutzer, IT-Manager, OCI-Poweruser und Anwendungsadministratoren.

Zielsetzung

Erfahren Sie, wie Sie mit Rclone Daten in OCI-Cloud-Speicherservices kopieren und synchronisieren.

Voraussetzungen

Übersicht über Rclone und Grundbegriffe

Rclone ist ein hilfreiches Migrationstool, da es viele Protokolle und Cloud-Provider unterstützt und die Konfiguration vereinfacht. Es ist ein gutes Tool für die allgemeine Migration für alle Arten von Datensätzen. Rclone eignet sich besonders gut für Datasets, die in Batches aufgeteilt werden können, um Knoten für eine schnellere Datenübertragung zu skalieren.

Mit Rclone können Sie Folgendes migrieren:

Rclone-Befehle und -Flags:

Beispiele für die Verwendung von Rclone

Große Dateien mit Rclone migrieren

Rclone synchronisiert auf Directory-by-Directory-Basis. Wenn Sie Dutzende Millionen von Dateien/Objekten migrieren, ist es wichtig, sicherzustellen, dass die Verzeichnisse/Präfixe in etwa 10.000 Dateien/Objekte oder weniger pro Verzeichnis unterteilt sind. Dies soll verhindern, dass Rclone zu viel Speicher verbraucht und dann abstürzt. Viele Kunden mit einer hohen Anzahl (100 Millionen oder mehr) kleiner Dateien stoßen oft auf dieses Problem. Wenn sich alle Dateien in einem einzigen Verzeichnis befinden, teilen Sie sie zuerst auf.

  1. Führen Sie den folgenden Befehl aus, um eine Liste der Dateien in der Quelle abzurufen.

    rclone lsf --files-only -R src:bucket | sort > src
    
  2. Teilen Sie die Datei mithilfe von Split in Blöcke von 1.000 bis 10.000 Zeilen auf. Der folgende Aufteilungsbefehl teilt die Dateien in Blöcke von 1.000 auf und fügt sie dann in Dateien namens src_## wie src_00 ein.

    split -l 1000 --numeric-suffixes src src_
    
  3. Verteilen Sie die Dateien auf mehrere VM-Instanzen, um die Datenübertragung horizontal zu skalieren. Jeder Rclone-Befehl sollte wie folgt aussehen:

    rclone --progress --oos-no-check-bucket --no-traverse --transfers 500 copy remote1:source-bucket remote2:dest-bucket --files-from src_00
    

    Alternativ kann eine einfache Schleife verwendet werden, um durch die Dateilisten zu iterieren, die mit dem Befehl split generiert wurden. Während des Tests mit ~270.000 Dateien in einem einzigen Bucket haben wir gesehen, wie sich die Kopierzeiten 40x verbesserten, Ihre Laufleistung kann variieren.

    Hinweis: Das Aufteilen der Dateien nach Verzeichnisstruktur oder das Aufteilungsutility ist eine wichtige Möglichkeit zur Optimierung von Übertragungen.

Rclone, OKE und fpart gemeinsam verwenden, um Daten aus Dateisystemen in OCI Object Storage zu verschieben

Mit mehreren Kubernetes-Pods kann die Datenübertragung zwischen Dateisystemen und Objektspeicher horizontal skaliert werden. Die Parallelisierung beschleunigt Datenübertragungen an Speichersysteme, die eine relativ hohe Latenz aufweisen und einen hohen Durchsatz aufweisen. Der Ansatz, bei dem Rclone-, OKE- und fpart-Partitionsverzeichnisstrukturen in mehreren Chunks kombiniert werden, führt die Datenübertragung parallel auf Containern auf demselben Compute Node oder über mehrere Knoten hinweg aus. Die Ausführung über mehrere Knoten aggregiert den Netzwerkdurchsatz und die Rechenleistung jedes Knotens.

Führen Sie die Schritte aus:

  1. Identifizieren Sie einen Host, der Ihr fpsync-Operatorhost ist, der Zugriff auf die Migrationsquelldaten hat und Rclone installiert ist.

  2. Führen Sie folgenden Befehl aus, um kubectl zu installieren.

    # 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. Erstellen Sie eine OCI-IAM-Policy für den fpsync-Operatorhost zur Verwaltung des OKE-Clusters.

    Zu diesem Zweck kann die folgende Richtlinie verwendet werden. Eine granularere Berechtigung kann konfiguriert werden, um die Mindestanforderung zur Kontrolle der Pods zu erfüllen.

    Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
    
  4. Richten Sie die Datei kubeconfig ein, um Zugriff auf das OKE-Cluster zu erhalten. Weitere Informationen finden Sie unter Einrichten des lokalen Zugriffs auf Cluster.

  5. Installieren und patchen Sie fpart und fpsync. Der fpsync-Patch ist erforderlich, um Rclone oder rsync parallel auszuführen, um die Datenübertragung horizontal zu skalieren. Das mit dem fpart-Package ausgelieferte fpsync unterstützt keine Rclone- oder Kubernetes-Pods. Zur Unterstützung dieser Tools ist ein Patch erforderlich.

    Führen Sie folgenden Befehl aus, um die Installation auf Ubuntu durchzuführen.

    # 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. Erstellen Sie das Containerimage.

    Mit der in rclone-rsync-image verfügbaren Docker-Image-Build-Spezifikation können Sie das Containerimage erstellen. Nachdem das Image erstellt wurde, muss es in eine Registry hochgeladen werden, auf die über das OKE-Cluster zugegriffen werden kann.

    # 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>
    

    Eine Kopie des Images wird in fra.ocir.io/fsssolutions/rclone-rsync:latest. verwaltet Das Beispielverzeichnis enthält einige Beispiele für Ausgabedateien.

  7. Führen Sie k-fpsync aus. Das gepatchte fpsync (k-fpsync) kann das Quelldateisystem partitionieren und die Übertragung mit mehreren Kubernetes-Pods horizontal skalieren. Die Anti-Affinitätsregel des Kubernetes-Pods ist so konfiguriert, dass Knoten bevorzugt werden, auf denen keine ausgeführten Transfer-Worker-Pods ausgeführt werden. Dies hilft, die Bandbreite auf den Knoten effektiv zu nutzen, um die Performance zu optimieren. Weitere Informationen finden Sie unter Pods Knoten zuweisen.

    Mounten Sie das Quelldateisystem auf dem fpart-Operatorhost, und erstellen Sie ein gemeinsam verwendetes Verzeichnis, auf das alle Pods zugreifen. Dies ist das Verzeichnis, in dem alle Log- und Partitionsdateien gespeichert werden.

    Der folgende Befehl überträgt Daten aus dem Dateisystem /data/src in den OCI Object Storage-Bucket rclone-2. Es startet 2 Pods gleichzeitig, um die von fpart erstellte Dateisystempartition zu übertragen.

    # 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
    

    Hinweis: Die Logs für die Ausführung werden im Verzeichnis run-ID gespeichert. Im folgenden Beispiel befinden sie sich in /data/fpsync/{Run-Id}/log directory. Die Beispielausgaben werden im Beispielverzeichnis bereitgestellt.

(Optional) Testumgebungen

Empfehlungen basieren auf Tests und Kundeninteraktionen.

Hinweis: Wird vom Bulkkopierskript ausgeführt. Die Ergebnisse os sync und s5cmd sind enthalten, um weitere Informationen zur Performance zu erhalten. Hier finden Sie Informationen zur Verwendung des Bulkkopierskripts: Oracle Cloud Infrastructure Object Storage-Python-Utilitys für Bulkvorgänge verwenden. Weitere Informationen zur Verwendung von os sync und s5cmd finden Sie in Tutorial 3: Daten mit OCI Object Storage Sync und S5cmd in OCI Cloud Storage Services verschieben.

Testumgebung 1:

1 VM-Instanz VM.Standard.E4.Flex, 1 OCPU, 1Gbps Netzwerkbandbreite, 16 GB Arbeitsspeicher. Um die Migration von On Premise zu OCI zu simulieren, wurden Daten von PHX NFS zu IAD kopiert.

Datasets

Testumgebung 2:

VM-Instanzen: Für jeden Test wurden 2 VM-Instanzen verwendet. Wir haben eine VM.Standard.E4.Flex mit 24 OCPU, 24Gbps Netzwerkbandbreite und 384 GB Arbeitsspeicher verwendet. Oracle Linux 8 wurde für Linux-Tests verwendet.

Datasets, die beim Testen verwendet werden: 14 Hauptverzeichnisse mit der folgenden Anzahl und Größe von Dateien.

Dataset-Verzeichnis Schriftgrad Anzahl Dateien Größe jeder Datei
Verzeichnis 1 107.658 GiB 110.242 1 MiB
Verzeichnis 2 1.687 GiB 110.569 15 MiB
Verzeichnis 3 222 GiB 111 2 GiB
Verzeichnis 4 1.265 TiB 1.295 1 GiB
Verzeichnis 5 26.359 GiB 1.687 16 MiB
Verzeichnis 6 105.281 MiB 26.952 4 KiB
Verzeichnis 7 29.697 MiB 30.410 1 KiB
Verzeichnis 8 83.124 GiB 340.488 256 KiB
Verzeichnis 9 21.662 GiB 354.909 64 KiB
Verzeichnis 10 142.629 GiB 36.514 4 MiB
Verzeichnis 11 452.328 MiB 57.898 8 MiB
Verzeichnis 12 144 GiB 72 2GiB
Verzeichnis 13 208.500 GiB 834 256 MiB
Verzeichnis 14 54.688 GiB 875 64 MiB

Hinweis:

Methode An-Von Time Befehl Flags/Notizen
s5cmd NFS/File PHX zu Object IAD 54m41.814s Kopieren --numworkers 74
OS-Synchronisierung NFS/File PHX zu Object IAD 65m43.200s - --parallel-operations-count 50
Rclon NFS/File PHX zu Object IAD 111m59.704s Kopieren --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50
Rclon Objekt PHX zu Objekt IAD 28m55.663s Kopieren --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400: Derselbe Befehl wird über 2 VMs für einen gleichzeitigen Zugriff auf 800 Übertragungen ausgeführt
python-Bulkkopieskript Objekt PHX zu Objekt IAD 25m43.715s Standard 1 VM, 50 Worker, 100.000 Dateien gleichzeitig in der Warteschlange

Die Befehle s5cmd und os sync weisen einen guten Überblick über Dateisystem/NFS für den Objektspeicher auf. Das Bulk Copy-Skript führt nur Bucket-to-Bucket-Übertragungen durch und wurde nicht für die NFS-Migration getestet.

Nur rclone und das python-Bulk Copy-Skript können Bucket-to-Bucket-Übertragungen regionsübergreifend ausführen, sodass die anderen Tools nicht darauf getestet wurden. Das python-Massenkopieskript funktioniert besser bei den regionsübergreifenden Bucket-to-Bucket-Daten. Es ist jedoch nur mit OCI Object Storage kompatibel, während rclone viele Backends und Cloud-Provider unterstützt.

Kleine Testläufe wurden mit rclone durchgeführt, um Daten von Microsoft Azure Blob Storage, Amazon Simple Storage Service (Amazon S3) und Google Cloud Platform Cloud Storage an OCI Object Storage zu übertragen und zu überprüfen, ob die Tools für diese Übertragungstypen funktionieren. Weitere Informationen finden Sie unter Daten mit Rclone in Objektspeicher in der Cloud verschieben.

Testumgebung 3:

VM-Instanzen: Für jeden Test wurden 1-2 VM-Instanzen verwendet. Wir haben eine VM.Standard.E4.Flex mit 24 OCPU, 24Gbps Netzwerkbandbreite und 384 GB Arbeitsspeicher verwendet. Oracle Linux 8 wurde für Linux-Tests verwendet. Alle Tests waren Bucket-to-Bucket.

Gesamte Größe Anzahl Dateien Dateigrößenbereich
7.74 TiB 1.000.000 30 MiB
Methode An-Von Time Befehl Flags Hinweise:  
Rclon Objekt-zu-Objekt-IAD -> IAD 18h39m11.4s Kopieren --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi 1 VM, sehr langsam aufgrund der hohen Anzahl von Dateien und Auflistung von Aufrufen an die Quelle  
Rclon Objekt-zu-Objekt-IAD -> IAD 55m8.431s Kopieren --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> 2 VMs, 500 Transfers pro VM, Objekt-/Dateiliste mit jeweils 1.000 Dateien, verhindert das Auflisten auf Quelle und Ziel und verbessert die Performance  
python-Bulkkopieskript Objekt-zu-Objekt-IAD -> IAD 28m21.013s - Standard 1 VM, 50 Worker, 100.000 Dateien gleichzeitig in der Warteschlange  
python-Bulkkopieskript Objekt-zu-Objekt-IAD -> IAD - - Standard 2 VMs, 50 Worker pro VM, 100.000 Dateien gleichzeitig in der Queue. 429 Fehler empfangen, Skript hängt und konnte nicht abgeschlossen werden  
s5cmd Objekt-zu-Objekt-IAD -> IAD 14m10.864s Kopieren Standardwerte (256 Mitarbeiter) 1 VM -
s5cmd Objekt-zu-Objekt-IAD -> IAD 7m50.013s Kopieren Standardwerte 2 VMs, 256 Worker pro VM Ran in Abuot die Hälfte der Zeit als 1 VM
s5cmd Objekt-zu-Objekt-IAD -> IAD 3m23.382s Kopieren --numworkers 1000 1 VM, 1000 Mitarbeiter In mehreren Tests haben wir festgestellt, dass dies die optimale Ausführung für dieses Dataset mit s5cmd war
Rclon Objekt-zu-Objekt-IAD -> PHX 184m36.536s Kopieren --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> 2 VMs, 500 Transfers pro VM, Objekt-/Dateiliste mit jeweils 1.000 Dateien  
python-Bulkkopieskript Objekt-zu-Objekt-IAD -> PHX 35m31.633s - Standard 1VM, 50 Mitarbeiter, 100.000 Dateien gleichzeitig in der Warteschlange  

Der Befehl s5cmd wurde konsistent am besten für die Anzahl großer und kleiner Dateien ausgeführt. Die s5cmd ist begrenzt, da sie nur Bucket-to-Bucket-Kopien innerhalb desselben Mandanten und derselben Region ausführen kann.

Beachten Sie hohe Verbesserungen an rclone, sobald Dateien an den Befehl und von der horizontalen Skalierung auf eine andere VM übertragen werden. Rclone läuft möglicherweise langsamer als andere Tools. Es ist die vielseitigste Plattform, die es unterstützt, und Arten von Migrationen, die es ausführen kann.

Die OCI Object Storage-Python-Massenkopier-API kann nur die OCI-native CopyObject-API verwenden und kann nur bis zu 50 Worker gleichzeitig aufrufen, bevor sie gedrosselt wird.

Tests für IAD zu PHX wurden nur an dem durchgeführt, was in IAD zu IAD am besten funktioniert hat, und problematische Tests wurden nicht erneut ausgeführt. Die s5cmd wurde nicht für IAD zu PHX ausgeführt, weil sie nur Bucket-to-Buckets-Kopien innerhalb derselben Region ausführen kann.

Nächste Schritte

Fahren Sie mit den zugehörigen Tutorials fort, die für Ihre Migrationsanforderungen relevant sind. So verschieben Sie Daten in OCI-Cloud-Speicherservices:

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.