Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
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.
-
Verwenden Sie Rclone für die Migration von Dateisystemdaten (lokal, NAS, Cloud gehostet) in OCI Object Storage.
-
Migrieren Sie Daten aus einem anderen Cloud-Objekt oder BLOB-Speicher in OCI Object Storage.
-
Mit Rclone auf der Oracle Cloud Infrastructure Kubernetes Engine (OKE) können Sie Daten von OCI File Storage in OCI Object Storage migrieren.
Voraussetzungen
-
Ein OCI-Account.
-
Virtual-Machine-(VM-)Instanz auf OCI zur Bereitstellung der Migrationstools oder eines Systems, auf dem Sie Migrationstools bereitstellen und verwenden können.
-
Die Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI) wird mit einer Arbeitskonfigurationsdatei in Ihrem Home-Verzeichnis in einem Unterverzeichnis namens
.oci
installiert. Weitere Informationen finden Sie unter Konfigurationsdatei einrichten. -
Zugriff auf einen OCI Object Storage-Bucket.
-
Benutzerberechtigungen in OCI zur Verwendung von OCI Object Storage, zur Verwaltung von Buckets und Objekten oder zur Verwaltung der Objektfamilie für mindestens 1 Bucket oder Compartment. Weitere Informationen finden Sie unter Common Policies und Policy Reference.
-
Benutzerberechtigung zum Erstellen, Exportieren und Mounten von OCI File Storage oder Zugriff auf ein OCI File Storage-Mountziel, das bereits auf einer VM gemountet ist, oder ein anderes NFS-Mount oder lokales Dateisystem zum Kopieren von Daten in und aus. Weitere Informationen finden Sie unter File Storage Policy verwalten.
-
Vertrautheit mit der Verwendung einer Terminal-/Shell-Schnittstelle unter Mac OS, Linux, Berkeley Software Distribution (BSD) oder Windows PowerShell, Eingabeaufforderung oder bash.
-
Vertrautheit mit der Installation von Software auf einem Linux-System und Erfahrung oder Verständnis von Kubernetes.
-
Grundlegende Kenntnisse über Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) und die Arbeit mit dynamischen Gruppen mit einem Ubuntu-Host in einer dynamischen Gruppe. Weitere Informationen finden Sie unter Dynamische Gruppen verwalten.
-
Unter Migrationsgrundlagen für das Verschieben von Daten in OCI Cloud Storage können Sie Rclone und andere Migrationstools installieren.
-
Informationen zu den Migrationstools, die wir verwenden können, finden Sie in Tutorial 1: Daten mit Migrationstools in OCI Cloud Storage Services verschieben.
Ü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:
-
Dateisystemdaten (OCI File Storage, OCI Block Storage, OCI File Storage mit Lustre, On-Premise-Dateisystem und On-Premise-NFS) zu anderen Dateisystemspeichertypen und zu/von Objektspeicher (einschließlich OCI Object Storage).
-
Objektspeicher von unterstützten Cloud-Providern zu und von OCI Object Storage.
Rclone-Befehle und -Flags:
-
Rclone-Performance verstehen
Rclone ist ein gutes Allzwecktool zum Synchronisieren oder Kopieren von Dateien zwischen Dateisystemdaten, anderen Cloud-Providern und OCI-Cloud-Speicherservices. Die Leistung hängt davon ab, wie viel Sie vertikal und horizontal skalieren können. Wir empfehlen die Ausführung verschiedener Tests auf Ihren Migrationssystemen mit einem Beispielmigrationsset, um zu bestimmen, wann Sie die Schwellenwerte Ihrer Netzwerkbandbreite erreichen.
Beispiel: Der Quell-Bucket enthält 10 Ordner/Präfixe mit jeweils etwa 1 TB. Sie können die Migration auf 2 VMs mit großer CPU-/RAM-Kapazität aufteilen und mehrere Rclone-Kopierprozesse parallel von den beiden VMs auslösen. Abhängig von der Topologie jedes Ordners und der Rechenkapazität können die Rclone-Parameter angepasst werden, um die Übertragungsgeschwindigkeit zu verbessern.
Sie können mit der Ausführung der folgenden Befehle auf 2 VMs beginnen und dann die Anzahl der Übertragungen und Überprüfungen anpassen, bis die NIC auf jeder VM gesättigt ist.
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
-
Bei Systemen oder VM-Instanzen mit mehr CPU-, Speicher- und Netzwerkbandbreite können mehr Dateiübertragungen und Checker parallel ausgeführt werden. Die Skalierung auf Systeme mit mehr Ressourcen ermöglicht eine schnellere Performance.
-
Wenn Ihre Daten basierend auf der Struktur in verschiedene Batches aufgeteilt werden können, können Sie Rclone auch auf mehreren Systemen oder VM-Instanzen ausführen, um eine horizontale Skalierung vorzunehmen.
Wir empfehlen eine vertikale und horizontale Skalierung, um die Rclone-Performance zu verbessern. Unser Test umfasste 2 VMs zur parallelen Ausführung von Rclone-Übertragungen zur horizontalen Skalierung. Wenn Sie über einen größeren Datensatz verfügen, können Sie bis zu 4 Rechner verwenden oder sogar Bare Metal-(BM-)Instanzen verwenden.
-
-
Befehle zum Kopieren und Synchronisieren von Rclone
-
Der Rclone-Kopierbefehl kopiert Quelldateien oder Objekte in das Ziel. Es überspringt Dateien, die in Quelle und Ziel identisch sind, Tests nach Größe und Änderungszeit oder md5sum. Der Kopierbefehl löscht keine Dateien aus dem Ziel.
-
Der Rclone-Synchronisierungsbefehl synchronisiert die Quelle mit dem Ziel und überspringt identische Dateien. Das Ziel wird so geändert, dass es mit der Quelle übereinstimmt. Das bedeutet, dass Dateien, die nicht mit der Quelle übereinstimmen, gelöscht werden.
Hinweis: Seien Sie vorsichtig, wenn Sie die Synchronisierung verwenden, und verwenden Sie sie nur, wenn das Ziel genau wie die Quelle aussehen soll. Verwenden Sie den Kopierbefehl, wenn Sie nur neue Dateien in das Ziel kopieren möchten.
-
-
Rechte Rclone-Befehlszeilen-Flags verwenden
Es gibt mehrere Rclone-Befehlszeilen-Flags, die mit Rclone verwendet werden können, die sich auf die Geschwindigkeit der Datenmigration auswirken. Es ist wichtig zu verstehen, wie einige dieser Flags funktionieren, um den besten Datentransferdurchsatz zu erzielen.
-
--no-traverse
: Dies funktioniert nur mit dem Kopierbefehl, nicht über das Zieldateisystem. Dieser Indikator spart Zeit, da er keine Listen am Ziel durchführt, um zu bestimmen, welche Dateien kopiert werden sollen. Es prüft die Dateien nacheinander, um festzustellen, ob sie kopiert werden müssen. Eine nach der anderen mag langsam erscheinen, kann aber schneller sein, wenn Sie eine sehr kleine Anzahl von Dateien/Objekten haben, um sie in ein Ziel zu kopieren, in dem bereits viele Dateien vorhanden sind. -
--no-check-dest
: Dies funktioniert nur mit dem Kopierbefehl und prüft oder listet die Zieldateien nicht auf, um zu bestimmen, was kopiert oder verschoben werden muss, wodurch API-Aufrufe minimiert werden. Dateien werden immer übertragen. Verwenden Sie diesen Befehl, wenn Sie wissen, dass alles in der Quelle kopiert werden soll, unabhängig davon, was sich auf dem Ziel befindet oder wenn Sie wissen, dass das Ziel leer ist.Hinweis: Verwenden Sie
no-traverse
- oderno-check-dest
-Befehle. Viele Benutzer stellen beide Befehle in die Befehlszeile ein, was nicht erforderlich ist.- Wenn Ihr Ziel leer ist oder Sie möchten, dass alle Dateien unabhängig von der Quelle in das Ziel kopiert werden, verwenden Sie
no-check-dest
. - Wenn Sie einige sehr große Dateien haben, die migriert werden müssen, verwenden Sie
no-traverse
, mit dem jede Datei geprüft wird, ob sie am Ziel aktuell ist, bevor sie in die Quelle kopiert wird. Dies kann bei Listen-API-Aufrufen und der Menge der in das Ziel kopierten Daten gespeichert werden.
- Wenn Ihr Ziel leer ist oder Sie möchten, dass alle Dateien unabhängig von der Quelle in das Ziel kopiert werden, verwenden Sie
-
--ignore-checksum
: Dadurch wird die Übertragung wirklich beschleunigt, Rclone prüft jedoch während der Übertragung nicht auf Datenbeschädigung. -
--oos-disable-checksum
: Speichern Sie die Prüfsumme MD5 nicht mit Objektmetadaten. Rclone berechnet die MD5-Prüfsumme der Daten vor dem Hochladen und fügt sie den Objektmetadaten hinzu. Dies eignet sich hervorragend für die Datenintegrität, verursacht jedoch Verzögerungen, bevor große Dateien mit dem Hochladen beginnen. -
--transfers <int>
: Anzahl der parallel auszuführenden Dateiübertragungen (Standard 4). Skalieren Sie diese Zahl basierend auf der Größe des Systems, auf dem Sie rclone ausführen, können Sie Testläufe ausführen und die Ganzzahl erhöhen, bis Sie die maximale Übertragungsgeschwindigkeit für Ihren Host erreichen. Wir empfehlen wirklich, diese Zahl zu testen und zu erhöhen, bis Sie eine akzeptable Leistung erzielen. Wir haben gesehen, dass Kunden diese Zahl zwischen 64 und 3000 erhöhen, um die gewünschte Leistung zu erzielen. -
--checkers <int>
: Anzahl der parallel auszuführenden Prüfungen (Standard 8). Anzahl der parallel auszuführenden Dateiüberprüfungen. Seien Sie vorsichtig, da dies die Serverintegrität beeinträchtigen und Probleme am Ziel verursachen kann. Wenn Sie über ein System mit sehr großem Speicher verfügen, heben Sie diese Zahl in Schritten von 2 auf. Die maximale Anzahl, die wir diese Einstellung mit guten Ergebnissen in der Testumgebung getestet haben, beträgt 64, normalerweise sind 8-10 ausreichend. Checker können zwischen 25 und 50% der Transfernummer liegen; wenn die Transfernummer höher ist, liegt diese Zahl tendenziell näher bei 25%.Hinweis: Bei der horizontalen Skalierung mit mehreren Hosts, auf denen Rclone-Übertragungen und -Prüfer ausgeführt werden, können Sie auf einen 429 "TooManyRequests"-Fehler stoßen, wenn dies geschieht, indem Sie die Anzahl der Checker in Schritten von 2 senken, bis Sie 10 erreichen. Wenn das Senken der Checker nicht ausreicht, müssen Sie auch die Anzahl der Überweisungen senken.
-
--progress
: Damit wird der Fortschritt während der Übertragung angezeigt. -
--fast-list
: Verwenden Sie eine rekursive Liste, sofern verfügbar. Sie belegt mehr Speicher, aber weniger Transaktionen/API-Aufrufe. Dies ist eine gute Option, wenn Sie eine moderate Anzahl von Dateien in verschachtelten Verzeichnissen haben. Verwenden Sie nichtno-traverse
oderno-check-dest
, da es sich um gegenteilige Flags handelt. Kann mit dem Befehl copy oder sync verwendet werden. -
--oos-no-check-bucket
: Wenn Sie wissen, dass der Bucket vorhanden ist, reduziert er die Anzahl der von Rclone ausgeführten Transaktionen, setzt Rclone auf die Annahme, dass der Bucket vorhanden ist, und beginnt mit dem Verschieben von Daten in den Bucket. -
--oos-upload-cutoff
: Dateien, die größer als diese Größe sind, werden in Chunks hochgeladen. Der Standardwert ist 200MiB. -
--oos-chunk-size
: Beim Hochladen von Dateien, die größer als die Einstellung für den Upload-Cutoff sind, oder von Dateien mit unbekannter Größe werden sie als Multipart-Uploads mit dieser Chunk-Größe hochgeladen. Rclone erhöht automatisch die Chunk-Größe, wenn eine große Datei bekannter Größe hochgeladen wird, sodass sie unter dem Grenzwert von 10.000 Chunks bleibt. Der Standard ist 5MiB. -
--oos-upload-concurrency <int>
: Wird für Multipart-Uploads verwendet und gibt die Anzahl der gleichzeitig hochgeladenen Chunks an. Wenn Sie eine kleine Anzahl großer Dateien über Hochgeschwindigkeitslinks hochladen und diese Uploads Ihre Bandbreite nicht vollständig nutzen, kann dies dazu beitragen, die Übertragungen zu beschleunigen. Der Standardwert ist 8, wenn dadurch die Bandbreite nicht langsam erhöht wird, um die Bandbreitennutzung zu verbessern.Hinweis: Bei mehrteiligen Uploads wird zusätzlicher Speicher verwendet, wenn die Parameter
--transfers <int>
,--oos-upload-concurrency <int>
und--oos-chunk-size
verwendet werden. Einzelteil-Uploads verwenden keinen zusätzlichen Speicher. Wenn Sie diese Parameter entsprechend Ihrer Netzwerklatenz einstellen, ist die Latenz umso höher, je höher die Wahrscheinlichkeit ist, dass einzelne Teile schneller hochgeladen werden.
-
-
Beispiel für Rclone-Konfigurationsdatei für 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
-
Grundlegendes Rclone-Befehlsformat
rclone <flags> <command> <source> <dest>
-
Beispiel für die Ausführung einer Rclone-Kopie aus einer lokalen Dateisystemquelle oder OCI File Storage-Quelle in ein OCI Object Storage-Ziel.
rclone copy /src/path oci:bucket-name
-
Beispiel für die Ausführung einer Rclone-Kopie aus der OCI Object Storage-Quelle in ein lokales Dateisystem oder OCI File Storage-Ziel.
rclone copy oci:bucket-name /src/path
-
Beispiel für die Ausführung einer Rclone-Kopie aus einer S3-Quelle in ein OCI Object Storage-Ziel.
rclone copy s3:s3-bucket-name oci:bucket-name
Hinweis: Stellen Sie bei der Migration von AWS und der Verwendung der serverseitigen Verschlüsselung mit KMS sicher, dass rclone mit
server_side_encryption = aws:kms
konfiguriert ist, um Prüfsummenfehler zu vermeiden. Weitere Informationen finden Sie unter Konfiguration von S3 KMS klonen und Konfiguration von S3 klonen
Hinweis: Das Format des Synchronisierungsbefehls ist im Grunde dasselbe. Ersetzen Sie Kopieren einfach durch Synchronisierung.
-
Beispiele für die Verwendung von Rclone
-
Beispiel 1: Mit Rclone können Sie eine kleine Anzahl kleiner Dateien migrieren, die in ein Ziel kopiert wurden, das bereits Daten mit einer hohen Datei- oder Objektanzahl enthält.
rclone --progress --transfers 16 --oos-no-check-bucket --checkers 8 --no-traverse copy <source> <dest>
-
Beispiel 2: Klonen Sie mit weniger großen Dateien mit mehrteiligen Uploads.
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>
Hinweis: Dies sind Ausgangspunkte für die Optionen
--transfers
,--oos-chunk-size
,--oos-upload-concurrency
und--checkers
. Sie müssen sie je nach Datei-/Objektgröße, Arbeitsspeicher und Ressourcen anpassen, die auf den Systemen zur Migration von Daten verfügbar sind. Passen Sie sie so lange an, bis Sie eine ausreichende Bandbreitennutzung erhalten, um Ihre Daten optimal zu migrieren. Wenn Ihr System sehr klein ist, müssen Sie diese Zahlen möglicherweise anpassen, um Ressourcen zu schonen. -
Beispiel: 3 Verwenden Sie Rclone für die horizontale Skalierung auf 3 BM-Rechnern mit einer NIC mit 100 Gbit/s, gemischte Dataset-Größe mit mehrteiligen Uploads mit Petabyte an Daten, Bucket nicht leer, OCI File Storage-Service in OCI Object Storage-Service.
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
Zusätzliche Flags verwendet:
--stats-one-line
: Stellen Sie sicher, dass die Statistiken in eine Zeile passen.--max-stats-group
: Maximale Anzahl von Statistikgruppen, die im Speicher aufbewahrt werden sollen, bei maximal ältestem Wert wird verworfen (Standard 1000).--oos-attempt-resume-upload
: Versuchen Sie, den zuvor gestarteten mehrteiligen Upload für das Objekt fortzusetzen.--oos-leave-parts-on-error
: Vermeiden Sie den Aufruf des Abbruchuploads bei einem Fehler, und lassen Sie alle erfolgreich hochgeladenen Teile für ein manuelles Recovery zurück.
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.
-
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
-
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_##
wiesrc_00
ein.split -l 1000 --numeric-suffixes src src_
-
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.
-
Filesystem-Partitioner (Fpart) ist ein Tool, mit dem die Verzeichnisstruktur partitioniert werden kann. Es kann Tools wie rsync, tar und Rclone mit einer Dateisystempartition aufrufen, um parallel und unabhängig voneinander ausgeführt zu werden. Wir verwenden fpart mit Rclone.
-
fpsync ist ein Wrapper-Skript, das fpart verwendet, um die Übertragungstools (rsync, Rclone) parallel auszuführen. Der Befehl
fpsync
wird von einem fpsync-Operatorhost ausgeführt. Das Tool fpsync bietet auch Optionen zur Verwendung separater Worker-Knoten. Die geänderte fpsync unterstützt Rclone und auch Kubernetes-Pods. -
kubectl verwaltet Kubernetes-Jobs.
Führen Sie die Schritte aus:
-
Identifizieren Sie einen Host, der Ihr fpsync-Operatorhost ist, der Zugriff auf die Migrationsquelldaten hat und Rclone installiert ist.
-
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
-
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
-
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. -
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
-
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. -
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
unds5cmd
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 vonos sync
unds5cmd
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
-
Dataset 1:
Gesamte Größe Anzahl Dateien Dateigrößenbereich 3TB 3 1TB Methode An-Von Time Befehl Flags OS-Synchronisierung NFS/File PHX zu Object IAD 123m17.102s - --parallel-operations-count 100
s5cmd NFS/File PHX zu Object IAD 239m20.625s Kopieren run commands.txt
, Standardausführung--numworkers 256
Rclon NFS/File PHX zu Object IAD 178m27.101s Kopieren --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
Hinweis: Unsere Tests zeigten, dass
os sync
für dieses Dataset am schnellsten ausgeführt wurde. -
Dataset 2:
Gesamte Größe Anzahl Dateien Dateigrößenbereich 9.787 GB 20.000 1 MB Methode An-Von Time Befehl Flags s5cmd NFS/File PHX zu Object IAD 1m12.746s Kopieren Standardausführung --numworkers 256
OS-Synchronisierung NFS/File PHX zu Object IAD 2m48.742s - --parallel-operations-count 1000
Rclon NFS/File PHX zu Object IAD 1m52.886s Kopieren --transfers=500 --oos-no-check-bucket --no-check-dest
Hinweis: Unsere Tests zeigten, dass
s5cmd
die beste Performance für dieses Dataset zeigte.
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:
- Die 14 Verzeichnisse wurden auf die 2 VM-Instanzen aufgeteilt.
- Jede VM führte 7 Befehle/Prozesse aus, 1 für jedes Verzeichnis, sofern nicht anders angegeben.
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:
-
Informationen zur Verwendung von OCI Object Storage Sync und S5cmd finden Sie unter Tutorial 3: Daten mit OCI Object Storage Sync und S5cmd in OCI Cloud Storage Services verschieben.
-
Informationen zur Verwendung von Fpsync und Rsync für Dateisystemdatenmigrationen finden Sie im Tutorial 4: Daten mit Fpsync und Rsync für Dateisystemdatenmigrationen in OCI Cloud Storage Services verschieben.
Verwandte Links
-
Migrationsgrundlagen für das Verschieben von Daten in OCI Cloud Storage
-
Datenübertragung zwischen Dateisystemen und OCI Object Storage mit OKE
-
Tutorial 1: Daten mit Migrationstools in OCI Cloud Storage Services verschieben
-
Tutorial 3: Daten mit OCI Object Storage Sync und S5cmd in OCI Cloud Storage Services verschieben
-
Ankündigung der nativen Unterstützung von OCI Object Storage-Provider-Backend in rclone
Danksagungen
- Autoren - 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)
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.
Move Data into OCI Cloud Storage Services using Rclone
G25565-02
Copyright ©2025, Oracle and/or its affiliates.