Usar o armazenamento de blobs montado em NFS com o Azure HPC Cache

Você pode usar contêineres de blobs montados em NFS com o Azure HPC Cache. Leia mais sobre o Compatibilidade do protocolo NFS 3.0 no armazenamento de blobs do Azure no site de documentação do armazenamento de blobs.

O Azure HPC Cache usa o armazenamento de blobs habilitado para NFS no tipo de destino de armazenamento ADLS-NFS. Esses destinos de armazenamento são semelhantes aos destinos de armazenamento NFS regulares, mas também têm alguma sobreposição com destinos de blobs do Azure regulares.

Este artigo explica as estratégias e limitações que você deve saber ao usar os destinos de armazenamento ADLS-NFS.

Você também deve ler a documentação de blob do NFS, principalmente essas seções que descrevem cenários compatíveis e incompatíveis e dicas de solução de problemas:

Entender os requisitos de consistência

O HPC Cache requer uma forte consistência para destinos de armazenamento ADLS-NFS. Por padrão, o armazenamento de blobs habilitado para NFS não atualiza estritamente os metadados do arquivo, o que impede que o HPC Cache compare versões de arquivo com precisão.

Para contornar essa diferença, o Azure HPC Cache desabilita automaticamente o cache de atributo NFS em qualquer contêiner de blob habilitado para NFS usado como um destino de armazenamento.

Essa configuração persiste durante o tempo de vida do contêiner, mesmo se ele for removido do cache.

Pré-carregar dados com o protocolo NFS

Em um contêiner de blob habilitado para NFS, um arquivo só pode ser editado pelo mesmo protocolo que foi usado quando ele foi criado. Ou seja, ao usar a API REST do Azure para preencher um contêiner, você não poderá usar o NFS para atualizar esses arquivos. Como o Azure HPC Cache usa apenas NFS, ele não pode editar arquivos criados com a API REST do Azure. (Saiba mais sobre problemas conhecidos com APIs de armazenamento de blob)

Não há problema para o cache se o contêiner estiver vazio ou os arquivos tiverem sido criados usando NFS.

Se os arquivos em seu contêiner foram criados com a API REST do Blob do Azure em vez do NFS, o Azure HPC Cache é restrito a estas ações nos arquivos originais:

  • Listar o arquivo em um diretório.
  • Ler o arquivo (e mantê-lo no cache para leituras seguintes).
  • Exclua o arquivo .
  • Esvaziar o arquivo (truncá-lo para 0).
  • Salvar uma cópia do arquivo. A cópia é marcada como um arquivo criado pelo NFS e pode ser editada com o NFS.

O Azure HPC Cache não pode editar o conteúdo de um arquivo criado com REST. Isso significa que o cache não pode salvar um arquivo alterado de um cliente de volta no destino de armazenamento.

É importante entender essa limitação, pois ela pode causar problemas de integridade de dados se você usar modelos de uso de cache de leitura/gravação em arquivos que não foram criados com NFS.

Dica

Saiba mais sobre cache de leitura e gravação em Entender os modelos de uso de cache.

Cenários de gravação em cache

Estes modelos de uso de cache incluem cache de gravação:

  • Gravações com mais de 15%
  • Mais de 15% de gravações. Verificando as alterações no servidor de backup a cada 30 segundos
  • Mais de 15% de gravações. Verificando as alterações no servidor de backup a cada 60 segundos
  • Gravações acima de 15%, write-back para o servidor a cada 30 segundos

Os modelos de uso de cache de gravação devem ser usados somente em arquivos que foram criados com NFS.

Se você tentar usar o cache de gravação em arquivos criados no REST, as alterações de arquivo poderão ser perdidas. Isso porque o cache não tenta salvar edições de arquivo no contêiner de armazenamento imediatamente.

Veja como tentar fazer a gravação em cache de arquivos criados com REST coloca os dados em risco:

  1. O cache aceita edições de clientes e retorna uma mensagem de êxito em cada alteração.

  2. O cache mantém o arquivo alterado no armazenamento e aguarda alterações adicionais.

  3. Depois de algum tempo, o cache tenta salvar o arquivo alterado no contêiner de back-end. Nesse ponto, ele receberá uma mensagem de erro porque está tentando gravar um arquivo criado com o REST com NFS.

    É muito tarde para dizer ao computador cliente que as alterações não foram aceitas e o cache não tem como atualizar o arquivo original. Portanto, as alterações de clientes serão perdidas.

Cenários de cache de leitura

Cenários de cache de leitura são apropriados para arquivos criados com o NFS ou a API REST do Blob do Azure.

Estes modelos de uso usam apenas o cache de leitura:

  • Leitura intensiva, gravações pouco frequentes
  • Os clientes gravam no destino NFS ignorando o cache
  • Leitura intensa, verificação do servidor de backup a cada três horas

Você pode usar esses modelos de uso com arquivos criados pela API REST ou pelo NFS. As gravações de NFS enviadas de um cliente para o contêiner de back-end não serão efetuadas, mas a falha será imediata e elas retornarão uma mensagem de erro ao cliente.

O fluxo de trabalho de cache de leitura ainda pode envolver alterações de arquivo, desde que elas não sejam armazenadas em cache. Por exemplo, os clientes podem acessar arquivos do contêiner, mas gravar as alterações novamente como um novo arquivo, ou salvar arquivos modificados em um local diferente.

Reconhecer limitações do NLM (Gerenciador de Bloqueio de Rede)

Os contêineres de blob habilitados para NFS não são compatíveis com o NLM (Gerenciador de Bloqueio de Rede), que é um protocolo NFS usado para proteger arquivos contra conflitos.

Se o seu fluxo de trabalho do NFS foi escrito originalmente para sistemas de armazenamento de hardware, seus aplicativos cliente podem incluir solicitações NLM. Para contornar essa limitação ao migrar o processo para armazenamento de blobs habilitado para NFS, verifique se os clientes desabilitam o NLM ao montar o cache.

Para desabilitar o NLM, use a opção -o nolock no comando mount dos seus clientes. Essa opção impede que os clientes solicitem bloqueios de NLM e recebam erros como resposta. A opção nolock é implementada de forma diferente em diferentes sistemas operacionais; verifique a documentação do sistema operacional do cliente (man 5 nfs) para obter detalhes.

Simplifique as gravações em contêineres habilitados para NFS com o HPC Cache

O Azure HPC Cache pode ajudar a melhorar o desempenho em uma carga de trabalho que inclui a gravação de alterações em um destino de armazenamento ADLS-NFS.

Observação

Você precisa usar o NFS para preencher seu contêiner de armazenamento ADLS-NFS se quiser mudar seus arquivos por meio do Azure HPC Cache.

Uma das limitações descritas no Artigo considerações sobre desempenho de blob habilitado para NFS é que o armazenamento ADLS-NFS não é muito eficiente na substituição de arquivos existentes. Se você usar o Azure HPC Cache com armazenamento de blobs montado em NFS, o cache tratará as regravações intermitentes conforme os clientes mudarem um arquivo ativo. A latência de gravar um arquivo no contêiner de back-end é ocultada dos clientes.

Leve em consideração as limitações explicadas acima em Pré-carregar dados com o protocolo NFS.

Próximas etapas