서비스와 함께 블록 저장소 볼륨 사용하기

Snowflake는 컨테이너화된 애플리케이션을 위해 Snowflake 내부 스테이지, 로컬 리포지토리, 메모리 저장소 볼륨, 블록 리포지토리 볼륨의 저장소 볼륨 유형을 지원합니다.

서비스 사양에서 블록 저장소 지정하기

블록 저장소를 사용하는 서비스를 생성하려면 다음과 같이 서비스 사양에 필요한 구성을 제공합니다.

  1. spec.volumes 필드를 지정하여 생성할 블록 저장소 볼륨을 정의합니다.

    volumes:
      - name: <name>
        source: block
        size: <size in Gi>
        blockConfig:                             # optional
          initialContents:
            fromSnapshot: <snapshot name>
          iops: <number-of-operations>
          throughput: <MiB per second>
    
    Copy

    다음 필드는 필수입니다.

    • name: 볼륨의 이름입니다.

    • source: 볼륨의 유형입니다. 블록 저장소 볼륨의 경우 값은 block 입니다.

    • size: 블록 저장소 용량을 바이트 단위로 측정한 값입니다. 값은 항상 Gi 단위 접미사를 사용하여 지정된 정수여야 합니다. 예를 들어, 5Gi5*1024*1024*1024 바이트를 의미합니다. 크기 값의 범위는 1Gi ~ 16384Gi 입니다.

    선택 사항 필드는 다음과 같습니다.

    • blockConfig.initialContents.fromSnapshot: 다른 볼륨에서 가져온 스냅샷 의 이름(다음 섹션에서 설명)을 지정합니다. 스냅샷은 블록 볼륨을 초기화하는 데 사용됩니다.

      스냅샷 이름은 TUTORIAL_DB.DATA_SCHEMA.MY_SNAPSHOT 같은 정규화된 오브젝트 식별자 일 수 있습니다. 또한, 스냅샷 이름은 서비스의 데이터베이스와 스키마를 기준으로 확인됩니다. 예를 들어, TUTORIAL_DB.DATA_SCHEMA 에서 서비스를 생성한 경우 fromSnapshot: MY_SNAPSHOTfromSnapshot: TUTORIAL_DB.DATA_SCHEMA.MY_SNAPSHOT 과 동일합니다.

    • blockConfig.iops: 초당 지원되는 최대 입력/출력 작업 수를 지정합니다. 작업당 데이터 크기는 256KiB로 제한됩니다.

      • AWS에서 지원되는 범위는 3,000~16,000이며 기본값은 3,000입니다.

      • Azure에서 지원되는 범위는 3,000~80,000이며 기본값은 3,000입니다.

    • blockConfig.throughput: 볼륨에 프로비저닝할 최대 처리량(MiB/초)을 지정합니다.

      • AWS에서 지원되는 범위는 125~1,000이며 기본값은 125입니다.

      • Azure에서 지원되는 범위는 125~1,200이며 기본값은 125입니다.

    예:

    volumes:
      - name: vol-1
        source: block
        size: 200Gi
        blockConfig:
          initialContents:
            fromSnapshot: snapshot1
          iops: 3000
          throughput: 125
    
    Copy
  2. spec.containers.volumeMount 필드를 지정하여 애플리케이션 컨테이너에서 블록 저장소 볼륨을 마운트할 위치를 설명합니다. 이 필드에 제공하는 정보는 지원되는 모든 저장 볼륨에 동일하게 적용됩니다.

액세스 제어 요구 사항

기존 스냅샷(사양에 fromSnapshot 이 있음)을 사용하여 볼륨을 초기화하려면 서비스의 소유자 역할에 스냅샷에 대한 USAGE 권한이 있어야 합니다.

서비스의 소유자 역할에는 스냅샷이 포함된 데이터베이스 및 스키마에 대한 USAGE 권한도 있어야 합니다.

스냅샷 관리하기

다음과 같이 블록 저장소 볼륨의 스냅샷을 찍은 후 나중에 백업을 사용할 수 있습니다.

  • 스냅샷 백업을 사용하여 기존 블록 저장소 볼륨을 복원합니다.

  • 새로운 서비스를 생성할 때 스냅샷 백업을 시드 데이터로 사용하여 새로운 블록 저장소 볼륨을 초기화합니다.

스냅샷을 찍기 전에 모든 업데이트가 디스크에 플러시되었는지 확인해야 합니다.

Snowflake는 스냅샷을 생성하고 관리하기 위한 다음 명령을 제공합니다.

또한 기존 블록 저장소 볼륨에서 스냅샷을 복원하려면 ALTER SERVICE … RESTORE VOLUME 명령을 실행하면 됩니다. 스냅샷을 복원하려면 먼저 서비스를 일시 중단해야 합니다. 볼륨을 복원한 후에는 서비스가 자동으로 재개됩니다.

블록 저장 비용

자세한 내용은 Snowflake 서비스 사용 테이블 을 참조하십시오.

예를 보려면 자습서 를 참조하십시오. 이 자습서에서는 블록 저장소 볼륨을 마운트하여 서비스를 만드는 단계별 지침을 제공합니다.

지침 및 제한 사항

