Object Storage Service (OSS) は、オブジェクトをアップロードするための複数の方法を提供しています。サイズが 5 GB を超える大容量オブジェクトは、アップロードに失敗したり、長時間を要したりする場合があります。このようなシナリオでは、マルチパートアップロード、再開可能なアップロード、ossbrowser、または ossutil を使用して大容量オブジェクトをアップロードできます。本トピックでは、これらのアップロード方法を使用して大容量オブジェクトをアップロードする方法について説明します。
アップロード方法
OSS には、サイズが 0 バイトから 48.8 TB までのオブジェクトをアップロードできます。大容量オブジェクトや複数のオブジェクトを一度にアップロードする場合は、別のアップロード方法を使用できます。これらの方法は、次のようなシナリオで役立ちます。
アップロードするオブジェクトのサイズが 5 GB を超えており、OSS コンソール、シンプルアップロード、フォームアップロード、および追加アップロードではアップロードできません。
アップロードするオブジェクトのサイズは 5 GB 未満ですが、ネットワークパフォーマンスが低いために接続タイムアウトや接続切断が頻繁に発生し、アップロードが失敗することがよくあります。
方法1:マルチパートアップロードまたは再開可能なアップロード
マルチパートアップロードと再開可能なアップロードは、次のシナリオに適しています。
大容量オブジェクト:アップロードするオブジェクトのサイズが 5 GB を超える場合。
ストリーミングアップロード:ビデオ監視用のクラウドビデオ録画アプリケーションなど、オブジェクトのサイズがまだ未定の状況でオブジェクトのアップロードを開始する場合。
ネットワーク接続が不安定な場合:ネットワークパフォーマンスが低い場合は、再開可能なアップロードを推奨します。再開可能なアップロードを使用すると、アップロードに失敗したパートのみをアップロードできます。このアップロード方法は、中断前にアップロードされたパートを再アップロードする必要がないため、アップロードが頻繁に中断される状況でより効率的です。
アップロードの高速化:アップロードするオブジェクトが大きい場合、オブジェクトのパートを並行してアップロードすることで、アップロードプロセスを高速化できます。
詳細については、「マルチパートアップロード」および「再開可能なアップロード」をご参照ください。
方法2:ossbrowser
ossbrowser を使用してオブジェクトをアップロードする際は、次の点にご注意ください。
STS トークンを使用して ossbrowser にログインできます。
シンプルポリシー機能を使用するには、RAM の設定権限を持つ RAM ユーザーのアクセスキーペアを使用して ossbrowser にログインする必要があります。
多数のオブジェクトをアップロードする場合は、同時アップロードタスクの数を増やしてアップロードを高速化できます。
デフォルトでは、ossbrowser はマルチパートアップロードと再開可能なアップロードを使用してオブジェクトをアップロードします。アップロードするオブジェクトのサイズは 48.8 TB を超えることはできません。
詳細については、「ossbrowser 2.0」をご参照ください。
方法3:ossutil
ossutil を使用してオブジェクトをアップロードする際は、次の点にご注意ください。
ossutil の
cpコマンドを使用して大容量オブジェクトをアップロードできます。--bigfile-thresholdオプションを設定して、同時マルチパートアップロードの対象となるファイルサイズのしきい値を指定できます。1つ以上の大容量オブジェクトをアップロードする場合、
-jobsオプションと-parallelオプションを設定して同時タスクの数を制御し、アップロードパフォーマンスを最適化できます。大容量オブジェクトを含む多数のオブジェクトを OSS にアップロードする場合は、ossimport を使用することもできます。
一度にアップロードするオブジェクトの数が少ない場合は、ossutil の使用を推奨します。
詳細については、「オブジェクトのアップロード」をご参照ください。
トラブルシューティング
このセクションでは、大容量オブジェクトをアップロードする際に発生する可能性のある一般的な問題と、そのトラブルシューティング方法について説明します。
PutObject を使用して大容量オブジェクトをアップロードすると、PutObject が失敗することがあります。原因として次の要因が考えられます。
アップロードするオブジェクトのサイズが 5 GB を超えています。ossutil を使用して、オブジェクトをパート単位でアップロードしてください。
アップロードするオブジェクトのサイズは 5 GB 未満です。ネットワーク状態が悪いため、小さいオブジェクトは問題なくアップロードされますが、より大きいオブジェクトをアップロードすると、リクエストが応答しないままタイムアウトエラーになります。これは、サーバーの最大伝送単位 (MTU) が大きい値に設定されていることが原因として考えられます。ECS インスタンスで
netstat -iを実行して、現在の MTU 設定を確認します。次の図は、内部ネットワークと外部ネットワークのネットワークインターフェイスカードのデフォルトの MTU が 1500 であることを示しています。
MTU をより小さい値に変更します。たとえば、Linux で
ip link set dev eth0 mtu 1470を実行して、前の図の eth0 の MTU を 1470 に変更できます。MultipartUpload オペレーションまたは ossutil ツールを使用します。
単一の大容量オブジェクトを並行してアップロードできますか。
ossutil を使用して大容量オブジェクトをアップロードする場合、
--bigfile-threshold、-jobs、および-parallelオプションを指定して、オブジェクトを並行してアップロードできます。OSS API または OSS SDK の MultipartUpload オペレーションを使用する場合は、オブジェクトを並行してアップロードするコードを記述する必要があります。一部の OSS SDK では、OSS SDK for Java の taskNum や OSS SDK for Python の num_threads などのパラメーターを使用して、同時実行スレッドの数を制御できます。