Montaje de Blob Storage mediante el protocolo Network File System (NFS) 3.0

Precaución

En este artículo se hace referencia a CentOS, una distribución de Linux que está cerca de su estado Final de ciclo vida (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para más información, consulte la Guía de fin de ciclo de vida de CentOS.

En este artículo se proporcionan instrucciones sobre cómo montar un contenedor en Azure Blob Storage desde una máquina virtual (VM) de Azure basada en Linux o desde un sistema Linux que se ejecute localmente mediante el protocolo Network File System (NFS) 3.0. Para más información sobre la compatibilidad del protocolo NFS 3.0 con Blob Storage, consulte Compatibilidad del protocolo Network File System (NFS) 3.0 con Azure Blob Storage.

Paso 1: Creación de una red virtual de Azure

La cuenta de almacenamiento debe incluirse en una red virtual. Una red virtual permite a los clientes conectarse de forma segura a su cuenta de almacenamiento. Para más información sobre Azure Virtual Network y cómo crear una red virtual, consulte la documentación de Microsoft Azure Virtual Network.

Nota:

Los clientes de la misma red virtual pueden montar contenedores en su cuenta. Usted también puede montar un contenedor desde un cliente que se ejecuta en una red local, pero primero tendrá que conectar la red local a la red virtual. Consulte Conexiones de red compatibles.

Paso 2: Configuración de la seguridad de red

Actualmente, la única forma de proteger los datos de su cuenta de almacenamiento es mediante una red virtual y otros valores de la seguridad de red. Vea Recomendaciones de seguridad de red para el almacenamiento de Blob.

Cualquier otra herramienta que se use para proteger los datos, incluida la autorización de clave de cuenta, la seguridad de Microsoft Entra y las listas de control de acceso (ACL) no se pueden usar para autorizar una solicitud NFS 3.0. De hecho, si agrega una entrada para un usuario o grupo con nombre a la ACL de un blob o directorio, ese archivo deja de estar accesible en el cliente para usuarios que no son raíz. Tendría que quitar esa entrada para restaurar el acceso a usuarios que no son raíz en el cliente.

Importante

El protocolo NFS 3.0 usa los puertos 111 y 2048. Si se va a conectar desde una red local, asegúrese de que el cliente permite la comunicación saliente a través de esos puertos. Si ha concedido acceso a redes virtuales específicas, asegúrese de que los grupos de seguridad de red asociados a esas redes virtuales no contengan reglas de seguridad que bloqueen la comunicación entrante a través de esos puertos.

Paso 3: Creación y configuración de una cuenta de almacenamiento

Para montar un contenedor mediante NFS 3.0, debe crear una cuenta de almacenamiento. No se pueden habilitar las cuentas existentes.

El protocolo NFS 3.0 es compatible con las cuentas de almacenamiento estándar de uso general v2 y las cuentas de almacenamiento de blobs en bloques prémium. Para más información sobre estos tipos de cuentas de almacenamiento, consulte Introducción a las cuentas de almacenamiento.

Para configurar la cuenta, elija estos valores:

Configuración Rendimiento Premium Rendimiento Estándar
Location Todas las regiones disponibles Todas las regiones disponibles
Rendimiento Premium Estándar
Tipo de cuenta BlockBlobStorage Uso general v2
Replicación Almacenamiento con redundancia local (LRS) o almacenamiento con redundancia de zona (ZRS) Almacenamiento con redundancia local (LRS) o almacenamiento con redundancia de zona (ZRS)
Método de conectividad Punto de conexión público (redes seleccionadas) o punto de conexión privado. Punto de conexión público (redes seleccionadas) o punto de conexión privado.
Espacio de nombres jerárquico habilitado habilitado
NFS V3 habilitado habilitado

Puede aceptar los valores predeterminados de las demás opciones de configuración.

Paso 4: Creación de un contenedor

Cree un contenedor en la cuenta de almacenamiento mediante alguna de estas herramientas o SDK:

Herramientas SDK
Azure Portal .NET
AzCopy Java
PowerShell Python
CLI de Azure JavaScript
REST

Nota

De forma predeterminada, la opción de squash raíz de un nuevo contenedor es Sin squash raíz. Sin embargo, puede cambiarlo a Squash raíz o Todo squash. Para obtener información sobre estas opciones de squash, consulte la documentación del sistema operativo.

En la imagen siguiente se muestran las opciones de squash tal como aparecen en Azure Portal.

Captura de pantalla que muestra opciones de squash en Azure Portal.

Paso 5: Instalación del paquete del asistente de montaje de AZNFS

El paquete del asistente de montaje de AZNFS ayuda a los clientes NFS de Linux a acceder de forma confiable a los recursos compartidos de NFS de Azure Blob, incluso cuando cambia la dirección IP del punto de conexión. Este paquete ejecuta un trabajo en segundo plano denominado aznfswatchdog que supervisa los cambios en la dirección IP del punto de conexión para los recursos compartidos montados. Si se detecta un cambio, este trabajo en segundo plano actualiza las reglas de traducción de direcciones de red de destino (DNAT). Para más información, consulte Asistente de montaje de AZNFS.

  1. Determine si el paquete del asistente de montaje de AZNFS está instalado en el cliente.

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

    Si el paquete está instalado, aparecerá el mensaje AZNFS mounthelper is installed!.

  2. Si el paquete aún no está instalado, use el siguiente comando para instalarlo.

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

    Nota

    AZNFS se admite en las siguientes distribuciones de Linux:

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

Paso 6: Montaje del contenedor

Cree un directorio en el sistema Linux y, después, monte el contenedor en la cuenta de almacenamiento.

  1. En un sistema Linux, cree un directorio:

    mkdir -p /nfsdata
    
  2. Monte el contenedor mediante uno de los métodos siguientes. En ambos métodos, reemplace el marcador de posición <storage-account-name> por el nombre de la cuenta de almacenamiento y <container-name> por el nombre del contenedor.

    • Para que el recurso compartido se monte automáticamente al reiniciar:

      1. Cree una entrada en el archivo /etc/fstab agregando la línea siguiente:

        <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. Ejecute el siguiente comando para procesar inmediatamente las entradas /etc/fstab e intentar montar la ruta de acceso anterior:

        mount /nfsdata
        
    • Si quiere un montaje temporal que no se conserve entre reinicios, ejecute el siguiente 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
      

      Sugerencia

      Mediante el uso de la opción de montaje -t aznfs, asegúrese de que el cliente NFS siempre permanece conectado correctamente al punto de conexión de almacenamiento incluso si la dirección IP del punto de conexión cambia después del montaje. Los recursos compartidos del NFS montados mediante la opción de montaje -t nfs podrían desconectarse del punto de conexión de almacenamiento si cambia la dirección IP de ese punto de conexión.

      Otros parámetros opcionales están disponibles con el comando mount. Estos parámetros afectan principalmente al comportamiento del lado cliente. sys es el único valor admitido actualmente por la opción sec.

      Importante

      La nconnect opción de montaje solo funciona en los clientes que tienen compatibilidad con nconnect de Azure. El uso de la opción de nconnect en un cliente no admitido disminuirá el rendimiento y hará que los comandos se aprovisionen o funcionen incorrectamente. Para más información sobre cómo asegurarse de que el cliente tiene compatibilidad con nconnect de Azure, consulte Aumento del número de conexiones de TCP.

Resolución de problemas comunes

Error Causa/resolución
Access denied by server while mounting Asegúrese de que el cliente se ejecute en una subred compatible. Consulte las ubicaciones de red compatibles.
No such file or directory Asegúrese de escribir, en lugar de copiar y pegar, el comando mount y sus parámetros directamente en el terminal. Si copia y pega cualquier parte de este comando en el terminal desde otra aplicación, es posible que aparezca este error en los caracteres ocultos de la información pegada. Este error también puede aparecer si la cuenta no está habilitada para NFS 3.0.
Permission denied El modo predeterminado de un contenedor NFS 3.0 recién creado es 0750. Los usuarios no raíz no tienen acceso al volumen. Si se requiere el acceso desde usuarios no raíz, el usuario raíz debe cambiar el modo a 0755. Comando de ejemplo: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Este error puede aparecer cuando un cliente intenta lo siguiente:
  • Escribir en un blob que se creó a partir de un punto de conexión de blob.
  • Eliminar un blob que tiene una instantánea o que está en un contenedor que tiene una directiva WORM (una sola escritura/varias lecturas) activa.
  • EROFS ("Read-only file system") Este error puede aparecer cuando un cliente intenta lo siguiente:
  • Escribir en un blob o eliminar un blob que tiene una concesión activa.
  • Escribir en un blob o eliminar un blob en un contenedor que tiene una directiva WORM (una sola escritura/varias lecturas) activa.
  • NFS3ERR_IO/EIO ("Input/output error") Este error puede aparecer cuando un cliente intenta leer, escribir o establecer atributos en blobs almacenados en el nivel de acceso de archivo.
    OperationNotSupportedOnSymLink con error Este error se puede devolver durante una operación de escritura a través de una API de Blob Storage o de Azure Data Lake Storage Gen2. No se permite el uso de estas API para escribir o eliminar vínculos simbólicos creados mediante NFS 3.0. Asegúrese de usar el punto de conexión NFS 3.0 para trabajar con vínculos simbólicos.
    mount: /nfsdata: bad option; Instale el programa de ayuda de NFS mediante sudo apt install nfs-common.
    Connection Timed Out Asegúrese de que el cliente permita la comunicación saliente mediante los puertos 111 y 2048. El protocolo NFS 3.0 usa estos puertos. Asegúrese de montar la cuenta de almacenamiento mediante el punto de conexión de Blob service y no el punto de conexión de Data Lake Storage.

    Limitaciones y solución de problemas del asistente de montaje de AZNFS

    Consulte asistente de montaje de AZNFS.

    Consulte también