서비스에 Snowflake 스테이지 볼륨 사용

Snowflake는 내부 스테이지, 로컬 스토리지, 메모리 스토리지, 블록 스토리지 볼륨 등 애플리케이션 컨테이너를 위한 다양한 저장소 볼륨 유형 을 지원합니다. 이 섹션에서는 내부 스테이지에 대한 볼륨과 볼륨 마운트를 구성하는 방법을 설명합니다.

서비스 사양에서 Snowflake 스테이지 지정

서비스 컨테이너가 Snowflake 스테이지 마운트를 사용하는 서비스를 생성하려면 다음과 같이 서비스 사양에 필요한 구성을 제공합니다.

  1. 사용할 스테이지 볼륨을 정의하려면 spec.volumes 필드를 지정합니다.

    volumes:
    - name: <name>
      source: <stage name>
    
    Copy

    다음 필드는 필수입니다.

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

    • source: 마운트할 Snowflake 내부 스테이지로, 예를 들어 @my_stage, @my_stage/folder 입니다. 이 값은 큰따옴표로 묶어야 합니다.

  2. 애플리케이션 컨테이너에서 볼륨을 마운트할 위치를 설명하는 spec.containers.volumeMounts 필드를 지정합니다. 이 필드에 제공하는 정보는 지원되는 모든 저장 볼륨에 동일하게 적용됩니다. 예를 들어,

    volumeMounts:
    - name: <name>
      mountPath: <absolute-directory-path>
    
    Copy

다음 예제 사양에서 app 컨테이너는 @model_stage 내부 스테이지를 마운트합니다.

spec:
  containers:
  - name: app
    image: <image1-name>
    volumeMounts:
    - name: models
      mountPath: /opt/models
  volumes:
  - name: models
    source: "@model_stage"
Copy

액세스 제어 요구 사항

서비스의 소유자 역할은 서비스를 생성하는 데 사용되는 역할입니다. 이는 Snowflake와 상호작용할 때 서비스가 사용하는 역할이기도 합니다. 이 소유자 역할은 마운트된 스테이지에 액세스하기 위해 애플리케이션 컨테이너에 부여되는 권한을 결정합니다. 소유자 역할에는 스테이지에 대한 READ 권한이 있어야 합니다.

소유자 역할에 스테이지에 대한 WRITE 권한이 없는 경우 해당 스테이지의 마운트는 읽기 전용입니다. 즉, 컨테이너는 스테이지의 파일만 읽을 수 있습니다. 스테이지 마운트가 읽기 및 쓰기를 모두 지원하려면 소유자 역할에 스테이지에 대한 WRITE 권한이 필요합니다.

지침 및 제한 사항

다음 지침 및 제한 사항은 애플리케이션 컨테이너가 스테이지 마운트를 사용하는 경우 적용됩니다.

제한 사항

  • 일반적인 제한 사항은 다음과 같습니다. 이러한 한도와 관련하여 문제가 발생하는 경우, 사용자의 계정 담당자에게 문의하십시오.

    • 각 서비스는 서비스당 최대 5개의 스테이지 볼륨을 지원할 수 있습니다. 이 항목은 서비스 사양spec.volumes 필드를 참조합니다.

    • 노드당 최대 8개의 스테이지 마운트만 지원됩니다. Snowflake는 메모리, CPU, GPU를 관리하는 방식과 유사하게 노드당 스테이지 마운트 제한을 관리합니다. 새로운 서비스 인스턴스를 시작하면 기존 노드에 요청된 스테이지 마운트를 지원할 용량이 없을 때 Snowflake가 새로운 노드를 시작할 수 있습니다.

  • 스테이지에는 스테이지 또는 하위 디렉터리만 마운트할 수 있습니다. 예를 들어, @my_stage, @my_stage/folder 입니다. 예를 들어, @my_stage/folder/file 과 같은 스테이지에는 단일 파일을 마운트할 수 없습니다.

  • 외부 스테이지는 지원되지 않습니다. SSE 암호화를 사용하는 Snowflake 내부 스테이지(내부 스테이지 매개 변수 참조)만 지원됩니다. CREATE STAGE my_stage ENCRYPTION = (type = 'SNOWFLAKE_SSE'); 스테이지를 생성하려면 CREATE STAGE 를 사용합니다.

  • 여러 스테이지 마운트(다른 컨테이너에 마운트된 동일한 스테이지 볼륨)에서 동일한 파일에 대한 동시 쓰기는 지원되지 않습니다.

  • 스테이지 마운트는 POSIX와 완전 호환되지 않는 파일 시스템입니다. 예:

    • 파일 및 디렉터리 이름 변경은 원자적이지 않습니다.

    • 하드 링크는 지원되지 않습니다.

  • 파일 시스템의 변경 사항을 모니터링하는 Linux 커널 하위 시스템 inode notify(inotify)는 스테이지 마운트에서 작동하지 않습니다.

지침

  • 스테이지 마운트는 순차적 읽기 및 쓰기에 최적화되어 있습니다.

  • 스테이지 마운트 내에서 여러 파일에 동시에 쓰기를 피합니다.

  • 스테이지 마운트 I/O 작업은 컨테이너의 파일 시스템 및 블록 저장소 볼륨의 I/O 작업보다 대기 시간이 길어질 수 있습니다. I/O 작업의 상태 코드를 항상 확인하여 성공했는지 확인해야 합니다.

  • 성능을 유지하려면 25GB를 초과하는 파일을 생성하거나 수정하지 마십시오.

  • 스테이지 마운트는 파일 업데이트를 비동기적으로 업로드합니다. 스테이지 마운트에서 파일에 대한 변경 사항은 파일 기술자가 성공적으로 닫히거나 플러시된 후에만 스테이지에 지속되는 것이 보장됩니다. 스테이지 마운트의 파일에 대한 변경 사항이 다른 컨테이너와 Snowflake에 표시되기까지 약간의 지연이 있을 수 있습니다.

  • 마운트된 스테이지의 각 디렉터리에는 100,000개 미만의 파일이 포함되어야 합니다. 디렉터리 내 파일 수에 따라 readdir 지연 시간이 증가할 것으로 예상됩니다.

  • 스테이지 마운트는 네트워크 파일 시스템이 아닙니다. 여러 고객 간의 조정에는 스테이지 마운트를 사용하지 마십시오.

  • 같은 파일에 여러 핸들을 동시에 열지 마십시오. 열린 파일 핸들은 읽기 또는 쓰기 작업 중 하나에만 사용되지만, 두 가지를 혼합해서 사용하면 안 됩니다. 파일에 쓴 후 읽으려면 먼저 파일을 닫았다가 다시 열어서 읽어야 합니다.