大容量ファイル管理(DLO/SLO)

Prev Next

Classic/VPC環境で利用できます。

大容量ファイルをアップロードしてダウンロードする方法について説明します。大容量ファイルは複数の Segment Objectに分割して同時にアップロードできます。保存可能な Segmentの最大サイズは5GBで、5GBを超えるオブジェクトは必ず分割してアップロードします。

大容量ファイル管理方式は、マニフェストファイルでセグメントオブジェクトを管理する方式により、Dynamic Large Object(DLO)、Static Large Object(SLO)に分けられます。マニフェストファイルは、セグメントオブジェクトの位置情報が保存されているファイルを意味し、マニフェストファイルを使用してセグメントオブジェクトに1つのオブジェクトのようにアクセスできます。DLOのマニフェストファイルは空で、X-Object-Manifestメタデータヘッダーがあり、このヘッダーにすべてのセグメントオブジェクトが共通して持つ名前(パス)があります。SLOのマニフェストファイルには、JSON形式のすべてのセグメントオブジェクトの名前のリストがあります。DLOと SLOの違いについての説明は OpenStack Documentationをご参照ください。

Dynamic Large Object(DLO)

Dynamic Large Objectアップロード/ダウンロード方法について説明します。

DLOのアップロード

DLO方式を使用してオブジェクトをアップロードする方法は以下のとおりです。

  1. 大容量ファイルを分割します。
    • APIではファイル分割をサポートしていません。
    • 分割したファイルのサイズは、分割したファイルの数が10,000個を超えないサイズに設定します。
  2. 分割されたファイルをセグメントオブジェクトにアップロードします。
    • セグメントオブジェクト名は必ず同じコンテナに位置させます。
    • セグメントオブジェクト名は名前に同じ prefixを付けます。
    • セグメントオブジェクト名の名前がソートされた順序に応じて DLOに連結します。例) 0001->0002->0003
    • セグメントオブジェクトをアップロードする方法は、通常のオブジェクトをアップロードする方法と同じです。
  3. DLOに対するマニフェストファイルをアップロードします。
    • マニフェストファイルは、セグメントオブジェクトの位置情報が保存されたファイルです。
    • マニフェストファイルのサイズは0です。
    • X-Object-Manifestヘッダが含まれている必要があり、ヘッダの値は Segment Objectの位置です。最後に「/」値を設定します。
注意

マニフェストオブジェクトはそのオブジェクトのメタデータを持っており、実際のデータはセグメントオブジェクトにリンクされています。したがって、セグメントオブジェクトまたはマニフェストオブジェクトのいずれかを削除する場合、オブジェクトは復旧できません。

セグメントオブジェクトのアップロード(1byteファイル3個)

セグメントオブジェクトをアップロードする例は以下のとおりです。

curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/DLO/dlo-object/0001 \
  -H 'X-Auth-Token: $token' \
  --data-binary '1'
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 06:20:35 GMT
Content-Length: 0
Etag: c4ca4238a0b923820dcc509a6f75849b
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx3f192e9948504e689285d-005ba09932
X-Openstack-Request-Id: tx3f192e9948504e689285d-005ba09932
Date: Tue, 18 Sep 2018 06:20:34 GMT
curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/DLO/dlo-object/0002 \
  -H 'X-Auth-Token: $token' \
  --data-binary '2'
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 06:23:38 GMT
Content-Length: 0
Etag: c81e728d9d4c2f636f067f89cc14862c
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx22f749319f844f3ebb0dc-005ba099e9
X-Openstack-Request-Id: tx22f749319f844f3ebb0dc-005ba099e9
Date: Tue, 18 Sep 2018 06:23:37 GMT
curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/DLO/dlo-object/0003 \
  -H 'X-Auth-Token: $token' \
  --data-binary '3'
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 06:24:04 GMT
Content-Length: 0
Etag: eccbc87e4b5ce2fe28308fd9f2a7baf3
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx016a1cb31a684589b2a1d-005ba09a03
X-Openstack-Request-Id: tx016a1cb31a684589b2a1d-005ba09a03
Date: Tue, 18 Sep 2018 06:24:03 GMT

DLOマニフェストファイルのアップロード

作成されたバケットにDLOマニフェストファイルをアップロードする方法は、以下のとおりです。

curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/DLO/dlo \
  -H 'X-Object-Manifest: DLO/dlo-object/' \
  -H 'X-Auth-Token: $token' \
  --data-binary ''
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 06:32:30 GMT
Content-Length: 0
Etag: d41d8cd98f00b204e9800998ecf8427e
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx086882957a56457fb39f9-005ba09bfd
X-Openstack-Request-Id: tx086882957a56457fb39f9-005ba09bfd
Date: Tue, 18 Sep 2018 06:32:29 GMT

DLOファイルのダウンロード

アップロードされた DLOファイルをダウンロードするには、マニフェストファイルをダウンロードします。マニフェストファイルをダウンロードする例は以下のとおりです。

curl -i -X GET \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/DLO/dlo \
  -H 'X-Auth-Token: $token' \
  --data-binary ''