블록 저장소 볼륨을 사용하는 서비스에는 다음과 같은 제한이 적용됩니다.

  • 일반 제한 사항 이러한 제한으로 인해 문제가 발생하는 경우 계정 담당자에게 문의하십시오.

    • 블록 저장소 볼륨 크기 값의 범위는 1Gi~16,384Gi입니다.

    • 각 서비스는 최대 3개의 블록 볼륨을 지원할 수 있습니다. 이는 서비스 사양spec.volumes 를 참조합니다.

    • Snowflake 계정당 블록 저장소 볼륨의 총 수는 10개로 제한됩니다.

    • Snowflake 계정당 허용되는 스냅샷 수는 100개입니다.

  • 블록 저장소 볼륨을 사용하는 서비스는 최소 및 최대 인스턴스 수가 동일해야 합니다.

  • 서비스가 생성된 후에는 다음이 적용됩니다.

    • 서비스가 블록 저장소 볼륨을 사용 중인 경우에는 ALTER SERVICE … SET … 명령을 사용하여 서비스 인스턴스 수를 변경할 수 없습니다.

    • 블록 저장소 볼륨의 size, iops 또는 throughput 필드는 변경할 수 없습니다.

    • 새로운 블록 저장소 볼륨을 추가할 수 없으며, 기존 블록 저장소 볼륨을 제거할 수 없습니다.

    • 서비스가 업그레이드되거나, 중단되었다가 다시 시작되더라도 블록 저장소 볼륨은 보존됩니다. 서비스가 중단되면 볼륨이 보존되므로 계속해서 해당 볼륨에 대한 비용을 지불해야 합니다. 서비스를 업그레이드하거나 재개하면 Snowflake는 각 블록 저장소를 이전과 동일한 서비스 인스턴스 ID에 연결합니다.

    • 서비스가 중단되면 블록 저장소 볼륨이 삭제됩니다. 볼륨의 데이터를 보존하려면 볼륨의 스냅샷을 찍습니다. 나중에 스냅샷을 사용하여 새로운 볼륨을 초기화할 수 있습니다.

    • 블록 저장소 볼륨은 Tri-Secret SecurePeriodic Rekeying 를 지원하지 않습니다. 즉, 계정에서 Tri-Secret Secure 또는 주기적 키 재생성을 활성화한 경우 다른 모든 Snowflake 데이터는 계속 보안이 강화되지만, Snowpark Container Services 블록 저장소에 저장된 이미지는 이러한 보안 강화의 이점을 누릴 수 없습니다.

      Tri-Secret Secure 또는 주기적 키 재생성이 있는 계정에서 블록 저장소 볼륨을 생성하려면 먼저 블록 저장소 볼륨에 대한 이러한 추가 보안을 활용하지 않고 계속 사용할 수 있음을 이해하고 이에 동의함을 확인해야 합니다. 동의를 확인하려면 계정 관리자(ACCOUNTADMIN 역할이 있는 사용자)가 계정 수준 매개 변수 ENABLE_TRI_SECRET_AND_REKEY_OPT_OUT_FOR_SPCS_BLOCK_STORAGETRUE 로 설정해야 합니다.

  • IOPS 및 처리량 관련 지침

    • 서비스 IO 성능이 기대에 미치지 못하고 서비스가 블록 볼륨 IO 또는 처리량에 영향을 받는다면 IOPS 또는 처리량을 늘리는 것을 고려할 수 있습니다. 현재 구현에서 이러한 변경 사항을 적용하려면 서비스를 다시 생성해야 합니다.

      이러한 사용 가능한 플랫폼 메트릭 을 검토하여 서비스가 블록 저장소에서 병목 현상이 발생하고 있는지 확인할 수 있습니다.

      • container.cpu.usage

      • volume.read.iops

      • volume.write.iops

      • volume.read.throughput

      • volume.write.throughput

    • AWS의 경우:

      • 구성 가능한 최대 IOPS는 볼륨 크기 GiB당 500 IOPS이며, 최대 16,000 IOPS입니다. 예를 들어, 10GiB 볼륨의 최대 IOPS는 500 * 10 = 5000이 됩니다. 따라서 16,000의 최대 IOPS는 볼륨이 32GiB 이상인 경우에만 구성할 수 있습니다.

      • 구성 가능한 최대 처리량은 4 IOPS당 1MiB/초이며, 최대 1000MiBs/초까지 가능합니다. 예를 들어, 기본값 3000 IOPS를 사용하면 처리량을 초당 최대 750MiB(3000/4=750)까지 구성할 수 있습니다.

    • Azure의 경우:

      • 볼륨 크기가 6GB인 경우, 지원되는 IOPS 수는 6GB(디스크 유형)를 초과하면 GB당 500씩 증가합니다. 10GB 볼륨의 최대 IOPS는 500 * 4 + 3000 = 5000일 수 있습니다. 따라서 80,000의 최대 IOPS는 볼륨이 160GiB 이상인 경우에만 구성할 수 있습니다.

      • 6GB를 초과하면 구성할 수 있는 최대 처리량이 매 IOPS당 0.25MiB/초씩 증가하여 최대 1200MiBs/초까지 증가합니다. 예를 들어, 기본값 3000 IOPS를 사용하면 처리량을 초당 최대 750MiB(3000*0.25=750)까지 구성할 수 있습니다.