Compartilhar via


Comportamento do sistema de arquivos

Por fim, o Armazenamento de Contêineres do Azure habilitado pelo Azure Arc fornece uma interface de sistema de arquivos para aplicativos. Os sistemas de arquivos têm comportamentos específicos que os aplicativos devem ser projetados para lidar. Este artigo explica como as alterações de sistema de arquivos compartilhadas se propagam e o que acontece com um sistema de arquivos espelho durante a sincronização de espelho.

O que queremos dizer com uma interface do sistema de arquivos?

Um aplicativo pode acessar vários sistemas de arquivos em sua estrutura de pastas por meio de montagens. No Kubernetes, os aplicativos (pods) configuram montagens usando PVCs. Quando um pod é montado com um EdgeVolume PVC, ele obtém acesso a um sistema de arquivos compartilhado por meio de uma pasta montada.

Consulte este guia, por exemplo, para configurar um PVC para o volume com suporte em nuvem da nossa extensão. Um sistema de arquivos montado com um EdgeVolume PVC tem um componente local e remoto. O sistema de arquivos local recebe operações do sistema de arquivos da aplicação. Ele encaminha operações de sistema de arquivos para o componente remoto que tem acesso ao armazenamento subjacente.

Propagação de alterações e cache local

Vários pods de qualquer nó no cluster podem montar a mesma pasta EdgeVolume compartilhada. Dentro desta pasta, as gravações de um pod podem ser lidas por outros pods. Se houver pods em nós separados que estejam montando a mesma pasta compartilhada, as alterações podem levar algum tempo para se propagarem. Arquivos e pastas novos ou removidos podem levar até 60 segundos para serem propagados. As gravações de arquivo podem levar até 30 segundos para serem propagadas.

O motivo desses atrasos é devido aos tempos de invalidação de cache do lado do cliente. Quando o pod faz uma operação de leitura no sistema de arquivos local, ele pode usar um cache local e nunca fazer uma chamada de rede. As entradas de cache que ele usa eventualmente expiram, portanto, depois que o cache relevante atingir o tempo limite, o sistema de arquivos do pod lerá novamente as informações pela rede. Neste ponto, o sistema de arquivos local extrai os metadados de arquivo e o conteúdo mais recentes.

Sequências de operação de arquivo que envolvem abrir o arquivo, ler e fechar o arquivo (em vez de arquivos abertos de longa duração) sempre leem o conteúdo mais recente do arquivo. Quando o sistema de arquivos do pod local processa uma chamada aberta, ele vai diretamente para o servidor para verificar se o arquivo foi alterado.

Comportamento do sistema de arquivos espelho

Quando ocorre uma sincronização de espelhamento, um aplicativo interno é executado para detectar e realizar operações no sistema de arquivos para sincronizar o sistema de arquivos de borda para corresponder a um destino de blob. A configuração do subvolume espelho é descrita neste artigo.

As operações que podem ser executadas para concluir uma sincronização espelho se enquadram nas seguintes categorias:

  • Criando novos arquivos ou pastas para corresponder aos blobs recém-criados.
  • Removendo arquivos ou pastas existentes para corresponder aos blobs removidos.
  • Modificando arquivos existentes para corresponder a blobs modificados, baixando o novo blob e renomeando-o sobre o arquivo antigo.
  • Modificação de metadados de arquivos ou pastas: proprietário, grupo, permissões e xattrs com base em alterações de metadados no blob.

Quando o aplicativo interno executa essas operações, ele faz isso diretamente no sistema de arquivos subjacente. As alterações acabam chegando aos pods do cliente que leem o sistema de arquivos. Depois que uma alteração é feita no sistema de arquivos interno, pode levar até 30 segundos para alterações de arquivo ou 60 segundos para que arquivos criados ou removidos se propaguem para pods de clientes.

Como as sincronizações de modificação de blobs são implementadas usando renomeações com conteúdo de arquivo completo, os aplicativos nunca veem arquivos parcialmente sincronizados. Eles veem o conteúdo do arquivo antigo ou o conteúdo do novo arquivo.

No entanto, as alterações de metadados são aplicadas diretamente ao arquivo ou pasta visível do cliente. Isso significa que é possível ver metadados parcialmente sincronizados (proprietário, grupo, permissões ou xattrs).