Monte o armazenamento de Blob usando o protocolo NFS (Network File System) 3.0

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

Este artigo fornece orientação sobre como montar um contêiner no Armazenamento de Blobs do Azure a partir de uma máquina virtual (VM) do Azure baseada em Linux ou de um sistema Linux executado no local usando o protocolo NFS (Network File System) 3.0. Para saber mais sobre o suporte ao protocolo NFS 3.0 no Armazenamento de Blobs, consulte Suporte ao 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 contida 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 Azure e como criar uma rede virtual, consulte a documentação da Rede Virtual.

Nota

Clientes na mesma rede virtual podem montar contêineres em sua conta. Você também pode montar um contêiner a partir de um cliente executado em uma rede local, mas primeiro terá que conectar sua rede local à sua rede virtual. Consulte Conexões de rede suportadas.

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. Consulte Recomendações de segurança de rede para armazenamento de Blob.

Quaisquer outras ferramentas usadas para proteger dados, incluindo autorização de chave de 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-root no cliente.

Importante

O protocolo NFS 3.0 usa as portas 111 e 2048. Se você estiver se conectando a partir de uma rede local, certifique-se de que seu cliente permita a comunicação de saída por meio dessas portas. Se tiver concedido acesso a redes virtuais específicas, certifique-se de que quaisquer grupos de segurança de rede associados a essas redes virtuais não contêm regras de segurança que bloqueiem a comunicação de entrada através dessas 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. Não é possível ativar contas existentes.

O protocolo NFS 3.0 é suportado para contas de armazenamento v2 de uso geral padrão e para contas de armazenamento de blob de bloco premium. Para obter mais informações sobre esses tipos de contas de armazenamento, consulte Visão geral da conta de armazenamento.

Para configurar a conta, escolha estes valores:

Definição Desempenho premium Desempenho padrão
Localização Todas as regiões disponíveis Todas as regiões disponíveis
Desempenho Premium Standard
Tipo de conta BlockBlobStorage Fins gerais v2
Replicação Armazenamento com redundância local (LRS), armazenamento com redundância de zona (ZRS) Armazenamento com redundância local (LRS), armazenamento com redundância de zona (ZRS)
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
Espaço de nomes hierárquico Ativados Ativados
NFS V3 Ativados Ativados

Você pode aceitar os valores padrão para 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
Portal do Azure .NET
AzCopy Java
PowerShell Python
CLI do Azure JavaScript
REST

Nota

Por padrão, a opção de squash raiz de um novo contêiner é No Root Squash. Mas você pode mudar isso para Root Squash ou All Squash. Para obter informações sobre essas opções de squash, consulte a documentação do sistema operacional.

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

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

Etapa 5: Instalar o pacote AZNFS Mount Helper

O pacote AZNFS Mount Helper ajuda os clientes Linux NFS a acederem de forma fiável a partilhas NFS de 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 for detetada uma alteração, este trabalho em segundo plano atualiza as regras de Tradução de Endereços de Rede de Destino (DNAT). Para saber mais, consulte AZNFS Mount Helper.

  1. Determine se o pacote AZNFS Mount Helper está instalado no 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 seguinte comando para instalá-lo.

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

    Nota

    AZNFS é suportado nas seguintes distribuições Linux:

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

Passo 6: Monte o recipiente

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

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

    mkdir -p /nfsdata
    
  2. Monte o contêiner usando um dos seguintes métodos. 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 ter o compartilhamento 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 nas 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
      

      Gorjeta

      Usando a -t aznfs opção 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 mude após a montagem. Os compartilhamentos NFS montados usando a -t nfs opção de montagem podem 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 sec pela opção.

      Importante

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

Resolver erros comuns

Erro Causa/resolução
Access denied by server while mounting Confirme que o cliente está a ser executado numa sub-rede suportada. Consulte Locais de rede suportados.
No such file or directory Certifique-se de digitar, em vez de copiar e colar, o comando mount e seus parâmetros diretamente no terminal. Se copiar e colar qualquer parte deste comando no terminal a partir de outra aplicação, os carateres ocultos nas informações coladas poderão ser a causa deste erro. Esse erro também pode aparecer se a conta não estiver habilitada para NFS 3.0.
Permission denied O modo padrão de um contêiner NFS 3.0 recém-criado é 0750. Os usuários não-root não têm acesso ao volume. Se o acesso de usuários não-root for necessário, os usuários root deverão alterar o modo para 0755. Exemplo de comando: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Este erro pode aparecer quando um cliente tenta:
  • Escreva em um blob que foi criado a partir de um ponto de extremidade de blob.
  • Exclua um blob que tenha um instantâneo ou esteja em um contêiner que tenha uma política WORM ativa (gravar uma vez, ler muitos).
  • EROFS ("Read-only file system") Este erro pode aparecer quando um cliente tenta:
  • Escreva em um blob ou exclua um blob que tenha uma concessão ativa.
  • Escreva 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 ao arquivamento.
    OperationNotSupportedOnSymLink erro Esse erro pode ser retornado durante uma operação de gravação por meio de um Armazenamento de Blob ou da API Gen2 do Azure Data Lake Storage. Não é permitido usar essas APIs para escrever ou excluir links simbólicos criados usando o NFS 3.0. Certifique-se de usar o ponto de extremidade NFS 3.0 para trabalhar com links simbólicos.
    mount: /nfsdata: bad option; Instale o programa auxiliar NFS usando sudo apt install nfs-commono .
    Connection Timed Out Certifique-se de que o cliente permite a comunicação de saída através das 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 do Armazenamento Data Lake.

    Limitações e solução de problemas para o AZNFS Mount Helper

    Consulte AZNFS Mount Helper.

    Consulte também