Montar o Armazenamento de Blobs usando o protocolo do NFS (Sistema de Arquivos de Rede) 3.0

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.

Este artigo fornece orientações sobre como montar um contêiner no Armazenamento de Blobs do Azure partir de uma VM (máquina virtual) baseada em Linux ou um sistema Linux que é executado no local usando o protocolo NFS (Sistema de Arquivos de Rede) 3.0. Para saber mais sobre o suporte a NFS 3.0 no Armazenamento de Blobs, consulte Compatibilidade com o protocolo NFS (Network File System) 3.0 para o Armazenamento de Blobs do Azure.

Etapa 1: Criar uma rede virtual do Azure

Sua conta de armazenamento deve estar incluída em uma rede virtual. Uma rede virtual permite que os clientes se conectem com segurança à sua conta de armazenamento. Para saber mais sobre a Rede Virtual do Microsoft Azure e como criar uma rede virtual, consulte a documentação da Rede Virtual.

Observação

Os clientes na mesma rede virtual podem montar contêineres na sua conta. Você também pode montar um contêiner de um cliente que é executado em uma rede local, mas terá que primeiro conectar sua rede local à sua rede virtual. Veja Conexões de rede com suporte.

Etapa 2: Configurar a segurança da rede

Atualmente, a única maneira de proteger os dados em sua conta de armazenamento é usando uma rede virtual e outras configurações de segurança de rede. Confira as Recomendações de segurança de rede para o Armazenamento de blobs.

Quaisquer outras ferramentas usadas para proteger os dados, incluindo autorização de chave da conta, segurança do Microsoft Entra e listas de controle de acesso (ACLs) não podem ser usadas para autorizar uma solicitação NFS 3.0. Na verdade, se você adicionar uma entrada para um usuário ou grupo nomeado à ACL de um blob ou diretório, esse arquivo se tornará inacessível no cliente para usuários não raiz. Você teria que remover essa entrada para restaurar o acesso a usuários não raiz no cliente.

Importante

O protocolo NFS 3.0 usa as portas 111 e 2048. Se estiver se conectando de uma rede local, verifique se o cliente permite a comunicação de saída por essas portas. Se você concedeu acesso a VNets específicas, verifique se todos os grupos de segurança de rede associados a essas VNets não contêm regras de segurança que bloqueiam a comunicação de entrada nessas portas.

Etapa 3: Criar e configurar uma conta de armazenamento

Para montar um contêiner usando o NFS 3.0, você deve criar uma conta de armazenamento. Você não pode habilitar contas existentes.

O protocolo NFS 3.0 tem suporte para contas de armazenamento de uso geral padrão v2 e para contas de armazenamento de blob de blocos Premium. Para saber mais sobre estes tipos de contas de armazenamento do, confira Visão geral da conta de armazenamento.

Para configurar a conta, escolha estes valores:

Configuração Desempenho premium Desempenho padrão
Location Todas as regiões disponíveis Todas as regiões disponíveis
Desempenho Premium Standard
Tipo de conta BlockBlobStorage Uso geral V2
Replicação LRS (armazenamento com redundância local), ZRS (armazenamento com redundância de zona) LRS (armazenamento com redundância local), ZRS (armazenamento com redundância de zona)
Método de conectividade Ponto de extremidade público (redes selecionadas) ou ponto de extremidade privado Ponto de extremidade público (redes selecionadas) ou ponto de extremidade privado
Namespace hierárquico habilitado habilitado
NFS V3 habilitado habilitado

Você pode aceitar os valores padrão de todas as outras configurações.

Etapa 4: criar um contêiner

Crie um contêiner em sua conta de armazenamento usando qualquer uma destas ferramentas ou SDKs:

Ferramentas SDKs
Azure portal .NET
AzCopy Java
PowerShell Python
CLI do Azure JavaScript
REST

Observação

Por padrão, a opção de squash de raiz de um novo contêiner é Sem squash de raiz. Mas você pode alterá-lo para Squash de raiz ou Todos os Squash. Para obter informações sobre essas opções de squash, consulte a documentação do Windows.

A imagem a seguir mostra as opções de squash como elas aparecem no portal do Azure.

Captura de tela que mostra as opções de squash no portal do Azure.

Etapa 5: Instalar o pacote auxiliar de montagem do AZNFS

O pacote auxiliar de montagem do AZNFS ajuda os clientes NFS do Linux a acessar de forma confiável os compartilhamentos NFS do Blob do Azure mesmo quando o endereço IP do ponto de extremidade é alterado. Este pacote executa um trabalho em segundo plano chamado aznfswatchdog que monitora as alterações no endereço IP do ponto de extremidade para os compartilhamentos montados. Se uma alteração for detectada, esse trabalho em segundo plano atualizará as regras de DNAT (Conversão de Endereços de Rede de Destino). Para saber mais, confira Auxiliar de Montagem do AZNFS.

  1. Determine se o pacote auxiliar de montagem do AZNFS está instalado em seu cliente.

    systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"
    

    Se o pacote estiver instalado, a mensagem AZNFS mounthelper is installed! será exibida.

  2. Se o pacote ainda não estiver instalado, use o comando a seguir para instalá-lo.

    wget -O - -q https://github.com/Azure/AZNFS-mount/releases/latest/download/aznfs_install.sh | bash
    

    Observação

    O AZNFS tem suporte nas seguintes distribuições do Linux:

    • Ubuntu (18.04 LTS, 20.04 LTS, 22.04 LTS)
    • Centos7, Centos8
    • RedHat7, RedHat8, RedHat9
    • Rocky8, Rocky9
    • SUSE (SLES 15)

