本ページでは、主に OssImport の一般的な適用方法と代表的な要件の実装方法について説明します。
OssImport の概要
OssImport には、スタンドアロンモードと分散モードの 2 つの展開モードがあります。
- データサイズが 30 TB 未満の小規模なデータ移行は、スタンドアロンモードで十分です。
- 大規模データサイズの移行には、分散モードを推奨します。
OssImport はマスターワーカーの分散アーキテクチャに基づいています。 ワーカーはトラフィック制限機能を提供しています。 設定ファイル sys.properties
の workerMaxThroughput (KB/s)
(KB / s) 項目を変更することで、トラフィック制限を実装できます。 この設定項目はすぐには有効になりません。 設定項目を有効にするために、設定の変更後にサービスを再起動します。
分散展開モードで、各ワーカーの $OSS_IMPORT_WORK_DIR/conf にある sys.properties を変更してからサービスを再起動します。
crontab
を使用して sys.properties
の時限変更を実装してから、サービスを再起動して時間別のトラフィック制限を実装します。
ジョブを送信する前にワーカーリストを決定します。 現在の OSS はワーカーの動的追加をサポートしていません。
OssImport は移行を伴わないデータ検証をサポートしています。 ジョブ構成ファイル job.cfg
または local_job.cfg
では、構成項目 jobType
は import
ではなく audit
です。 その他の設定項目はデータ移行と同じです。
データ移行の増分モードとは、データ移行ジョブの開始後にまず完全移行を実行し、次に設定された間隔で自動的に増分データ移行操作を実行するプロセスを指します。 最初のデータ移行ジョブは完全移行です。 ジョブは送信直後に開始されます。 それ以降のデータ移行ジョブは、設定された間隔ごとに 1 回開始されます。 データ移行の増分モードは、データのバックアップとデータの同期に適用されます。
増分モードには 2 つの構成項目があります。
- job.cfg の
isIncremental
は、増分移行モードが有効になっているかどうかを示します。true
は増分モードが有効であることを、false
は、増分モードが無効になっていることを意味します。 既定値は false です。 - job.cfg の
incrementalModeInterval
は、増分モードの同期間隔を秒単位で指定します。設定は、isIncremental が true に設定されている場合に使用されます。
設定可能な最小値は900
秒です。3600
秒よりも小さい値に設定することは推奨しません。大量のリクエストが無駄になり、追加のシステムオーバーヘッドが発生してしまうからです。
指定したフィルタ条件を満たすオブジェクトのみが移行されます。 OssImport は、prefix
とlast modified time
の指定をサポートしています。
- job.cfg の
srcPrefix
設定では、移行するオブジェクトのプレフィックスを指定します。 既定では空です。srcType=local
の場合は、ローカルディレクトリをフルパスで入力し、入力値を/
で区切り、入力値を/
で終了させます c:/example/ または/data/example/
など)。srcType
がoss
、qiniu
、bos
、ks3
、youpai
、またはs3
の場合は、data/to/oss/
のように、バケット名を除いて、同期するオブジェクトのプレフィックスを入力します。 すべてのオブジェクトのsrcPrefix
は空に設定する必要があります。
- job.cfg の
importSince
オプションでは、移行オブジェクトの最終更新日時を指定します。 整数かつ秒単位で表されます。importSince 設定は、UNIX タイムスタンプ形式です。つまり、1970 年 1 月 1 日の 00:00 UTC からの秒数です。
date +%s
コマンドにより、値を取得できます。 既定値値は "0" で、すべてのデータを移行することを示します。 増分モードのデータ移行は、最初の完全移行でのみ有効です。 非増分モードは、移行ジョブ全体に対して有効です。- オブジェクトの
LastModified Time
がimportSince
以前の場合、オブジェクトは移行されます。 - オブジェクトの
LastModified Time
がimportSince
より後の場合は、オブジェクトは移行されません。
- オブジェクトの
一般的なシナリオ
次の手順に従って、他のストレージサービスから OSS にシームレスに切り替えることができます。
- 完全移行。 この時点では、ビジネスはまだサードパーティー製のストレージサービスで実行されています。 データ移行 T1 の開始時間を記録します。 時間は UNIX のタイムスタンプ形式、つまり 1970 年 1 月 1 日の UTC 00:00 からの秒数であることにご注意ください。
date +%s
コマンドにより値を取得できます。 - OSS イメージのオリジン検索機能を開きます。 データ移行が完了したら、OSS コンソールでバケットのイメージのオリジン取得機能を設定します。
- 読み取り / 書き込みを OSS に切り替えます。 この時点で、T1 より前のデータは OSS から読み取られ、T1 より後のデータはイメージオリジン検索を使用してサードパーティーサービスから読み取られ、新しいデータは OSS に完全に書き込まれます。
- 増分データ移行。 構成ファイル (
job.cfg
またはlocal_job.cfg
) では、増分移行ジョブの設定項目はimportSince=T1
です。 増分移行は T2 で完了します。説明 増分データ移行は、データ移行の増分モードではありません。 - サードパーティ製のストレージを削除します。 T2 以降は、業務の読み書きはすべて OSS で行われ、サードパーティーのストレージは履歴データのコピーにすぎません。 サードパーティストレージを保持するか削除するかは、ユーザーの判断で決定できます。 OssImport はデータの移行と検証を行う役割があります。 データは削除されません。
ローカルデータを OSS に移行するためのツール
- 30 TB 未満のローカルデータファイルを移行する場合、またはストレージサービスをローカルファイルシステムにマウントする場合は、ossutil の使用を推奨します。 このツールは簡単で使いやすく便利です。 OssUtil はオブジェクトレベルでの増分アップロードをサポートしており、
-u/--update
および--snapshot-path
オプションを介して機能を実装します。 詳細な説明については、ossutil help cp
コマンドを実行してご確認ください。 - 大規模データの移行には、OssImport の分散バージョンを推奨します。
説明 ローカルデータの増分移行中、Windows の cp と mv、Linux の
-t
または-a
オプション付きの mv と rsync など、ファイルシステムの一部の操作では、オブジェクトの最終更新日時は変更されません。 これらの操作によるデータ変更は検出されず、OSS にも同期されません。
- OssImport を使用する場合
- 異なるリージョンの OSS 間におけるデータ移行のためのクロスリージョンレプリケーション機能を追加する場合、コンソールで設定することができます。
- セキュリティ上の理由から、あるリージョンがクロスリージョンレプリケーションをまだサポートしていない場合は、OssImport を使用することでデータを移行またはバックアップすることができます。
- 同じリージョン内の異なるアカウントとバケット間でのデータ移行。
- OSS 内で直接データを移行するため、Alibaba Cloud イントラネットを推奨します。つまり、
internal
の ECS または OSS ドメイン名を使用します。
- OSS 内での直接データ移行の料金
internal
のドメイン名を使用する場合、トラフィック料金は発生しませんが、リクエストとストレージ料金を支払う必要があります。internal
でドメイン名を使用しなかった場合は、トラフィック料金が発生する可能性があります。
- 推奨されない使用例
- クロスリージョンレプリケーションサービスがアクティブ化されているリージョン間でのデータ移行。
- 増分モードにより OSS 間でオブジェクトに対する変更を同期する場合、OssImport はオブジェクト変更の同期 (put/append/multipart) のみをサポートし、読み取りおよび削除操作の同期はサポートしません。 データの同期が特定の SLA によって適時に行われることは保証されていません。 このオプションを選択するときは注意してください。 アップロードコールバックの使用を推奨しています。
移行手順
クラウド (非ローカル) から OSS にデータを移行する際、帯域幅リソースが不十分な場合は、移行用の従量課金の ECS インスタンスを購入することを推奨します。 ECS の設定
- 課金方法に [従量課金] を選択します。
- OSS の該当するリージョンを選択します。
- 帯域幅ピークは100 MB を選択します。
移行ジョブ構成で、targetDomain を internal を含むイントラネットドメイン名に設定します。 ソースエンドも OSS の場合は、srcDomain
も internal
を含むイントラネットドメイン名に設定します。 これにより、OSS ソースドメイン名からのダウンロードにコストがかからず、OSS のアクセスに対してのみ料金が請求されます。
HTTP データ移行ジョブで設定するパラメーター:
- job.cfgで、
srcType
をsrcType=http
に設定します。 大文字と小文字が区別されます。 - job.cfg の
httpListFilePath
には、c:/example/http.list
、/root/example/http.list
などの HTTP アドレス一覧ファイルへの絶対パスを指定します。 完全な HTTP リンクは127.0.0.1/aa/bb.jpg
です。 分割メソッドが異なっていると、アップロード後に OSS 上のオブジェクトパスが異なる可能性があります。http://127.0.0.1/aa/ bb.jpg # The first line http://127.0.0.1/ aa/bb.jpg # The second line
最初の行が OSS にインポートされた後のオブジェクト名は
destPrefix + bb.jpg
で、2 行目のオブジェクト名はdestPrefix + aa/bb.jpg
です。 httpPrefixColumn パラメーターは、ドメイン名の列を指定します。 前述の127.0.0.1/aa/
または127.0.0.1/
など、最初の列が既定で適用されます。 relativePathColumn は、前述のbb.jpg
やaa/bb.jpg
など、OSS 内のオブジェクト名を指定します。 オブジェクトに複数の列がある場合、次のようになります。
次のように設定を行う必要があります。: httpPrefixColumn=1 , relativePathColumn=4 。http://127.0.0.1/aa/ bb/cc dd/ee ff.jpg
- job.cfg 内の
destAccessKey
、destSecretKey
、destDomain
およびdestBucket
の設定項目。
taskObjectCountLimit
: 各タスクの最大オブジェクト数。 既定値は 10,000 です。taskObjectSizeLimit
: 各タスクの最大データサイズ。 マスターがタスクを分割している時、それぞれの HTTP オブジェクトがソースから取得したオブジェクトの大きさである場合、各オブジェクトには HTTP リクエストのオーバーヘッドが 1 つずつあるため、タスク割り当ての効率に悪影響を及ぼし、タスクの並行処理および移行の効率性が低下します。そのため、このパラメーターは HTTP データの移行には無効です。Domain name
:httpListFilePath
によって指定されたオブジェクトの最初の列。同じドメイン名を持つ連続ジョブはtaskObjectCountLimit
パラメーターに従って分割され、異なるドメイン名を持つ連続ジョブは異なるタスクに分割されることで、接続をより効率的に再利用できるようになります。 例:http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test1.txt http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test2.txt http://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test3.txt http://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test4.txt
taskObjectCountLimit
taskObjectCountLimit 値が 2 より大きい場合、ジョブは 2 つのタスクに分割されますが、以下の条件では、ジョブは 4 つのタスクに分割されます。http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test1.txt http://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test3.txt http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/ import/test2.txt http://mingdi-bj.oss-cn-beijing.aliyuncs.com/ import/test4.txt
そのため、
httpListFilePath
で指定された HTTP アドレス一覧オブジェクトは、まずドメイン名でソートされます。
次のパラメーターの設定はネットワークトラフィックに関連しています。
- sys.properties では、
workerTaskThreadNum
パラメーターはワーカーによる並行処理のジョブ数を示します。 ネットワーク品質が悪い場合、または同時実行性が高い場合は、多数のタイムアウトエラーが発生する可能性があります。 この時点で、同時実行性を低くし、設定項目を変更してサービスを再開することを推奨します。 - sys.properties では、
workerMaxThroughput (KB / s)
パラメーターはワーカーのトラフィック上限を示します。 ソース側の帯域幅調整やネットワークの制限外トラフィックの制限など、トラフィックを制限する場合は、このパラメーターの値をマシンで許可されている最大ネットワークトラフィックよりも小さくし、ビジネス要件に基づいて評価する必要があります。 - job.cfg の
taskObjectCountLimit
パラメーターは、各タスクのオブジェクトの最大数を示します。 既定値は 10,000 です。 このパラメーターは、タスクの数に影響します。 タスクの数が少なすぎると、並行タスクの効率性が低下する可能性があります。 - job.cfg の
taskObjectSizeLimit
は、各タスクの最大データサイズを示します。 既定値は 1 GB です。 このパラメーターは、タスクの数に影響します。 タスクの数が少なすぎると、並行タスクの効率が低下する可能性があります。説明- 移行を開始する前に、設定ファイルのパラメーターを決定することを推奨します。
- sys.properties 内のパラメーターに対する変更は、移行サーバーを再起動した後に有効になります。
- job.cfg ジョブが送信された後は、ジョブの設定パラメーターを変更することはできません。