Usando volumes de estágio Snowflake com serviços¶
O Snowflake oferece suporte a vários tipos de volume de armazenamento para seus contêineres de aplicativo, incluindo volumes de estágio interno, armazenamento local, armazenamento de memória e armazenamento em bloco. Esta seção explica como configurar volumes e montagens de volume para estágios internos.
Especificação do estágio Snowflake na especificação de serviço¶
Para criar um serviço em que os contêineres de serviço usam uma montagem de estágio Snowflake, forneça a configuração necessária na especificação do serviço da seguinte forma:
Especifique o campo
spec.volumes
para definir o volume do estágio a ser usado.volumes: - name: <name> source: <stage name>
Os seguintes campos são obrigatórios:
name
: nome do volume.source
: O estágio interno Snowflake a ser montado, por exemplo,@my_stage
,@my_stage/folder
. Este valor deve estar entre aspas duplas.
Especifique o campo
spec.containers.volumeMounts
para descrever onde montar um volume nos contêineres de seu aplicativo. As informações fornecidas neste campo são as mesmas para todos os volumes de armazenamento suportados. Por exemplo,volumeMounts: - name: <name> mountPath: <absolute-directory-path>
No exemplo de especificação a seguir, o contêiner app
monta o estágio interno @model_stage
:
spec:
containers:
- name: app
image: <image1-name>
volumeMounts:
- name: models
mountPath: /opt/models
volumes:
- name: models
source: "@model_stage"
Requisitos de controle de acesso¶
A função de proprietário do serviço é a função usada para criar o serviço. É também a função que os serviços usam ao interagir com o Snowflake. Esta função de proprietário determina as permissões concedidas aos contêineres de aplicativo para acessar um estágio montado. O função de proprietário deve ter privilégio READ no estágio.
Se a função de proprietário não tiver o privilégio WRITE em um estágio, a montagem para esse estágio será somente leitura. Ou seja, os containers só podem ler os arquivos do estágio. A função de proprietário precisa do privilégio WRITE em um estágio para que a montagem do estágio ofereça suporte à leitura e gravação.
Diretrizes e limitações¶
As seguintes diretrizes e limitações se aplicam quando contêineres de aplicativo usam montagens de estágio:
Limitações
As seguintes são limitações gerais. Se você tiver algum problema com esses limites, entre em contato com seu representante de conta.
Cada serviço pode oferecer suporte a até cinco volumes de estágio por serviço. Isso faz referência ao campo
spec.volumes
na especificação de serviço.Apenas oito montagens de estágio por nó são permitidas. O Snowflake gerencia o limite de montagem de estágio por nó de forma semelhante à forma como gerencia a memória, CPU e GPU. Iniciar uma nova instância de serviço pode fazer com que o Snowflake inicie novos nós quando nenhum nó existente tiver capacidade para oferecer suporte às montagens de estágio solicitadas.
É permitido montar apenas um estágio ou um subdiretório em um estágio. Por exemplo,
@my_stage
,@my_stage/folder
: Não é possível montar um único arquivo em um estágio, por exemplo,@my_stage/folder/file
.Estágios externos não são suportados. Somente estágios internos do Snowflake com criptografia SSE (consulte Parâmetros do estágio interno) são compatíveis. Use CREATE STAGE para criar esse estágio:
CREATE STAGE my_stage ENCRYPTION = (type = 'SNOWFLAKE_SSE');
.Gravações simultâneas no mesmo arquivo de várias montagens de estágio (mesmo volume de estágio montado em contêineres diferentes) não são compatíveis.
As montagens de estágio não são sistemas de arquivo totalmente compatíveis com POSIX. Por exemplo:
As renomeações de arquivo e diretório não são atômicas.
Links físicos não são permitidos.
O subsistema inode notify (inotify) do kernel Linux que monitora alterações nos sistemas de arquivos não funciona em montagens de estágio.
Diretrizes
A montagem em estágio é otimizada para leituras e gravações sequenciais.
Evite gravar simultaneamente em vários arquivos dentro de uma montagem de estágio.
As operações de E/S de montagem em estágio podem ter latências maiores do que as operações de E/S no sistema de arquivo do contêiner e nos volumes de armazenamento em bloco. Você deve sempre verificar o código de status das operações de E/S para garantir que elas foram bem-sucedidas.
Para manter o desempenho, evite criar ou modificar arquivos maiores que 25 GB.
As montagens de estágio carregam atualizações de arquivo de forma assíncrona. As alterações em arquivos em uma montagem de estágio só são garantidas como persistentes no estágio após o descritor de arquivo ser fechado ou esvaziado com sucesso. Pode haver algum atraso antes que as alterações nos arquivos em uma montagem de estágio se tornem visíveis para outros contêineres e para o Snowflake.
Cada diretório em um estágio montado deve conter menos de 100 mil arquivos. Espere que a latência
readdir
aumente com o número de arquivos no diretório.A montagem em estágio não é um sistema de arquivo de rede. Não utilize montagens de estágio para coordenação de vários clientes.
Não abra vários identificadores para o mesmo arquivo simultaneamente. Use identificadores de arquivo abertos para operações de leitura ou gravação, mas não uma mistura de ambas. Para ler um arquivo após gravar nele, feche o arquivo e abra-o novamente antes de ler.