대용량 파일 관리

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

대용량 파일을 업로드하고 다운로드하는 방법을 안내합니다.
이 기능은 콘솔에서는 제공되지 않으며, API를 통해 설정할 수 있습니다.

5GB를 초과하는 파일은 여러 개의 세그먼트 오브젝트로 분할해 업로드해야 하며, 각 세그먼트의 최대 크기는 5GB입니다. 분할된 세그먼트는 매니페스트 파일을 통해 하나의 오브젝트처럼 관리할 수 있으며, 이 관리 방식에 따라 Dynamic Large Object (DLO)와 Static Large Object (SLO)로 나뉩니다.

  • DLO는 세그먼트 경로 정보를 메타데이터 헤더(X-Object-Manifest)에 저장하며, 매니페스트 파일 본문은 비어 있습니다.
  • SLO는 JSON 형식으로 구성된 세그먼트 목록을 매니페스트 파일에 포함합니다.

DLO와 SLO의 차이에 대한 자세한 내용은 OpenStack 공식 문서를 참조해 주십시오.

Dynamic Large Object (DLO)

DLO 방식으로 대용량 파일을 업로드하고 다운로드하는 방법을 설명합니다.

파일 업로드

DLO 방식으로 파일을 업로드하는 방법은 다음과 같습니다.

  1. 대용량 파일을 분할해 주십시오.
    • API에서는 파일 분할을 지원하지 않습니다.
    • 분할 파일 개수가 10,000개를 넘지 않도록, 분할 크기를 적절히 설정해 주십시오.
  2. 분할된 파일을 세그먼트 오브젝트로 업로드해 주십시오.
    • 세그먼트 오브젝트는 반드시 같은 컨테이너에 저장해야 합니다.
    • 세그먼트 오브젝트는 이름에는 공통된 prefix가 포함되어야 합니다.
    • 세그먼트 오브젝트는 이름의 정렬 순서대로 DLO로 연결됩니다.
      <예시> 0001->0002->0003
    • 세그먼트 오브젝트 업로드 방식은 일반 오브젝트 업로드와 동일합니다. (오브젝트 업로드 API 가이드 참조)
  3. DLO에 대한 매니페스트 파일을 업로드해 주십시오.
    • 매니페스트 파일은 세그먼트 오브젝트의 위치 정보를 담은 파일입니다.
    • 매니페스트 파일의 크기는 0입니다.
    • X-Object-Manifest 헤더를 포함해야 하며, 헤더 값은 세그먼트 오브젝트가 위치한 경로로 설정해야 합니다. 값의 끝에는 /가 포함되어야 합니다.
주의

매니페스트 오브젝트는 메타데이터만 포함하며, 실제 데이터는 세그먼트 오브젝트에 연결되어 있습니다.
따라서 매니페스트 오브젝트 또는 세그먼트 오브젝트 중 하나라도 삭제되면, 전체 오브젝트는 복구할 수 없습니다.

세그먼트 오브젝트 업로드 예시

세그먼트 오브젝트(1 byte 파일 3개)를 업로드하는 예시는 다음과 같습니다.

curl -i -X PUT \
  https://kr.archive.gov-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.gov-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.gov-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

매니페스트 파일 업로드 예시

매니페스트 파일을 업로드하는 예시는 다음과 같습니다.

curl -i -X PUT \
  https://kr.archive.gov-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 방식으로 업로드한 파일을 다운로드하려면 매니페스트 파일을 다운로드해야 합니다.

매니페스트 파일 다운로드 예시

매니페스트 파일을 다운로드하는 예시는 다음과 같습니다.

curl -i -X GET \
  https://kr.archive.gov-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)

SLO 방식으로 대용량 파일을 업로드하고 다운로드하는 방법을 설명합니다.

파일 업로드

SLO 방식으로 파일을 업로드하는 방법은 다음과 같습니다.

  1. 대용량 파일을 분할해 주십시오.
    • API에서는 파일 분할을 지원하지 않습니다.
    • 분할 파일 개수가 10,000개를 넘지 않도록, 분할 크기를 적절히 설정해 주십시오.
  2. 분할된 파일을 세그먼트 오브젝트로 업로드해 주십시오.
    • 세그먼트 오브젝트의 위치 및 이름에 대한 제약은 없습니다.
    • 세그먼트 오브젝트 업로드 방식은 일반 오브젝트 업로드와 동일합니다. (오브젝트 업로드 API 가이드 참조)
  3. SLO에 대한 매니페스트 파일을 업로드해 주십시오.
    • 매니페스트 파일은 세그먼트 오브젝트의 위치 정보를 담은 파일입니다.
    • 업로드 요청 시, 아래 쿼리 파라미터를 포함해 주십시오.
      ?multipart-manifest=put
      
    • 요청 바디에는 세그먼트 오브젝트 정보를 JSON 형식으로 포함해야 합니다.
주의

매니페스트 오브젝트는 메타데이터만 포함하며, 실제 데이터는 세그먼트 오브젝트에 연결되어 있습니다.
따라서 매니페스트 오브젝트 또는 세그먼트 오브젝트 중 하나라도 삭제되면, 전체 오브젝트는 복구할 수 없습니다.

세그먼트 오브젝트 업로드 예시

세그먼트 오브젝트(1 byte 파일 3개)를 업로드하는 예시는 다음과 같습니다.

curl -i -X PUT \
  https://kr.archive.gov-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.gov-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.gov-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

매니페스트 파일 업로드 예시

매니페스트 파일을 업로드하는 예시는 다음과 같습니다.

curl -i -X PUT \
  https://kr.archive.gov-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 방식으로 업로드한 파일을 다운로드하려면 매니페스트 파일을 다운로드해야 합니다.

매니페스트 파일 다운로드 예시

매니페스트 파일을 다운로드하는 예시는 다음과 같습니다.

curl -i -X GET \
  https://kr.archive.gov-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