슬라이스 객체 다운로드

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

대용량 파일을 다운로드하는 한 가지 전략은 슬라이스 객체 다운로드입니다. 이 다운로드에서는 범위가 지정된 GET 요청이 동시에 수행되고, 사전 할당된 임시 대상 파일 안에 다운로드한 데이터가 저장됩니다. 모든 슬라이스의 다운로드가 완료되면 임시 파일의 이름이 대상 파일로 변경됩니다.

슬라이스 객체 다운로드는 네트워크 및 디스크 속도의 제한을 받지 않는 경우 훨씬 더 빨라질 수 있습니다. 그러나 슬라이스 객체 다운로드로 인해 디스크의 다양한 위치에서 다수의 쓰기가 발생하므로 이 다운로드 전략은 특히 많은 수의 슬라이스로 다운로드를 세분화할 때 탐색 시간이 느린 디스크의 성능을 저하시킬 수 있습니다. gcloud 및 gsutil과 같은 도구는 성능에 미치는 영향을 최소화하기 위해 생성할 수 있는 슬라이스 수의 기본값이 낮습니다.

슬라이스 객체 다운로드는 항상 슬라이스의 데이터 무결성을 확인하기 위해 빠른 구성 가능한 체크섬(CRC32C)을 사용해야 합니다. 슬라이스 객체 다운로드를 수행하려면 gsutil 및 gcloud 등의 도구에 다운로드를 수행하는 머신에 crcmod의 컴파일된 버전이 필요합니다. 컴파일된 crcmod를 사용할 수 없으면 gsutil 및 gcloud가 슬라이스되지 않은 객체 다운로드를 대신 수행합니다.

gcloud 지원

기본적으로 gcloud storage cp는 슬라이스 객체 다운로드를 사용 설정합니다. 다음 속성을 수정하여 gcloud가 슬라이스 객체 다운로드를 수행하는 방법과 시기를 제어할 수 있습니다.

  • storage/sliced_object_download_threshold: 슬라이스 객체 다운로드를 수행하는 데 필요한 최소한의 총 파일 크기입니다. 이 값을 0으로 설정하면 슬라이스 모든 객체 다운로드를 중지할 수 있습니다.

  • storage/sliced_object_download_max_components: 다운로드에 사용할 최대 슬라이스 수입니다. 0으로 설정하면 무제한이며 이 경우 슬라이스 수는 storage/sliced_object_download_component_size에 의해서만 결정됩니다.

  • storage/sliced_object_download_component_size: 각 다운로드 슬라이스의 대상 크기입니다. 총 파일 크기가 너무 커서 이 크기의 슬라이스를 다운로드할 때 storage/sliced_object_download_max_components에 설정된 것보다 더 많은 슬라이스가 필요할 경우 이 속성은 무시됩니다.

이름이 지정된 구성을 만들고 --configuration project-wide 플래그를 사용하여 명령별로 구성을 적용하거나 gcloud config set 명령어를 사용하여 모든 gcloud 명령어에 대해 구성을 적용하여 이러한 속성을 수정할 수 있습니다.

gcloud를 사용하여 슬라이스 객체 다운로드를 수행하는 경우 추가 로컬 디스크 공간이 필요하지 않습니다. 다운로드가 완료되기 전에 실패하면 gcloud 명령어를 다시 실행하여 실패한 슬라이스를 다시 시작합니다. 다운로드 시도 사이에 소스 객체가 변경된 경우를 제외하고 실패 전에 성공적으로 다운로드된 슬라이스는 다시 다운로드되지 않습니다.

임시 다운로드한 객체는 이름에 서픽스 _.gstmp가 있는 대상 디렉터리에 나타납니다.

gsutil 지원

기본적으로 gsutil cp는 슬라이스 객체 다운로드를 사용 설정합니다. 다음 매개변수를 수정하여 gsutil에서 슬라이스 객체 다운로드를 수행하는 방법과 시기를 제어할 수 있습니다.

  • sliced_object_download_threshold: 슬라이스 객체 다운로드를 수행하는 데 필요한 최소한의 총 파일 크기입니다. 이 값을 0으로 설정하면 슬라이스 모든 객체 다운로드를 중지할 수 있습니다.

  • sliced_object_download_max_components: 다운로드에 사용할 최대 슬라이스 수입니다. 0으로 설명하면 무제한이며, 이 경우 슬라이스 수는 sliced_object_download_component_size에 의해서만 결정됩니다.

  • sliced_object_download_component_size: 각 다운로드 슬라이스의 대상 크기입니다. 총 파일 크기가 너무 커서 이 크기의 슬라이스를 다운로드할 때 sliced_object_download_max_components에 설정된 것보다 더 많은 슬라이스가 필요할 경우 이 매개변수가 무시됩니다.

-o 전역 옵션을 사용하여 명령어별로 두 매개변수를 수정하거나 .boto 구성 파일을 편집하여 모든 gsutil 명령어에 대해 두 매개변수를 수정할 수 있습니다.

gsutil을 사용하여 슬라이스 객체 다운로드를 수행하는 경우 추가 로컬 디스크 공간이 필요하지 않습니다. 다운로드가 완료되기 전에 실패하면 gsutil 명령어를 다시 실행하여 실패한 슬라이스를 다시 시작합니다. 명령어를 다시 시도할 때 실패하기 전에 성공적으로 다운로드된 슬라이스는 다시 다운로드되지 않습니다.

임시 다운로드한 객체는 이름에 서픽스 _.gstmp가 있는 대상 디렉터리에 나타납니다.

JSON 및 XML 지원

JSON APIXML API 모두 범위 지정 GET 요청을 지원합니다. 즉, 두 API를 사용하여 슬라이스 객체 다운로드 전략을 구현할 수 있습니다.

다운로드 중에 변경되는 소스 객체로 인한 데이터 손상을 방지하려면 객체 슬라이스의 각 다운로드 요청에서 소스 객체의 세대 번호를 제공해야 합니다.