ノート:

FpsyncとRsyncを使用したOCI Cloud Storageサービスへのデータの移行

イントロダクション

これは、Oracle Cloud Infrastructure (OCI)クラウド・ストレージ・サービスにデータを移行する様々な方法を示す4つのチュートリアル・シリーズのチュートリアル4です。このシリーズは、チュートリアル1: 移行ツールを使用したOCI Cloud Storageサービスへのデータの移動を確認して様々なツールを幅広く理解し、移行のニーズに関連する関連するチュートリアルまたはドキュメントに進むことができるように設定されています。このチュートリアルでは、fpsyncおよびrsyncを使用してファイル・システム・データをOCIファイル・ストレージに移行することに重点を置きます。

OCIは、高性能コンピューティングと低コストのクラウド・ストレージ・オプションをお客様に提供します。Oracleは、オンデマンドのローカル・ストレージ、オブジェクト・ストレージ、ファイル・ストレージ、ブロック・ストレージ、アーカイブ・ストレージを通じて、主要なストレージ・ワークロード要件とユースケースに対応します。

OCIクラウド・ストレージ・サービスは、エンタープライズのすべてのニーズに対して、高速で安全で耐久性のあるクラウド・ストレージ・オプションを提供します。OCI File Storage with LustreやOCI Block Volumesサービスなどの高パフォーマンス・オプションから、高パフォーマンスのマウント・ターゲットを備えたOCI File Storageサービスからのフルマネージド・エクサバイト・スケール・ファイルシステム、耐久性とスケーラビリティの高いOCI Object Storageまで。オラクルのソリューションは、AI/MLワークロードなどのパフォーマンス集約型アプリケーションからエクサバイト規模のデータレイクまで、お客様のニーズを満たすことができます。

移行する必要があるデータの量と、新しいOCIストレージ・プラットフォームへのカットオーバーに使用できるダウンタイムを決定します。バッチ移行は、移行を管理可能な増分に分割するのに適しています。バッチ移行では、様々なウィンドウにわたる特定のアプリケーションの停止時間をスケジュールできます。一部のお客様は、スケジュールされたメンテナンス・ウィンドウを2~4日間で1回かぎりの移行を柔軟に行うことができます。OCI FastConnectを使用すると、1Gから400Gまでのポート速度でOCIと環境間の専用のプライベート接続を作成し、データ転送プロセスを高速化できます。OCI FastConnectは、MegaportやConsoleConnectなどのパートナ・ソリューションと統合して、データ・センターまたはクラウド間相互接続へのプライベート接続を作成し、データを別のクラウド・ベンダーからOCIクラウド・ストレージ・サービスに直接移動できます。詳細は、FastConnectとMegaport Cloud Routerの統合を参照してください。

RsyncとFpsyncの違い

対象読者

DevOpsエンジニア、開発者、OCIクラウド・ストレージ管理者およびユーザー、ITマネージャ、OCIパワー・ユーザーおよびアプリケーション管理者。

目標

rsyncとfpsyncを使用してデータをOCIクラウド・ストレージ・サービスにコピーおよび同期する方法をご紹介します。

前提条件

OCIファイル・ストレージへのデータの移行

