Solución de problemas de recursos compartidos de archivos de Azure NFS

Nota:

CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final de la vida útil (EOL). Considere su uso y planifique en consecuencia. Para obtener más información, consulte Guía de fin de vida de CentOS.

En este artículo se enumeran los problemas comunes relacionados con los recursos compartidos de archivos de Azure NFS y se proporcionan posibles causas y soluciones alternativas.

Importante

El contenido de este artículo solo se aplica a los recursos compartidos de NFS. Para solucionar problemas de SMB en Linux, consulte Solución de problemas de Azure Files en Linux (SMB). Los recursos compartidos de archivos de Azure NFS no se admiten para Windows.

Se aplica a

Tipo de recurso compartido de archivos SMB NFS
Recursos compartidos de archivos estándar (GPv2), LRS/ZRS
Recursos compartidos de archivos estándar (GPv2), GRS/GZRS
Recursos compartidos de archivos Premium (FileStorage), LRS/ZRS

Error de chgrp "filename": argumento no válido (22)

Causa 1: la asignación no está deshabilitada

Dado que Azure Files no permite el UID/GID alfanumérico, debe deshabilitar el idmapping.

Causa 2: la asignación de identidades se deshabilitó, pero se volvió a habilitar después de encontrar un nombre de archivo o directorio incorrecto

Aunque deshabilite correctamente el idmapping, se puede volver a habilitar automáticamente en algunos casos. Por ejemplo, cuando Azure Files encuentra un nombre de archivo incorrecto, devuelve un error. Al ver este código de error, un cliente linux NFS 4.1 decide volver a habilitar idmapping y envía solicitudes futuras con UID/GID alfanumérico. Para obtener una lista de caracteres no admitidos en Azure Files, consulte este artículo. Dos puntos es uno de los caracteres no admitidos.

Solución alternativa

Asegúrese de que ha deshabilitado el idmapping y de que no hay nada que lo vuelva a habilitar. A continuación, realice los pasos siguientes:

  1. Desmonte el recurso compartido.

  2. Deshabilite el idmapping con:

    sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
  3. Vuelva a montar el recurso compartido.

  4. Si ejecuta rsync, ejecute rsync con el —numeric-ids argumento de un directorio que no tenga un nombre de archivo o directorio incorrecto.

No se puede crear un recurso compartido NFS

Causa: Configuración de la cuenta de almacenamiento no admitida

NFS solo está disponible en cuentas de almacenamiento con la siguiente configuración:

Solución

Siga las instrucciones de Creación de un recurso compartido NFS.

No se puede conectar a un recurso compartido de archivos de Azure NFS ni montarlo

Causa 1: La solicitud se origina desde un cliente en una red o dirección IP que no es de confianza

A diferencia de SMB, NFS no tiene autenticación basada en el usuario. La autenticación de un recurso compartido se basa en la configuración de la regla de seguridad de red. Para asegurarse de que los clientes solo establecen conexiones seguras con el recurso compartido NFS, debe usar el punto de conexión de servicio o los puntos de conexión privados. Para acceder a recursos compartidos desde el entorno local además de puntos de conexión privados, debe configurar una conexión VPN o ExpressRoute. Las direcciones IP agregadas a la lista de permitidos de la cuenta de almacenamiento para el firewall se omiten. Debe usar uno de los métodos siguientes para configurar el acceso a un recurso compartido NFS:

  • Punto de conexión de servicio

    • Al que accede el punto de conexión público.

    • Solo está disponible en la misma región.

    • No se puede usar el emparejamiento de red virtual para el acceso compartido.

    • Debe agregar cada red virtual o subred individualmente a la lista de permitidos.

    • Para el acceso local, puede usar puntos de conexión de servicio con ExpressRoute, VPN de punto a sitio y de sitio a sitio. Se recomienda usar un punto de conexión privado porque es más seguro.

      En el diagrama siguiente se muestra la conectividad mediante puntos de conexión públicos:

      Diagrama de conectividad de punto de conexión público.

  • Punto de conexión privado

    • El acceso es más seguro que el punto de conexión de servicio.

    • El acceso al recurso compartido de NFS a través de private link está disponible desde dentro y fuera de la región de Azure de la cuenta de almacenamiento (entre regiones y locales).

    • El emparejamiento de redes virtuales con redes virtuales hospedadas en el punto de conexión privado proporciona al recurso compartido NFS acceso a los clientes de redes virtuales emparejadas.

    • Puede usar puntos de conexión privados con ExpressRoute, VPN de punto a sitio y VPN de sitio a sitio.

      Diagrama de conectividad de punto de conexión privado.