Etapa 6: Montar o contêiner

Crie um diretório em seu sistema Linux e, em seguida, monte o contêiner na conta de armazenamento.

  1. Em seu sistema Linux, crie um diretório:

    mkdir -p /nfsdata
    
  2. Monte o contêiner usando um dos métodos a seguir. Em ambos os métodos, substitua o espaço reservado <storage-account-name> pelo nome da sua conta de armazenamento e substitua <container-name> pelo nome do seu contêiner.

    • Para que o compartilhamento seja montado automaticamente na reinicialização:

      1. Crie uma entrada no arquivo /etc/fstab adicionando a seguinte linha:

        <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /nfsdata    aznfs defaults,sec=sys,vers=3,nolock,proto=tcp,nofail,_netdev    0 0
        
      2. Execute o seguinte comando para processar imediatamente as entradas /etc/fstab e tentar montar o caminho anterior:

        mount /nfsdata
        
    • Para uma montagem temporária que não persiste entre as reinicializações, execute o seguinte comando:

      mount -t aznfs -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /nfsdata
      

      Dica

      Usando a opção -t aznfs de montagem, você garante que o cliente NFS sempre permaneça conectado corretamente ao ponto de extremidade de armazenamento mesmo que o IP do ponto de extremidade seja alterado após a montagem. Os compartilhamentos NFS montados usando a opção -t nfs de montagem poderão ser desconectados do ponto de extremidade de armazenamento se o endereço IP desse ponto de extremidade for alterado.

      Outros parâmetros opcionais estão disponíveis com o comando mount. Esses parâmetros afetam principalmente o comportamento do lado do cliente. sys é o único valor atualmente suportado pela opção sec.

      Importante

      A opção nconnect de montagem funciona apenas em clientes que têm o suporte para nconnect do Azure. O uso da opção nconnect em um cliente sem suporte diminuirá a taxa de transferência e fará com que os comandos atinjam o tempo limite ou não funcionem corretamente. Para saber mais sobre como garantir que seu cliente tenha suporte para nconnect do Azure, confira Aumentar o número de conexões TCP.

Resolver erros comuns

Erro Causa/resolução
Access denied by server while mounting Verifique se o cliente está sendo executado em uma sub-rede com suporte. Confira, Locais de rede com suporte.
No such file or directory Certifique-se de digitar, ao invés de copiar e colar, o comando de montagem e seus parâmetros diretamente no terminal. Se você copiar e colar qualquer parte deste comando no terminal de outro aplicativo, os caracteres ocultos nas informações coladas poderão causar esse erro. Esse erro também poderá aparecer se a conta não estiver habilitada para o NFS 3.0.
Permission denied O modo padrão de um contêiner de NFS 3.0 criado recentemente é 0750. Os usuários não raiz não têm acesso ao volume. Se o acesso de usuários não raiz for necessário, os usuários raiz deverão mudar o modo para 0755. Comando de exemplo: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Esse erro pode aparecer quando um cliente tenta:
  • Grave em um blob criado a partir de um ponto de extremidade de blob.
  • Exclua o blob que tem um instantâneo ou que esteja em um contêiner que tenha uma política WORM (gravar uma vez, ler muitos) ativa.
  • EROFS ("Read-only file system") Esse erro pode aparecer quando um cliente tenta:
  • Grave em um blob ou exclua um blob que não tenha uma concessão ativa.
  • Grave em um blob ou exclua um blob em um contêiner que tenha uma política WORM ativa.
  • NFS3ERR_IO/EIO ("Input/output error") Esse erro pode aparecer quando um cliente tenta ler, gravar ou definir atributos em blobs armazenados na camada de acesso aos arquivos.
    OperationNotSupportedOnSymLink erro(s) Esse erro pode ser retornado durante uma operação de gravação por meio de uma API de Armazenamento de Blobs ou Azure Data Lake Storage Gen2. Não é permitido usar essas APIs para gravar ou excluir links simbólicos criados usando o NFS 3.0. Use o ponto de extremidade do NFS 3.0 para trabalhar com links simbólicos.
    mount: /nfsdata: bad option; Instale o programa auxiliar do NFS usando sudo apt install nfs-common.
    Connection Timed Out Verifique se o cliente permite a comunicação de saída pelas portas 111 e 2048. O protocolo NFS 3.0 usa essas portas. Certifique-se de montar a conta de armazenamento usando o ponto de extremidade do serviço Blob e não o ponto de extremidade Data Lake Storage.

    Limitações e solução de problemas para o Auxiliar de montagem do AZNFS

    Confira Auxiliar de montagem do AzNFS.

    Confira também