ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Rcloneを使用したOCI Cloud Storageサービスへのデータの移行
イントロダクション
これは、Oracle Cloud Infrastructure (OCI)クラウド・ストレージ・サービスにデータを移行する様々な方法を示す4つのチュートリアル・シリーズのチュートリアル2です。このシリーズは、チュートリアル1: 移行ツールを使用したOCI Cloud Storageサービスへのデータの移動を確認して様々なツールを幅広く理解し、移行のニーズに関連する関連するチュートリアルまたはドキュメントに進むことができるように設定されています。このチュートリアルでは、Rcloneを使用したOCIクラウド・ストレージ・サービスへのデータの移行に焦点を当てます。
OCIは、高性能コンピューティングと低コストのクラウド・ストレージ・オプションをお客様に提供します。Oracleは、オンデマンドのローカル・ストレージ、オブジェクト・ストレージ、ファイル・ストレージ、ブロック・ストレージ、アーカイブ・ストレージを通じて、主要なストレージ・ワークロード要件とユースケースに対応します。
OCIクラウド・ストレージ・サービスは、すべてのエンタープライズ・ニーズに対して、高速で安全で耐久性のあるクラウド・ストレージ・オプションを提供します。OCI File Storage with LustreやOCI Block Volumesサービスなどの高パフォーマンス・オプションから、高パフォーマンスのマウント・ターゲットを備えたOCI File Storageサービスからのフルマネージド・エクサバイト・スケール・ファイルシステム、耐久性とスケーラビリティの高いOCI Object Storageまで。オラクルのソリューションは、AI/MLワークロードなどのパフォーマンス集約型アプリケーションからエクサバイト規模のデータレイクまで、お客様のニーズを満たすことができます。
Rcloneは、クラウドまたはクラウド・ストレージ・ベンダー間でデータを移行するためのオープン・ソースのコマンドライン・ユーティリティです。Rcloneを使用すると、1回かぎりの移行や、ソース・ストレージと宛先ストレージ間の定期的な同期を実行できます。Rcloneは、オブジェクト・ストレージ、ファイル・ストレージ、マウントされたドライブ、およびサポートされている70のストレージ・タイプとの間でデータを移行できます。OCI Object Storageは、Rcloneバックエンド・プロバイダとしてネイティブにサポートされています。パラメータ・オプションを使用して、Rcloneプロセスをスケール・アップおよびスケール・アウトし、転送パフォーマンスを向上させることができます。
移行する必要があるデータの量と、新しいOCIストレージ・プラットフォームへのカットオーバーに使用できるダウンタイムを決定します。バッチ移行は、移行を管理可能な増分に分割するのに適しています。バッチ移行では、様々なウィンドウにわたる特定のアプリケーションの停止時間をスケジュールできます。一部のお客様は、スケジュールされたメンテナンス・ウィンドウを2~4日間で1回かぎりの移行を柔軟に行うことができます。OCI FastConnectを使用すると、1Gから400Gまでのポート速度でOCIと環境間の専用のプライベート接続を作成し、データ転送プロセスを高速化できます。OCI FastConnectは、MegaportやConsoleConnectなどのパートナ・ソリューションと統合して、データ・センターまたはクラウド間相互接続へのプライベート接続を作成し、データを別のクラウド・ベンダーからOCIクラウド・ストレージ・サービスに直接移動できます。詳細は、FastConnectとMegaport Cloud Routerの統合を参照してください。
対象読者
DevOpsエンジニア、開発者、OCIクラウド・ストレージ管理者およびユーザー、ITマネージャ、OCIパワー・ユーザーおよびアプリケーション管理者。
目標
Rcloneを使用してデータをコピーし、OCIクラウド・ストレージ・サービスに同期する方法をご紹介します。
-
Rcloneを使用して、ファイルシステム・データ(ローカル、NAS、クラウド・ホスト)をOCI Object Storageに移行します。
-
別のクラウド・オブジェクトまたはBLOBストレージからOCI Object Storageにデータを移行します。
-
Oracle Cloud Infrastructure Kubernetes Engine (OKE)のRcloneを使用して、OCI File StorageからOCI Object Storageにデータを移行します。
前提条件
-
OCIアカウント。
-
OCI上の仮想マシン(VM)インスタンスは、移行ツールまたは移行ツールをデプロイして使用できるシステムをデプロイします。
-
Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)は、
.oci
というサブディレクトリ内のホーム・ディレクトリに作業用構成ファイルとともにインストールされます。詳細は、構成ファイルの設定を参照してください。 -
OCI Object Storageバケットへのアクセス。
-
OCIオブジェクト・ストレージの使用、バケットおよびオブジェクトの管理、または少なくとも1つのバケットまたはコンパートメントのオブジェクト・ファミリの管理を行うためのOCIのユーザー権限。詳細は、共通ポリシーおよびポリシー・リファレンスを参照してください。
-
OCIファイル・ストレージを作成、エクスポートおよびマウントするユーザー権限、またはVMにすでにマウントされているOCIファイル・ストレージ・マウント・ターゲットへのアクセス、またはデータのコピーに使用する別のNFSマウントまたはローカル・ファイル・システムへのアクセス。詳細は、ファイル・ストレージ・ポリシーの管理を参照してください。
-
Mac OS、Linux、Berkeley Software Distribution (BSD)またはWindows PowerShell、コマンド・プロンプトまたはbashでの端末/シェル・インタフェースの使用に精通しています。
-
Linuxシステムへのソフトウェアのインストールに精通しており、Kubernetesの経験または理解があります。
-
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM)の基本知識と、動的グループ内のUbuntuホストでの動的グループの操作。詳細は、動的グループの管理を参照してください。
-
Rcloneおよびその他の移行ツールをインストールするには、OCI Cloud Storageにデータを移動するための移行の基本を参照してください。
-
使用できる移行ツールについては、チュートリアル1: 移行ツールを使用したOCI Cloud Storageサービスへのデータの移動を参照してください。
Rcloneおよび基本用語の概要
Rcloneは、多くのプロトコルおよびクラウド・プロバイダがサポートし、構成が容易であるため、便利な移行ツールです。これは、あらゆるタイプのデータ・セットに適した汎用移行ツールです。Rcloneは、データ転送を高速化するために複数のノードにわたってスケールアウトするためにバッチに分割できるデータ・セットに対して特に有効です。
Rcloneは、次の移行に使用できます。
-
ファイル・システム・データ(OCI File Storage、OCI Block Storage、OCI File Storage with Lustre、オンプレミス・ファイル・システム、およびオンプレミスNFS)から、他のファイル・システム・ストレージ・タイプおよびオブジェクト・ストレージ(OCI Object Storageを含む)との間で。
-
サポートされているクラウド・プロバイダからOCI Object Storageまでのオブジェクト・ストレージ。
Rcloneコマンドとフラグ:
-
Rcloneのパフォーマンスの理解
Rcloneは、ファイルシステム・データ、他のクラウド・プロバイダおよびOCIクラウド・ストレージ・サービス間でファイルを同期またはコピーするための優れた汎用ツールです。パフォーマンスは、スケールアップおよびスケールアウトできる量によって異なります。移行システムで様々なテストを実行し、移行サンプルを設定して、ネットワーク帯域幅のしきい値に達するタイミングを決定することをお薦めします。
たとえば、ソース・バケットには10個のフォルダ/接頭辞があり、それぞれに約1TBがあります。大容量のCPU/RAM容量の2つのVM間で移行を分割し、2つのVMから複数のRcloneコピー・プロセスをパラレルにトリガーできます。各フォルダのトポロジおよび計算容量に応じて、転送速度を向上させるためにRcloneパラメータを調整できます。
2 VMで次のコマンドを実行してから、各VMでNICが飽和するまで転送数およびチェッカ数を調整できます。
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
-
CPU、メモリーおよびネットワーク帯域幅が大きいシステムまたはVMインスタンスでは、より多くのファイル転送およびチェッカをパラレルで実行できます。より多くのリソースでシステムにスケール・アップすると、パフォーマンスが向上します。
-
構造に基づいてデータを様々なバッチに分割できる場合は、複数のシステムまたはVMインスタンスでRcloneを実行してスケールアウトすることもできます。
Rcloneのパフォーマンスを向上させるために、スケール・アップとスケール・アウトをお薦めします。オラクルのテストには、スケール・アウトするためにRclone転送をパラレルに実行する2つのVMが含まれていました。データ・セットが大きい場合は、最大4台のマシンを使用するか、ベア・メタル(BM)インスタンスを使用することもできます。
-
-
コピーおよび同期コマンドを複製
-
Rclone copyコマンドは、ソースファイルまたはオブジェクトを宛先にコピーします。ソースと宛先で同じファイルをスキップし、サイズと変更時間またはmd5sumでテストします。コピー・コマンドでは、宛先からファイルは削除されません。
-
Rclone syncコマンドは、ソースと宛先を同期し、同じファイルもスキップします。宛先はソースと一致するように変更されます。つまり、ソースと一致しないファイルが削除されます。
ノート:同期の使用には注意し、宛先がソースとまったく同じように見える場合にのみ使用してください。コピー・コマンドは、新しいファイルをコピー先にコピーする場合に使用します。
-
-
右側のRcloneコマンド行フラグの使用
Rcloneコマンド行フラグには、データ移行の速度に影響を与えるRcloneで使用できるものがいくつかあります。最適なデータ転送スループットを得るために、これらのフラグの一部がどのように機能するかを理解することが重要です。
-
--no-traverse
:これはcopyコマンドでのみ機能し、宛先ファイル・システムを経由しません。このフラグは、コピーするファイルを決定するために宛先のリストを実行しないため、時間を節約します。ファイルを一度に1つずつチェックして、コピーする必要があるかどうかを判断します。1対1の方が遅いように見えるかもしれませんが、すでに多くのファイルが存在する宛先にコピーするファイル/オブジェクトの数が非常に少ない場合は、高速になることがあります。 -
--no-check-dest
:これはcopyコマンドでのみ機能し、コピーまたは移動が必要なものを判断するために宛先ファイルをチェックまたはリストすることはなく、APIコールを最小限に抑えます。ファイルは常に転送されます。このコマンドは、宛先上のものに関係なく、または宛先が空であることがわかっている場合に、ソース上のすべてをコピーする必要があることがわかっている場合に使用します。ノート:
no-traverse
またはno-check-dest
コマンドを使用すると、多くのユーザーが両方を必須ではないコマンドラインに配置できます。- ターゲットが空の場合、またはソースから宛先にすべてのファイルをコピーする場合は、
no-check-dest
を使用します。 - 移行する必要のある非常に大きなファイルがいくつかある場合は、
no-traverse
を使用します。これにより、各ファイルがソースにコピーされる前に宛先で最新かどうかがチェックされます。これにより、リストAPIコールおよびターゲットにコピーされるデータの量に保存できます。
- ターゲットが空の場合、またはソースから宛先にすべてのファイルをコピーする場合は、
-
--ignore-checksum
:これにより転送が高速化されますが、Rcloneは転送中にデータの破損をチェックしません。 -
--oos-disable-checksum
: MD5チェックサムをオブジェクト・メタデータとともに格納しないでください。Rcloneは、アップロード前にデータのMD5チェックサムを計算し、オブジェクト・メタデータに追加します。これはデータの整合性に最適です。ただし、大きなファイルがアップロード・プロセスを開始する前に遅延が発生します。 -
--transfers <int>
:パラレルで実行するファイル転送の数(デフォルトは4)。rcloneを実行しているシステムのサイズに基づいてこの数値をスケールアップします。テスト実行を行い、ホストの最大転送速度に達するまで整数を増やすことができます。受入れ可能なパフォーマンスが得られるまで、この数値をテストして上げることをお薦めします。お客様がこの数値を64から3000の間で上げて望ましいパフォーマンスを得られるようにしています。 -
--checkers <int>
:パラレルで実行するチェックの数(デフォルトは8)。並列で実行するファイルチェッカーの量。サーバーの健全性が低下し、宛先で問題が発生する可能性があるため、注意してください。メモリーが非常に大きいシステムがある場合は、この数値を2ずつ増やします。この設定をテスト環境で良好な結果でテストした最大数は64で、通常は8-10で十分です。チェッカーは、転送番号の25~50%のどこにいても構いません。転送番号が大きい場合、この数は25%に近い傾向があります。ノート: Rclone転送およびチェッカを実行している複数のホストでスケール・アウトする場合、429 "TooManyRequests"エラーが発生する可能性があります。これは、10に達するまでチェッカの数を2ずつ減らすことから始まります。チェッカーを下げるだけでは不十分な場合は、転送の数も少なくする必要があります。
-
--progress
:転送中の進行状況が表示されます。 -
--fast-list
:再帰的リスト(使用可能な場合)を使用します。使用するメモリーは多く、トランザクション/APIコールは少なくなります。これは、ネストされたディレクトリに中程度の数のファイルがあるときに使用する適切なオプションです。no-traverse
またはno-check-dest
はフラグと異なるため、一緒に使用しないでください。copyまたはsyncコマンドで使用できます。 -
--oos-no-check-bucket
:これは、バケットが存在することがわかっている場合に使用し、Rcloneが実行するトランザクションの数を減らし、Rcloneがバケットが存在すると想定してデータの移動を開始するように設定します。 -
--oos-upload-cutoff
:このサイズより大きいファイルはチャンク単位でアップロードされ、デフォルトは200MiBです。 -
--oos-chunk-size
:アップロード・カットオフ設定より大きいファイル、またはサイズが不明なファイルをアップロードすると、このチャンク・サイズを使用してマルチパート・アップロードとしてアップロードされます。既知のサイズの大きいファイルをアップロードすると、10,000チャンクの制限を下回るように、Rcloneはチャンク・サイズを自動的に増やします。デフォルトは5MiBです。 -
--oos-upload-concurrency <int>
:マルチパート・アップロードに使用され、同時にアップロードされるチャンクの数です。高速リンクを介して少数の大きなファイルをアップロードしており、これらのアップロードで帯域幅が十分に利用されない場合、これを増やすと転送の速度が向上する可能性があります。帯域幅の使用が遅い場合は、帯域幅の使用率を向上させるために、デフォルトは8です。ノート:マルチパート・アップロードでは、パラメータ
--transfers <int>
、--oos-upload-concurrency <int>
および--oos-chunk-size
を使用すると、追加のメモリーが使用されます。単一パートのアップロードでは、余分なメモリーは使用されません。これらのパラメータを設定すると、ネットワーク・レイテンシが考慮され、レイテンシが長くなるほど、単一パートのアップロードが高速になる可能性が高くなります。
-
-
OCIオブジェクト・ストレージのRclone構成ファイルの例
[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
-
基本的なRcloneコマンド形式
rclone <flags> <command> <source> <dest>
-
ローカル・ファイルシステム・ソースまたはOCIファイル・ストレージ・ソースからOCIオブジェクト・ストレージ宛先へのRcloneコピーの実行例。
rclone copy /src/path oci:bucket-name
-
OCI Object Storageソースからローカル・ファイルシステムまたはOCI File Storage宛先へのRcloneコピーの実行例。
rclone copy oci:bucket-name /src/path
-
S3ソースからOCIオブジェクト・ストレージの宛先へのRcloneコピーの実行例。
rclone copy s3:s3-bucket-name oci:bucket-name
ノート: AWSから移行し、KMSでサーバー側の暗号化を使用する場合は、チェックサム・エラーを回避するために、rcloneが
server_side_encryption = aws:kms
で構成されていることを確認してください。詳細は、「S3 KMSのクローニング」および「S3構成のクローニング」を参照してください。
ノート: syncコマンドの形式は基本的に同じで、コピーをsyncに置き換えます。
-
Rcloneの使用例
-
例1: Rcloneを使用して、ファイル数またはオブジェクト数の多いデータがすでに格納されている宛先にコピーされた少数の小さいファイルを移行します。
rclone --progress --transfers 16 --oos-no-check-bucket --checkers 8 --no-traverse copy <source> <dest>
-
例2:マルチパート・アップロードで大きいファイルが少ないRclone。
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>
ノート:オプション
--transfers
、--oos-chunk-size
、--oos-upload-concurrency
および--checkers
の開始点は、データの移行に使用しているシステムで使用可能なファイル/オブジェクトのサイズ、メモリーおよびリソースに基づいて調整する必要があります。データを最適に移行するための十分な帯域幅使用量が得られるまで、これらを調整します。システムが非常に小さい場合は、リソースを節約するためにこれらの数値を調整する必要がある場合があります。 -
例: 3Rcloneは、100Gbps NICの3台のBMマシンでのスケールアウト実行、ペタバイトのデータを含むマルチパート・アップロードでのデータ・セット混合サイズ、バケットは空ではない、OCI Object StorageサービスへのOCI File Storageサービスに使用します。
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
使用される追加のフラグ:
--stats-one-line
:統計を1行に収めます。--max-stats-group
:最大最古のメモリーに保持する統計グループの最大数(デフォルトは1000)が破棄されます。--oos-attempt-resume-upload
:以前に開始したオブジェクトのマルチパート・アップロードを再開しようとします。--oos-leave-parts-on-error
:障害時にアップロードの中断をコールしないようにし、正常にアップロードされたすべてのパートを手動リカバリ用に残します。
Rcloneを使用した多数のファイルの移行
Rcloneはディレクトリごとに同期します。数千万個のファイル/オブジェクトを移行する場合は、ディレクトリ/接頭辞がディレクトリごとに約10,000個のファイル/オブジェクトまたはそれ以下に分割されていることを確認することが重要です。これは、Rcloneがメモリーを使いすぎてクラッシュするのを防ぐためです。小さいファイルの数が多い(1000万以上)多くの顧客がこの問題に遭遇することがよくあります。すべてのファイルが1つのディレクトリにある場合は、最初に分割します。
-
ソース内のファイルのリストを取得するには、次のコマンドを実行します。
rclone lsf --files-only -R src:bucket | sort > src
-
分割を使用して、ファイルを1,000-10,000行のチャンクに分割します。次のsplitコマンドは、ファイルを1,000のチャンクに分割し、
src_00
などのsrc_##
という名前のファイルに格納します。split -l 1000 --numeric-suffixes src src_
-
複数のVMインスタンスにファイルを配布して、データ転送をスケール・アウトします。各Rcloneコマンドは次のようになります。
rclone --progress --oos-no-check-bucket --no-traverse --transfers 500 copy remote1:source-bucket remote2:dest-bucket --files-from src_00
または、単純なforループを使用して、splitコマンドから生成されたファイル・リストを反復処理することもできます。1つのバケットで最大270,000個のファイルを使用したテスト中に、コピー時間が40xを改善し、マイレージが異なる場合があります。
ノート:ディレクトリ構造または分割ユーティリティを使用してファイルを分割することは、転送を最適化する重要な方法です。
ファイル・システムからOCIオブジェクト・ストレージへのデータの移動にRclone、OKEおよびfpartを同時に使用
複数のKubernetesポッドを使用して、ファイル・システムとオブジェクト・ストレージ間のデータ転送をスケール・アウトできます。並列化により、比較的レイテンシが高く、スループットが高いストレージ・システムへのデータ転送が高速化されます。Rclone、OKEおよびfpartのパーティション・ディレクトリ構造を複数のチャンクに組み合せ、同じ計算ノードまたは複数のノード間でコンテナ上でパラレルにデータ転送を実行するアプローチ。複数のノードにわたって実行すると、各ノードのネットワーク・スループットと計算能力が集計されます。
-
ファイルシステムパーティション(Fpart)は、ディレクトリ構造をパーティション分割するために使用できるツールです。ファイル・システム・パーティションでrsync、tar、Rcloneなどのツールをコールして、並行して、相互に独立して実行できます。fpartをRcloneで使用します。
-
fpsyncは、fpartを使用して転送ツール(rsync、Rclone)を並列で実行するラッパースクリプトです。
fpsync
コマンドは、fpsyncオペレータ・ホストから実行します。fpsyncツールには、個別のワーカー・ノードを使用するオプションもあります。変更されたfpsyncは、RcloneおよびKubernetesポッドもサポートします。 -
kubectlは、Kubernetesジョブを管理します。
ステップに従います。
-
移行ソース・データにアクセスでき、Rcloneがインストールされているfpsyncオペレータ・ホストとなるホストを特定します。
-
次のコマンドを実行して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
-
OKEクラスタを管理するためのfpsyncオペレータ・ホストのOCI IAMポリシーを作成します。
これには、次のポリシーを使用できます。ポッドを制御するための最小限の要件を満たすように、より詳細な権限を構成できます。
Allow dynamic-group fpsync-host to manage cluster-family in compartment storage
-
OKEクラスタにアクセスできるように
kubeconfig
ファイルを設定します。詳細は、クラスタへのローカル・アクセスの設定を参照してください。 -
fpartおよびfpsyncをインストールしてパッチを適用します。データ転送をスケール・アウトするには、Rcloneまたはrsyncをパラレルに実行するには、fpsyncパッチが必要です。fpartパッケージに付属するfpsyncでは、RcloneポッドまたはKubernetesポッドはサポートされません。これらのツールをサポートするにはパッチが必要です。
次のコマンドを実行して、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
-
コンテナ・イメージを作成します。
rclone-rsync-image
で使用可能なdockerイメージ・ビルド仕様は、コンテナ・イメージの構築に使用できます。イメージを構築したら、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>
イメージのコピーは、
fra.ocir.io/fsssolutions/rclone-rsync:latest.
に保持されます。サンプル・ディレクトリには、出力ファイルの例がいくつか含まれています。 -
k-fpsyncを実行します。パッチ適用されたfpsync (k-fpsync)は、ソース・ファイル・システムをパーティション化し、複数のKubernetesポッドを使用して転送をスケール・アウトできます。Kubernetesポッド・アンチアフィニティ・ルールは、実行中の転送ワーカー・ポッドがないノードを優先するように構成されています。これにより、ノード上の帯域幅を効果的に利用してパフォーマンスを最適化できます。詳細は、ノードへのポッドの割当てを参照してください。
ソース・ファイル・システムをfpartオペレータ・ホストにマウントし、すべてのポッドがアクセスする共有ディレクトリを作成します。これは、すべてのログ・ファイルおよびパーティション・ファイルが保持されるディレクトリです。
次のコマンドは、ファイルシステム
/data/src
からOCIオブジェクト・ストレージ・バケットrclone-2にデータを転送します。fpartによって作成されたファイル・システム・パーティションを転送するために、一度に2つのポッドが開始されます。# 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
ノート:実行のログは、次の例では
/data/fpsync/{Run-Id}/log directory
にあるrun-ID
ディレクトリに保持されます。サンプル出力は、サンプル・ディレクトリにあります。
(オプション)テスト環境
推奨は、テストとカスタマ・インタラクションに基づいて行われます。
ノート:一括コピー・スクリプトから実行すると、
os sync
およびs5cmd
の結果が含まれ、パフォーマンスの詳細が示されます。バルク・コピー・スクリプトの使用方法については、バルク操作のためのOracle Cloud Infrastructure Object Storage Pythonユーティリティの使用を参照してください。os sync
およびs5cmd
の使用方法の詳細は、チュートリアル3: OCI Object Storage SyncおよびS5cmdを使用したOCI Cloud Storageサービスへのデータの移動を参照してください。
テスト環境 1:
1 VMインスタンスVM.Standard.E4.Flex
、1 OCPU、1Gbpsネットワーク帯域幅、16GBのメモリー。オンプレミスからOCIへの移行をシミュレートするために、コピーされたデータをPHX NFSからIADに移行します。
データ・セット
-
データセット1:
合計サイズ ファイル数 ファイル・サイズ範囲 3TB 3 1TB Method 至: 自 Time コマンド フラグ OS同期 NFS/ファイルPHXからオブジェクトIADへ 123m17.102s NA --parallel-operations-count 100
s5cmd NFS/ファイルPHXからオブジェクトIADへ 239m20.625s コピー run commands.txt
、デフォルトの実行--numworkers 256
rclone NFS/ファイルPHXからオブジェクトIADへ 178m27.101s コピー --transfers=100 --oos-no-check-bucket --fast-list --checkers 64 --retries 2 --no-check-dest
ノート:テストでは、
os sync
がこのデータ・セットに対して最も高速に実行されていることが示されました。 -
データ・セット 2:
合計サイズ ファイル数 ファイル・サイズ範囲 9.787GB 20,000 1MB Method 至: 自 Time コマンド フラグ s5cmd NFS/ファイルPHXからオブジェクトIADへ 1m12.746s コピー デフォルトの実行 --numworkers 256
OS同期 NFS/ファイルPHXからオブジェクトIADへ 2m48.742s NA --parallel-operations-count 1000
rclone NFS/ファイルPHXからオブジェクトIADへ 1m52.886s コピー --transfers=500 --oos-no-check-bucket --no-check-dest
ノート:テストでは、
s5cmd
がこのデータ・セットに対して最適に実行されていることが示されました。
テスト環境 2:
VMインスタンス:テストごとに2つのVMインスタンスが使用され、24個のOCPU、24Gbpsネットワーク帯域幅、384GBのメモリーを持つVM.Standard.E4.Flex
が使用されました。Oracle Linux 8はLinuxテストに使用されました。
テストに使用されるデータセット:次のファイル数とサイズを持つ14個のメイン・ディレクトリ。
データ・セット・ディレクトリ | Size | ファイル数 | 各ファイルのサイズ |
---|---|---|---|
ディレクトリ 1 | 107.658 GiB | 110,242 | 1 MiB |
ディレクトリ 2 | 1.687 GiB | 110,569 | 15 MiB |
ディレクトリ 3 | 222 GiB | 111 | 2 GiB |
ディレクトリ 4 | 1.265 TiB | 1,295 | 1 GiB |
ディレクトリ 5 | 26.359 GiB | 1,687 | 16 MiB |
ディレクトリ 6 | 105.281 MiB | 26,952 | 4 KiB |
ディレクトリ 7 | 29.697 MiB | 30,410 | 1 KiB |
ディレクトリ 8 | 83.124 GiB | 340,488 | 256 KiB |
ディレクトリ 9 | 21.662 GiB | 354,909 | 64 KiB |
ディレクトリ 10 | 142.629 GiB | 36,514 | 4 MiB |
ディレクトリ 11 | 452.328 MiB | 57,898 | 8 MiB |
ディレクトリ 12 | 144 GiB | 72 | 2GiB |
ディレクトリ 13 | 208.500 GiB | 834 | 256 MiB |
ディレクトリ 14 | 54.688 GiB | 875 | 64 MiB |
ノート:
- 2つのVMインスタンス間で14個のディレクトリが分割されました。
- 各VMは、特に明記されていないかぎり、ディレクトリごとに1つずつ、7つのコマンド/プロセスを実行しました。
Method | 至: 自 | Time | コマンド | フラグ/ノート |
---|---|---|---|---|
s5cmd | NFS/ファイルPHXからオブジェクトIADへ | 54m41.814s | コピー | --numworkers 74 |
OS同期 | NFS/ファイルPHXからオブジェクトIADへ | 65m43.200s | NA | --parallel-operations-count 50 |
rclone | NFS/ファイルPHXからオブジェクトIADへ | 111m59.704s | コピー | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 50 |
rclone | オブジェクトPHXからオブジェクトIAD | 28m55.663s | コピー | --oos-no-check-bucket --no-check-dest --ignore-checksum --oos-disable-checksum --transfers 400 。2つのVM間で同じコマンドが実行され、同時実行性が800の転送 |
python一括コピー・スクリプト | オブジェクトPHXからオブジェクトIAD | 25m43.715s | デフォルト | 1 VM、50ワーカー、1回につき100,000個のファイルがキューに入れられる |
s5cmd
およびos sync
コマンドは、ファイルシステム/NFSをオブジェクト・ストレージに対して適切に実行します。バルク・コピー・スクリプトはバケットからバケットへの転送のみを行い、NFS移行についてテストされませんでした。
rclone
およびpythonバルク・コピー・スクリプトのみがリージョン間でバケットからバケットへの転送を実行できるため、他のツールはテストされませんでした。pythonバルク・コピー・スクリプトは、クロス・リージョン・バケットからバケットへのデータでより適切ですが、OCI Object Storageとの互換性はありますが、rclone
では多くのバックエンドおよびクラウド・プロバイダがサポートされます。
rclone
を使用して小規模なテスト実行を行い、Microsoft Azure Blob Storage、Amazon Simple Storage Service (Amazon S3)、およびGoogle Cloud Platform Cloud StorageからOCI Object Storageにデータを転送し、これらのタイプの転送に対してツールが機能することを検証しました。詳細は、Rcloneを使用したクラウド内のオブジェクト・ストレージへのデータの移動を参照してください。
テスト環境 3:
VMインスタンス:テストごとに1から2個のVMインスタンスが使用され、24個のOCPU、24Gbpsネットワーク帯域幅、384GBのメモリーを持つVM.Standard.E4.Flex
が使用されました。Oracle Linux 8はLinuxテストに使用されました。すべてのテストはバケット間でした。
合計サイズ | ファイル数 | ファイル・サイズ範囲 |
---|---|---|
7.74 TiB | 1,000,000 | 30 MiB |
Method | 至: 自 | Time | コマンド | フラグ | ノート | |
---|---|---|---|---|---|---|
rclone | オブジェクト間IAD -> IAD | 18h39m11.4s | コピー | --oos-no-check-bucket --fast-list --no-traverse --transfers 500 --oos-chunk-size 10Mi |
1 VM、ファイル数が多いため非常に遅く、ソースへのコールをリスト | |
rclone | オブジェクト間IAD -> IAD | 55m8.431s | コピー | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 VM、VM当たり500の転送、オブジェクト/ファイル・リストに一度に1,000個のファイルが供給され、ソースと宛先のリストが防止され、パフォーマンスが向上します | |
python一括コピー・スクリプト | オブジェクト間IAD -> IAD | 28m21.013s | NA | デフォルト | 1 VM、50ワーカー、1回につき100,000個のファイルがキューに入れられる | |
python一括コピー・スクリプト | オブジェクト間IAD -> IAD | NA | NA | デフォルト | 2つのVM、VM当たり50人のワーカー、一度に100,000個のファイルがキューに入れられます。429個のエラーを受け取り、スクリプトがハングし、完了できませんでした | |
s5cmd | オブジェクト間IAD -> IAD | 14m10.864s | コピー | デフォルト(256人の従業員) | 1 VM | NA |
s5cmd | オブジェクト間IAD -> IAD | 7m50.013s | コピー | デフォルト | 2 VM、各VMに256人のワーカー | ほぼ半分の時間を1 VMとして実行 |
s5cmd | オブジェクト間IAD -> IAD | 3m23.382s | コピー | --numworkers 1000 |
1 VM、1,000人の従業員 | 複数のテストで、これがs5cmdを使用したこのデータ・セットの最適な実行であることがわかりました |
rclone | オブジェクト間IAD -> PHX | 184m36.536s | コピー | --oos-no-check-bucket --no-traverse --transfers 500 --oos-chunk-size 10Mi --files-from <file> |
2 VM、VM当たり500転送、オブジェクト/ファイル・リストに一度に1,000ファイルを提供 | |
python一括コピー・スクリプト | オブジェクト間IAD -> PHX | 35m31.633s | NA | デフォルト | 1VM、50ワーカー、一度に100,000個のファイルがキューに入れられる |
s5cmd
コマンドは、大きいファイル数と小さいファイルに対して一貫して最適に実行されました。s5cmd
は、同じテナンシおよび同じリージョン内でバケットからバケットへのコピーのみを実行できるため制限されます。
ファイルがコマンドにフィードされ、別のVMにスケール・アウトされると、rclone
が大幅に改善されます。Rcloneは、他のツールよりも動作が遅くなる可能性があり、Rcloneがサポートする様々なプラットフォームおよび実行できる移行のタイプで最も汎用的です。
OCI Object Storage Bulk Copy Python APIは、OCIネイティブのCopyObject APIのみを使用でき、スロットルされる前に最大50人のワーカーの同時実行性しか取得できません。
IADからPHXへのテストは、IADからIADに最も効果的であったものに対してのみ行われ、問題のあるテストは再実行されませんでした。IADからPHXへのs5cmd
は、同じリージョン内でバケット間コピーのみを実行できるため、実行されませんでした。
次のステップ
移行のニーズに関連する関連チュートリアルに進みます。データをOCIクラウド・ストレージ・サービスに移動するには:
-
OCI Object Storage SyncおよびS5cmdを使用して、チュートリアル3: OCI Object Storage SyncおよびS5cmdを使用したOCI Cloud Storageサービスへのデータの移動を参照してください。
-
ファイル・システム・データ移行にFpsyncおよびRsyncを使用する場合、チュートリアル4: ファイル・システム・データ移行にFpsyncおよびRsyncを使用したOCI Cloud Storageサービスへのデータの移動を参照してください。
関連リンク
-
チュートリアル3: OCI Object Storage SyncおよびS5cmdを使用したOCI Cloud Storageサービスへのデータの移動
-
チュートリアル4: ファイル・システム・データの移行にFpsyncおよびRsyncを使用したOCI Cloud Storageサービスへのデータの移動
承認
- 著者 - Melinda Centeno (OCI Object Storage担当シニア・プリンシパル・プロダクト・マネージャー)、Vinoth Krishnamurthy (テクニカル・スタッフ・プリンシパル・メンバー、OCI File Storage)、Aboo Valappil (テクニカル・スタッフ・コンサルティング・メンバー、OCI File and Block Storage)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Move Data into OCI Cloud Storage Services using Rclone
G25570-02
Copyright ©2025, Oracle and/or its affiliates.