このトピックでは、OssImport を使用してサードパーティー製ストレージプロダクト (または別の OSS ソース) から OSS にデータを移行する方法について説明します。

環境設定

OssImport は、スタンドアロンモードと分散モードの 2 つのモードで展開できます。
  • スタンドアロンモードは、データサイズが 30 TB 未満の小規模データ移行シナリオに適用されます。分散モードは、大規模なデータ移行シナリオに適用されます。
  • 分散モードは、大規模なデータ移行シナリオに適用されます。
たとえば、1 週間以内に 500 TB のデータを東京の AWS S3 バケットから中国 (杭州) の OSS バケットに移行する必要があるとします。 データを移行する前に、OssImport を分散モードでデプロイするように環境を次のように構成する必要があります。
  • OSS の有効化
    1. Alibaba Cloud アカウントを使用し、中国 (杭州) に OSS バケットを作成します。
    2. RAM コンソールで RAM ユーザーを作成し、その RAM ユーザーに OSS アクセス権を付与します。 RAM ユーザーの AccessKeyID と AccessKeySecret も安全に保管する必要があります。
  • ECS インスタンスの購入

    OSS バケットが作成される中国 (杭州) リージョンに、2 つの CPU と 4 GB のメモリを持つ ECS インスタンスを購入します。 データ移行後、ECS インスタンスを解放する場合は、インスタンスを購入するときの請求方法に、[従量課金] を選択することを推奨します。

    必要な ECS インスタンスの数は、"X/Y/(Z/100)" のように計算できます。 この式で、X は移行が必要なデータのサイズ、Y は移行に必要な日数、Z は 1 つの ECS インスタンスの転送速度 (MB/秒)を表しています。つまり、1 日に 1 つの ECS インスタンスで移行できるデータ量 (Z/100 として計算)を表します。 ECS インスタンスの転送速度が 200 MB/秒であるとします (つまり、ECS インスタンスは毎日 2 TB のデータを移行できます)。 すると、合計で 36 の ECS インスタンスを購入する必要があります (500/7/2 から計算)。

  • OssImport の設定

    この例の大規模なデータ移行要件では、OssImport を ECS インスタンスに分散モードで展開する必要があります。 conf/job.cfgconf/sys.properties、および同時実行制御などの分散モードに関する設定情報については、「アーキテクチャと設定」をご参照ください。 OssImport のダウンロード方法や、OssImport 構成のトラブルシューティングなど、OssImport の分散デプロイメントの詳細については、「分散デプロイメント」を参照してください。

手順

次のように OssImport を分散モードで使用して、AWS S3 から OSS にデータを移行します。
ECS インスタンスで OssImport を分散モードでデプロイした後、OssImport を使用して 日本 (東京) リージョンの AWS S3 バケットから中国 (杭州) の ECS インスタンスにデータをダウンロードします。 インターネット経由でデータをダウンロードすることを推奨します。 OssImport を使用して、ECS インスタンスから中国 (杭州) の OSS バケットにデータをアップロードします。 イントラネット経由でデータをアップロードすることを推奨します。


  1. 時刻 T1 より前に AWS S3 の履歴データを完全に移行します。 詳しくは、「分散デプロイメント」の [展開中] のセクションを参照してください。

    T1 は UNIX のタイムスタンプ、つまり 1970 年 1 月 1 日の UTC 00:00 から経過した秒数で、date +%s コマンドを実行して取得できます。

  2. OSS コンソールで、 「Back-to-Origin」を有効にします。対象のバケットの場合は、AWS S3 のアクセス URL をオリジン URL に設定します。
  3. AWS S3 上のすべての読み取りおよび書き込み操作を OSS に切り替え、時間を記録します (T2)。

    このように、T1 より前のすべての履歴データは OSS バケットから直接読み取られ、T1 と T2 の間に格納されたデータは OSS のミラーリング Back-to-Origin 機能を通じて AWS S3 から読み取られます。

    T2 の後、新しいデータはすべて OSS に書き込まれ、新しいデータは AWS S3 に書き込まれません。

  4. 構成ファイル job.cfg の項目 importSince=T1 を変更してから、再度、移行タスクを開始して、T1 と T2 の間に追加されたデータを移行します。
    • 手順 4 の後、すべての読み取りおよび書き込み操作は対象の OSS バケットで実行されます。 AWS S3 に保存されているデータは履歴データであり、必要に応じて保持または削除できます。
    • OssImport はデータの移行と検証のみを行い、削除はしません。

データ移行中には、さまざまなコストが発生します。ECS インスタンスのコスト、トラフィックコスト、ストレージコスト、時間に依存するコストなどが発生します。 また、移行するデータのサイズが 1TB を超えると、移行に時間がかかるため、ストレージコストが増加します。 ただし、ストレージコストは通常、ネットワークトラフィックおよび ECS インスタンスに関連するコストよりも低く保たれます。 より多くの ECS インスタンスを使用することで、移行に必要な時間を短縮できます。

参考資料

OssImport の詳細については、以下のドキュメントをご参照ください。

「分散デプロイメント」

「アーキテクチャと設定」

「データの移行」

「FAQ」