HTTP/1.1 200 OK
Content-Length: 3
Etag: "8f481cede6d2ddc07cb36aa084d9a64d"
Accept-Ranges: bytes
Last-Modified: Tue, 18 Sep 2018 06:32:30 GMT
X-Object-Manifest: DLO/dlo-object/
X-Timestamp: 1537252349.91188
Content-Type: application/x-www-form-urlencoded
X-Trans-Id: txca733836612d46978fa6d-005ba09c2c
X-Openstack-Request-Id: txca733836612d46978fa6d-005ba09c2c
Date: Tue, 18 Sep 2018 06:33:16 GMT

123

Static Large Object(SLO)

Static Large Object方式について説明します。

SLOアップロード

SLO方式を使用してオブジェクトをアップロードする方法は以下のとおりです。

  1. 大容量ファイルを分割します。
    • APIでのファイル分割をサポートしていません。
    • 分割したファイルのサイズは、分割したファイルの数が10,000個を超えないサイズに設定します。
  2. 分割されたファイルはセグメントオブジェクトとしてアップロードしてください。
    • セグメントオブジェクトの位置および名前に関する制約はありません。
    • セグメントオブジェクトのアップロード方式は、通常のオブジェクトのアップロードと同じです。
  3. SLOに対するマニフェストファイルをアップロードします。
    • マニフェストファイルは、セグメントオブジェクトの位置情報を持つファイルです。

    • アップロードのリクエストの際は、queryパラメータで以下の内容を含めます。

      ?multipart-manifest=put
      

      リクエスト bodyにセグメントオブジェクトの情報を JSONフォーマットで含めます。

注意

マニフェストオブジェクトはそのオブジェクトメタデータを持っており、実際のデータはセグメントオブジェクトにリンクされています。したがって、セグメントオブジェクトまたはマニフェストオブジェクトのいずれかを削除する場合、オブジェクトは復旧できません。

セグメントオブジェクトのアップロード(1byteファイル3個) セグメントオブジェクトをアップロードする例は以下のとおりです。

curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/SLO/slo-object/0001 \
  -H 'X-Auth-Token: $token' \
  --data-binary '1'
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 06:20:35 GMT
Content-Length: 0
Etag: c4ca4238a0b923820dcc509a6f75849b
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx3f192e9948504e689285d-005ba09932
X-Openstack-Request-Id: tx3f192e9948504e689285d-005ba09932
Date: Tue, 18 Sep 2018 06:20:34 GMT
curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/SLO/slo-object/0002 \
  -H 'X-Auth-Token: $token' \
  --data-binary '2'
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 06:23:38 GMT
Content-Length: 0
Etag: c81e728d9d4c2f636f067f89cc14862c
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx22f749319f844f3ebb0dc-005ba099e9
X-Openstack-Request-Id: tx22f749319f844f3ebb0dc-005ba099e9
Date: Tue, 18 Sep 2018 06:23:37 GMT
curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/SLO/slo-object/0003 \
  -H 'X-Auth-Token: $token' \
  --data-binary '3'
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 07:05:30 GMT
Content-Length: 0
Etag: eccbc87e4b5ce2fe28308fd9f2a7baf3
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx3ed5e77d00a14631b96f4-005ba0a3b9
X-Openstack-Request-Id: tx3ed5e77d00a14631b96f4-005ba0a3b9
Date: Tue, 18 Sep 2018 07:05:29 GMT

SLOマニフェストファイルのアップロード

SLOマニフェストファイルをアップロードする例は以下のとおりです。

curl -i -X PUT \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/SLO/slo?multipart-manifest=put \
  -H 'X-Auth-Token: $token' \
  --data-binary \
	'[{"path": "/SLO/slo-object/0001"},{"path": "/SLO/slo-object/0002"},{"path": "/SLO/slo-object/0003"}]'
HTTP/1.1 201 Created
Last-Modified: Tue, 18 Sep 2018 07:13:29 GMT
Content-Length: 0
Etag: "8f481cede6d2ddc07cb36aa084d9a64d"
Content-Type: text/html; charset=UTF-8
X-Trans-Id: txa8c0de4034be4bd0b85b4-005ba0a598
X-Openstack-Request-Id: txa8c0de4034be4bd0b85b4-005ba0a598
Date: Tue, 18 Sep 2018 07:13:28 GMT

SLOファイルのダウンロード

アップロードされた SLOファイルをダウンロードするには、マニフェストファイルをダウンロードします。マニフェストファイルをダウンロードする例は以下のとおりです。

curl -i -X GET \
  https://kr.archive.ncloudstorage.com/v1/AUTH_{project_id}/SLO/slo \
  -H 'X-Auth-Token: $token' \
HTTP/1.1 200 OK
Content-Length: 3
Accept-Ranges: bytes
Last-Modified: Tue, 18 Sep 2018 07:13:29 GMT
Etag: "8f481cede6d2ddc07cb36aa084d9a64d"
X-Timestamp: 1537254808.62092
X-Static-Large-object: True
Content-Type: application/x-www-form-urlencoded
X-Trans-Id: txb67bc8f4ade24a80a64a7-005ba0a663
X-Openstack-Request-Id: txb67bc8f4ade24a80a64a7-005ba0a663
Date: Tue, 18 Sep 2018 07:16:51 GMT

123