Fpsyncとrsyncを使用して、ファイル・システム・データ(OCI File Storageサービス、OCI Block Volumesサービス、Lustreを使用するOCI File Storage、オンプレミス・ファイル・システム、およびオンプレミス・ネットワーク・ファイル・システム(NFS)を他のファイル・システム・ストレージ・タイプ(OCI File Storageを含む)に移行できます。

Rsyncを使用したデータの移行

  1. インスタンス間ストリーミングでrsyncを使用します。

    最大数万GBの小規模なデータセットおよび数千のファイルについては、rsyncインスタンス間ストリーミングを使用できます。SSHを使用したインスタンス間ストリーミングにより、ネットワーク内のローカルNFSとソース・ネットワークと宛先ネットワーク間のSSHが有効になり、2つのネットワーク間のNFSの待機時間が短縮されます。次のコマンドを使用します

    rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --ignore-errors --progress --log-file=$HOME/rsync/logs/test.log1 --quiet -e ssh /src/path/ root@<destination_instance>:/destination/path/
    
  2. 複数のrsyncプロセスを並行して実行します。

    • findおよびxargsコマンドを使用して、複数のrsyncプロセスを実行できます。

      find /src/path/ -maxdepth 1 | xargs -P 24 -I {} rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --log-file=<logfile_path> -quiet -e ssh {} root@<destination_instance>:/destination/path/
      
    • GNU並列を使用することもできます。

      find /src/path/ -maxdepth 1 | parallel -P24 rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --exclude=.snapshot --ignore-errors --progress --log-file=$HOME/rsync/logs/test.log1 --quiet -e ssh {} root@<destination_instance>:/destination/path/
      

    ノート:どちらの例でも、一度に24個のプロセスが実行され、使用されるインスタンスのCPU容量に基づいてパラメータが選択されています。

Fpsyncを使用したデータの移行

fpsyncツールはrsyncの並列ラッパーです。tar、tarify、cpioも使用できますが、デフォルトはrsyncです。

  1. Linuxマシンにfpsyncをインストールします。

    • Linux 8で次のコマンドを実行します。
    sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    sudo yum install fpart -y
    
    • Linux 9で次のコマンドを実行します。
    sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
    sudo yum install fpart -y
    
  2. 次のコマンドを使用してfpsyncを実行します。

    たとえば次のようにします。

    fpsync -v -n `nproc` -o "-lptgoD -v --numeric-ids --logfile /tmp/fpsync.log1” /src/path/ root@<destination_instance>:/destination/path/
    

ノート: fpsyncオプションおよびパラメータの詳細は、man fpsyncを参照してください。

3つのワーカー・ノードを使用してFpsyncを実行し、オンプレミス・ファイル共有からOCIファイル・ストレージ・サービスにデータを移行

3つのワーカー・ノードを使用してfpsyncを実行し、オンプレミス・ファイル共有(ローカル・ディスク、SANまたはNAS)からOCI File Storageサービスにデータを移行するには、高度なステップに従います。

次の図は、コンポーネント・アーキテクチャの図を示しています。

コンポーネント・アーキテクチャ図

ステップに従います。

  1. ワーカー・ノードと宛先ノードを3つ選択してください。

    ソース・ファイル・システムをマウントするためにアクセスできるローカル・システムはどれですか(3つ選択してください)。または、テスト目的で3つのOCI Compute VMインスタンスを作成して起動することもできます。

    既存のOCI VMインスタンスを識別するか、宛先ノードとして機能する新しいインスタンスを作成して起動します。

  2. ソースのNAS共有を3つのノードにマウントします。

    nordirplusおよび nconnect=16マウントオプションを使用し、ほかの nfsマウントオプションは指定しないでください。

    たとえば、Linuxシステムで次のmountコマンドを実行します。

    sudo mount -t nfs -o nordirplus,nconnect=16 10.x.x.x:/<EXPORT_PATH_NAME> /mnt/nfs-data
    

    たとえば、次のコマンドを実行してマウントを確認します。

    mount | grep /mnt/nfs-data
    

    ノート:テストの目的で、OCI File Storageを使用してファイル・システムを作成、エクスポートおよびマウントできます。fpsyncを試すため、マウント内にテストデータを作成できます。

  3. fpsyncを実行するノードを選択し、/etc/hostsファイルを更新します。

    3つのノードのいずれかを選択するか、別のノードを選択してfpsyncコマンドを実行できます。fpsyncコマンドが実行されるノードは、エグゼキュータ・ノードと呼ばれます。

    fpsyncが実行されるノードで、任意のテキスト・エディタを使用して、3つのワーカー・ノードworker-src-1worker-src-2およびworker-src-3/etc/hostsファイルを更新します。

    たとえば次のようにします。

    vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.0.0.4 worker-src-1.subnet.vcn.oraclevcn.com worker-src-1
    10.0.0.5 worker-src-2
    10.0.0.6 worker-src-3
    
  4. 宛先ノードに宛先ファイル・システムをマウントします。

    宛先ファイル・システムを特定し、宛先ノードにマウントします。または、OCIファイル・ストレージを作成して宛先ノードにマウントします。

  5. オンプレミスからOCIへの接続が確立されていることを確認します。

    pingtraceroutesshなどの一般的なネットワーキング・ツールを使用して、システム、オンプレミス、OCI間の接続を確認します。

  6. すべてのソース・ノードと宛先ノード間でパスワードなしSSHを相互に有効化し、ソース・ノードと宛先ノードのペア間のSSH接続を確認します。

    エグゼキュータ・ノードでfpsyncコマンドを実行するユーザーの公開SSHキーを識別します。このキーは通常、.sshディレクトリの下のユーザーのホーム・ディレクトリにあり、通常はid_rsa.pubという名前です。このキーをすべてのワーカー・ノードに伝播するには、catコマンドを使用してその内容を表示し、キーをコピーして、ワーカー・ノードの$HOME/.ssh/authorized_keysファイルに貼り付けます。または、パスワードベースのSSHが有効な場合は、ssh-copy-idコマンドを使用して、キーを各ワーカー・ノードおよび宛先ノードに分散できます。たとえば次のようにします。

    [worker-src-1 ~]$ ssh-copy-id username@worker-src-2
    
  7. エグゼキュータ・ノードでfpsyncコマンドを実行します。

    ノート: fpsyncは、ワーカー・ノードを介してSSHを介して宛先ノードに対してrsyncコマンドを実行するエグゼキュータ・ノードにのみインストールする必要があります。

    たとえば次のようにします。

    fpsync -v -n X -f Y -o "-lptgoD -v --numeric-ids -e ssh -C" \
    -w username@worker-src-1 -w username@worker-src-2 -w username@worker-src-3 \
    -d /nfs-data/fpsync_wrkr /nfs-data/fpsync_src/ opc@worker-dest:/fpsync-fs/
    

    ノート: XおよびYを、fpsyncオプション-nおよび-fの値に置き換えます。

    • 同時同期ジョブの値(-n)を確認します。

      • -n値を選択して、ソース内のすべてのワーカー・ノードのcpu_cores数に等しくし、同じCPUおよびメモリーの宛先ワーカー・ノード数を保持します。
      • それぞれに16個のCPUコアを持つ3つのワーカー・ノードがある場合、3つのワーカー・ノードに16個のcpu_cores = 48を掛けます。
    • 同期ジョブごとに転送するファイルの量の値(-f)を決定します。

      • たとえば、大きなディレクトリと合計110万ファイルを含む2つのフォルダがある場合、2つのフォルダには、平均ファイル・サイズが160KBの~700Kファイルが含まれます。
      • 各ワーカー・ノードは、64GB = 6400000KBメモリー、8 OCPU= 16 cpu_coresで構成されており、cpu_core当たりのメモリーは64000000/16 = 400000KB/cpu_coreです。各ワーカー・ノードのメモリー= 64GB = 6400000KB。
      • -f、400000KB/160 = 25000の値を計算します。

(オプション)テスト環境

オンプレミスからOCIへの移行をシミュレートするために、次のデータセットを含むOCI File Storageファイル・システム(Ashburn)がオンプレミスのNAS共有として使用され、OCI File Storageファイル・システム(Phoenix)が宛先として使用されます。

どちらのリージョンも、Dynamic Routing Gatewayを使用してリモートでピアリングされます。

データ・セット・ディレクトリ 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

VMインスタンス:アッシュバーン・リージョンとフェニックス・リージョンの両方で、ワーカー・ノードとして3つの16個のcpu_core、64GBのメモリー、8Gbps帯域幅Linux9のVM、エグゼキュータ・ノードとして8個のcpu_core VMが使用されます。

すべてのインスタンスのTCP設定は次のとおりです:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
net.ipv4.tcp_window_scaling = 1

どちらのリージョン・インスタンスにも、「3つのワーカー・ノードを使用したFpsyncの実行によるオンプレミス・ファイル共有からOCIファイル・ストレージ・サービスへのデータの移行」の項の説明に従って、それぞれのOCIファイル・ストレージ・ファイル・システムがマウントされています。

次のfpsyncコマンドを実行します。XとYはfpsyncオプションです。

fpsync -v -n X -f Y -o "-lptgoD -v --numeric-ids -e ssh -C" \
 -w opc@worker-src-1 -w opc@worker-src-2 -w opc@worker-src-3 \
 -d /fpsync-fs/fpsync_wrkr /fpsync-fs/x_region_fpsync_src/ opc@worker-dest:/fpsync-fs/

次の表に、異なるXとY、rsync SSHおよび圧縮の組合せについて、225TBおよび100万ファイルのデータ転送を完了するためにfpsyncにかかった時間を示します。

fpsyncオプション ソースおよび宛先ワーカー・ノード上のnfs mountオプション ファイル・ストレージ・マウント・ターゲットのパフォーマンス・タイプ 所要時間
-n 30 -f 2000 -e ssh nconnect=16、nordirplus 3つの標準マウント・ターゲット、1:1のワーカー・ノードへのマッピング 237m28s
-n 48 -f 5000 -e ssh -C nconnect=16、nordirplus それぞれ1 HPMT 40のソースと宛先 163m38.887s
-n 60 -f 20000 nconnect=16、nordirplus 3つの標準マウント・ターゲット、1:1のワーカー・ノードへのマッピング 124m25.435s
-n 48 -f 400000 -e ssh -C nconnect=16、nordirplus 3つの標準マウント・ターゲット、1:1のワーカー・ノードへのマッピング 122m55.458s
-n 100 -f 200000 -e ssh nconnect=16、nordirplus 3つの標準マウント・ターゲット、1:1のワーカー・ノードへのマッピング 120m44s
-n 60 -f 200000 -e ssh nordirplusだけ、nconnect無し 3つの標準マウント・ターゲット、1:1のワーカー・ノードへのマッピング 118m41.393s
-n 60 -f 200000 -e ssh nconnect=16、nordirplus 3つの標準マウント・ターゲット、1:1のワーカー・ノードへのマッピング 118m3.845s
-n 48 -f 20000 -e ssh nconnect=16、nordirplus それぞれ1 HPMT 40のソースと宛先 113m34.011s
-n 48 -f 200000 nconnect=16、nordirplus それぞれ1 HPMT 40のソースと宛先 110m15.555s
-n 48 -f 200000 nconnect=16、nordirplus それぞれ1 HPMT 40のソースと宛先 109m3.472s

48を超える-nと20000を超える-fを組み合せると、リージョン間で転送時間が約2時間のパフォーマンスが似ていることがわかります。高パフォーマンスのマウント・ターゲット40 GBpsでも、所要時間が大幅に短縮されることはありません。

その結果、転送される実際のデータセットのサイズに応じて、ファイル・システムに対して複数の標準マウント・ターゲットまたは高パフォーマンスのマウント・ターゲットを選択できます。ソース・データセットが大容量ファイル(ファイル・サイズ>= 1M)で構成され、合計データセット・サイズが20TB以上である場合、高パフォーマンスのマウント・ターゲットが適しています。それ以外の場合、スケールアウト構成を持つ標準マウント・ターゲットは、必要なパフォーマンスとコスト効率を提供できます。

次のステップ

移行のニーズに関連する関連チュートリアルに進みます。データをOCIクラウド・ストレージ・サービスに移動するには:

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。