Causa 2: La transferencia segura necesaria está habilitada

Los recursos compartidos de archivos de Azure NFS no admiten actualmente el cifrado doble. Azure proporciona una capa de cifrado para todos los datos en tránsito entre centros de datos de Azure mediante MACSec. Solo puede acceder a recursos compartidos de NFS desde redes virtuales de confianza y a través de túneles VPN. No hay cifrado de capa de transporte adicional disponible en recursos compartidos NFS.

Solución

Deshabilite la transferencia segura necesaria en la hoja de configuración de la cuenta de almacenamiento.

Captura de pantalla que muestra la hoja de configuración de la cuenta de almacenamiento, deshabilitando la transferencia segura necesaria.

Causa 3: el paquete nfs-utils, nfs-client o nfs-common no está instalado

Antes de ejecutar el mount comando, instale el paquete nfs-utils, nfs-client o nfs-common.

Para comprobar si el paquete NFS está instalado, ejecute:

Los mismos comandos de esta sección se aplican a CentOS y Oracle Linux.

sudo rpm -qa | grep nfs-utils

Solución

Si el paquete no está instalado, instale el paquete mediante el comando específico de la distribución.

Los mismos comandos de esta sección se aplican a CentOS y Oracle Linux.

Versión 7.X del sistema operativo

sudo yum install nfs-utils

Versión 8.X o 9.X del sistema operativo

sudo dnf install nfs-utils

Causa 4: Puerto de bloqueo de firewall 2049

El protocolo NFS se comunica con su servidor a través del puerto 2049. Asegúrese de que este puerto está abierto a la cuenta de almacenamiento (el servidor NFS).

Solución

Compruebe que el puerto 2049 está abierto en el cliente ejecutando el siguiente comando. Si el puerto no está abierto, ábralo.

sudo nc -zv <storageaccountnamehere>.file.core.windows.net 2049

Causa 5: Cuenta de almacenamiento eliminada

Si no puede montar el recurso compartido de archivos debido a un error: se agotó el tiempo de espera de la conexión, es posible que la cuenta de almacenamiento que contiene el recurso compartido de archivos se elimine accidentalmente.

Solución

Recupere la cuenta de almacenamiento. A continuación, elimine y vuelva a crear el punto de conexión privado para que esté asociado al nuevo identificador de recurso de la cuenta de almacenamiento.

ls se bloquea para la enumeración de directorios grandes en algunos kernels

Causa: Se introdujo un error en el kernel de Linux v5.11 y se corrigió en v5.12.5

Algunas versiones del kernel tienen un error que hace que las listas de directorios den lugar a una secuencia de READDIR sin fin. Los directorios pequeños donde todas las entradas se pueden enviar en una llamada no tienen este problema. El error se introdujo en el kernel de Linux v5.11 y se corrigió en la versión 5.12.5. Así que cualquier cosa intermedia tiene el error. RHEL 8.4 tiene esta versión del kernel.

Solución alternativa: Degradación o actualización del kernel

La degradación o actualización del kernel a cualquier cosa fuera del kernel afectado debe resolver el problema.

Se produce un error en los comandos del sistema con el error "Archivo no encontrado".

Causa

Es posible que las aplicaciones linux de 32 bits que se basan en números de inode no funcionen según lo esperado con Azure Files debido al formato de los números de inode de 64 bits generados por el servicio NFS.

Solución

Para solucionar este problema, use uno de los métodos siguientes:

  • Comprima los números de inode de 64 bits en 32 bits mediante la opción de arranque del nfs.enable_ino64=0 kernel.

  • Establezca el parámetro del módulo agregando options nfs enable_ino64=0 al archivo /etc/modprobe.d/nfs.conf y reiniciando la máquina virtual.

También puede conservar esta opción de arranque del kernel en el archivo grub.conf . Para obtener más información, consulte la documentación de la distribución de Linux.

¿Necesita ayuda?

Si aún necesita ayuda, póngase en contacto con el soporte técnico para resolver el problema rápidamente.

Consulte también

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.