En este artículo se enumeran los problemas comunes que pueden producirse al intentar conectarse a recursos compartidos de archivos de Azure del Bloque de mensajes del servidor (SMB) desde clientes Windows o Linux y acceder a él. También proporciona posibles causas y soluciones para estos problemas.
Importante: este artículo solo se aplica a recursos compartidos SMB. Para obtener más información sobre los recursos compartidos del sistema de archivos de red (NFS), consulte Solución de problemas de recursos compartidos de archivos NFS de Azure.
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 |
Seleccione la pestaña Windows o Linux en función del sistema operativo cliente que use para acceder a recursos compartidos de archivos de Azure.
Windows
Al intentar conectarse a un recurso compartido de archivos de Azure en Windows, es posible que reciba los siguientes mensajes de error.
- Error del sistema 5. Acceso denegado.
Por motivos de seguridad, las conexiones a recursos compartidos de archivos de Azure se bloquean si el canal de comunicación no está cifrado y el intento de conexión no se realiza desde el mismo centro de datos donde residen los recursos compartidos de archivos de Azure. Si la opción Transferencia segura necesaria está habilitada en la cuenta de almacenamiento, también se bloquean las conexiones sin cifrar dentro del mismo centro de datos. Solo se proporciona un canal de comunicación cifrado si el sistema operativo cliente del usuario final admite el cifrado SMB.
Windows 8, Windows Server 2012 y versiones posteriores de cada sistema negocian solicitudes que incluyen SMB 3.x, que admite el cifrado.
- Conéctese desde un cliente que admita el cifrado SMB (Windows 8/Windows Server 2012 o posterior).
- Conéctese desde una máquina virtual (VM) en el mismo centro de datos que la cuenta de almacenamiento de Azure que se usa para el recurso compartido de archivos de Azure.
- Compruebe que la opción Transferencia segura necesaria está deshabilitada en la cuenta de almacenamiento si el cliente no admite el cifrado SMB.
El tráfico de red se deniega si la red virtual (VNET) y las reglas de firewall están configuradas en la cuenta de almacenamiento, a menos que la dirección IP del cliente o la red virtual aparezcan en la lista de permitidos.
Compruebe que las reglas de red virtual y firewall están configuradas correctamente en la cuenta de almacenamiento. Para probar si la red virtual o las reglas de firewall están causando el problema, cambie temporalmente la configuración de la cuenta de almacenamiento a Permitir el acceso desde todas las redes. Para más información, consulte Configuración de firewalls y redes virtuales de Azure Storage.
Causa 3: Los permisos de nivel de recurso compartido son incorrectos al usar la autenticación basada en identidades
Si los usuarios acceden al recurso compartido de archivos de Azure mediante Active Directory (AD) o Servicios de dominio de Microsoft Entra autenticación, el acceso al recurso compartido de archivos produce un error con el error "Acceso denegado" si los permisos de nivel de recurso compartido son incorrectos.
Valide que los permisos están configurados correctamente:
-
Servicios de dominio de Active Directory (AD DS) consulte Asignación de permisos de nivel de recurso compartido.
Las asignaciones de permisos de nivel de recurso compartido son compatibles con grupos y usuarios que se han sincronizado de AD DS a Microsoft Entra ID mediante Microsoft Entra Connect Sync o Microsoft Entra Connect Cloud Sync. Confirme que los grupos y los usuarios a los que se les asignan permisos de nivel de recurso compartido no son grupos "solo en la nube" no admitidos.
-
Servicios de dominio de Microsoft Entra consulte Asignación de permisos de nivel de recurso compartido.
Al intentar montar un recurso compartido de archivos desde el entorno local o desde otro centro de datos, es posible que reciba los errores siguientes:
- Se ha producido el error del sistema 53. No se ha encontrado la ruta de acceso de la red.
- Error del sistema 67. No se encuentra el nombre de red.
- Error del sistema 87. El parámetro es incorrecto.
El error del sistema 53 o el error del sistema 67 pueden producirse si se bloquea la comunicación saliente del puerto 445 a un centro de datos de Azure Files. Para ver el resumen de los ISP que permiten o no permiten el acceso desde el puerto 445, vaya a TechNet.
Para comprobar si el firewall o isp bloquea el puerto 445, use la herramienta AzFileDiagnostics o el Test-NetConnection
cmdlet .
Para usar el Test-NetConnection
cmdlet, se debe instalar el módulo Azure PowerShell. Consulte Instalar Azure PowerShell módulo para obtener más información. No olvide reemplazar <your-storage-account-name>
y <your-resource-group-name>
por los nombres pertinentes de la cuenta de almacenamiento.
$resourceGroupName = "<your-resource-group-name>"
$storageAccountName = "<your-storage-account-name>"
# This command requires you to be logged into your Azure account and set the subscription your storage account is under, run:
# Connect-AzAccount -SubscriptionId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
# if you haven't already logged in.
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName
# The ComputerName, or host, is <storage-account>.file.core.windows.net for Azure Public Regions.
# $storageAccount.Context.FileEndpoint is used because non-Public Azure regions, such as sovereign clouds
# or Azure Stack deployments, will have different hosts for Azure file shares (and other storage resources).
Test-NetConnection -ComputerName ([System.Uri]::new($storageAccount.Context.FileEndPoint).Host) -Port 445
Si la conexión se realizó correctamente, debería ver la siguiente salida:
ComputerName : <your-storage-account-name>
RemoteAddress : <storage-account-ip-address>
RemotePort : 445
InterfaceAlias : <your-network-interface>
SourceAddress : <your-ip-address>
TcpTestSucceeded : True
Nota: Este comando devuelve la dirección IP actual de la cuenta de almacenamiento. No se garantiza que esta dirección IP siga siendo la misma y puede cambiar en cualquier momento. No codifique esta dirección IP de forma rígida en ningún script ni en una configuración de firewall.
Solución 1: use Azure File Sync como punto de conexión QUIC Puede usar Azure File Sync como solución alternativa para acceder a Azure Files desde clientes que tienen bloqueado el puerto 445. Aunque Azure Files no admite directamente SMB a través de QUIC, Windows Server 2022 Azure Edition admite el protocolo QUIC. Puede crear una caché ligera de los recursos compartidos de archivos de Azure en una máquina virtual de Windows Server 2022 Azure Edition mediante Azure File Sync. Esta configuración usa el puerto 443, que es de salida ampliamente abierto para admitir HTTPS, en lugar del puerto 445. Para obtener más información sobre esta opción, consulte SMB a través de QUIC con Azure File Sync.
Solución 2: uso de VPN o ExpressRoute Al configurar una red privada virtual (VPN) o ExpressRoute desde el entorno local a la cuenta de almacenamiento de Azure, con Azure Files expuestas en la red interna mediante puntos de conexión privados, el tráfico pasará por un túnel seguro en lugar de a través de Internet. Siga las instrucciones para configurar una VPN para acceder a Azure Files desde Windows.
Solución 3: desbloquear el puerto 445 con la ayuda del administrador de ISP/TI Trabaje con su departamento de TI o ISP para abrir el puerto 445 de salida a los intervalos IP de Azure.
Solución 4: use herramientas basadas en API REST como Explorador de Storage o PowerShell Azure Files también admite REST además de SMB. El acceso REST funciona a través del puerto 443 (tcp estándar). Hay varias herramientas que se escriben mediante la API REST que permiten una experiencia de interfaz de usuario enriquecida. Explorador de Storage es uno de ellos. Descargue e instale Explorador de Storage y conéctese al recurso compartido de archivos respaldado por Azure Files. También puede usar PowerShell que también usa la API REST.
El error del sistema 53 o el error del sistema 87 pueden producirse si la comunicación NTLMv1 está habilitada en el cliente. Azure Files solo admite la autenticación NTLMv2. Tener NTLMv1 habilitado crea un cliente menos seguro. Por lo tanto, la comunicación se bloquea para Azure Files.
Para determinar si esta es la causa del error, compruebe que la siguiente subclave del Registro no está establecida en un valor menor que 3:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa > LmCompatibilityLevel
Para obtener más información, vea el tema LmCompatibilityLevel en TechNet.
Revierta el LmCompatibilityLevel
valor al valor predeterminado de 3 en la siguiente subclave del Registro:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa
Al intentar montar un recurso compartido de archivos de Azure, recibe el siguiente error:
Código de error: 0x800704b3
Nombre simbólico: ERROR_NO_NET_OR_BAD_PATH
Descripción del error: la ruta de acceso de red se escribió incorrectamente, no existe o el proveedor de red no está disponible actualmente. Intente volver a escribir la ruta de acceso o póngase en contacto con el administrador de red.
Este error puede producirse si los servicios principales relacionados con la red de Windows están deshabilitados, ya que cualquier servicio que dependa explícitamente de esos servicios de red no se iniciará.
Compruebe si alguno de los siguientes servicios está en estado Detenido en la máquina virtual Windows:
- Conexiones de red
- Servicio de lista de redes
- Reconocimiento de la ubicación de red
- Servicio de interfaz de almacén de red
- Cliente DHCP
- Asistente de NetBIOS de TCP/IP
- Estación de trabajo
Si encuentra alguno, inicie los servicios y vuelva a intentar montar el recurso compartido de archivos de Azure.
Las unidades se montan por usuario. Si la aplicación o el servicio se ejecutan en una cuenta de usuario diferente a la que montó la unidad, la aplicación no verá la unidad.
Use una de las siguientes soluciones:
-
Monte la unidad desde la misma cuenta de usuario que contiene la aplicación. Puede usar una herramienta como PsExec.
-
Pase el nombre y la clave de la cuenta de almacenamiento en los parámetros de nombre de usuario y contraseña del
net use
comando. -
Use el
cmdkey
comando para agregar las credenciales al Administrador de credenciales. Realice esta acción desde una línea de comandos en el contexto de la cuenta de servicio, ya sea a través de un inicio de sesión interactivo o medianterunas
.Consolacmdkey /add:<storage-account-name>.file.core.windows.net /user:AZURE\<storage-account-name> /pass:<storage-account-key>
-
Asigne el recurso compartido directamente sin usar una letra de unidad asignada. Es posible que algunas aplicaciones no se vuelvan a conectar a la letra de unidad correctamente, por lo que el uso de la ruta de acceso UNC completa podría ser más confiable:
net use * \\storage-account-name.file.core.windows.net\share
Después de seguir estas instrucciones, es posible que reciba el siguiente mensaje de error al ejecutar net use para la cuenta de servicio del sistema o red: "Error del sistema 1312. No existe una sesión de inicio de sesión especificada. Es posible que ya se haya terminado". Si aparece este error, asegúrese de que el nombre de usuario que se pasa a net use
incluye información de dominio (por ejemplo: [storage account name].file.core.windows.net
).
Si asigna un recurso compartido de archivos de Azure como administrador mediante el net use
comando , parece que falta el recurso compartido.
De forma predeterminada, Windows Explorador de archivos no se ejecuta como administrador. Si ejecuta net use
desde un símbolo del sistema administrativo, asigne la unidad de red como administrador. Dado que las unidades asignadas están centradas en el usuario, la cuenta de usuario que ha iniciado sesión no muestra las unidades si están montadas en otra cuenta de usuario.
Monte el recurso compartido desde una línea de comandos que no es de administrador. Como alternativa, puede seguir este tema de TechNet para configurar el valor del EnableLinkedConnections
Registro.
Se produce un error en el comando net use si la cuenta de almacenamiento contiene una barra diagonal.
El net use
comando interpreta una barra diagonal (/) como una opción de línea de comandos. Si el nombre de la cuenta de usuario comienza con una barra diagonal, se produce un error en la asignación de unidades.
Puede usar cualquiera de los pasos siguientes para solucionar el problema:
-
Ejecute el siguiente comando de PowerShell:
PowerShellNew-SmbMapping -LocalPath y: -RemotePath \\server\share -UserName accountName -Password "password can contain / and \ etc"
Desde un archivo por lotes, puede ejecutar el comando de esta manera:
Echo new-smbMapping ... | powershell -command –
-
Coloque comillas dobles alrededor de la clave para solucionar este problema, a menos que la barra diagonal sea el primer carácter. Si es así, use el modo interactivo y escriba la contraseña por separado o vuelva a generar las claves para obtener una clave que no comience con una barra diagonal.
Es posible que vea este mensaje de error si el recurso compartido de archivos no es accesible. Por ejemplo, el puerto 445 está bloqueado o hay un problema de resolución de DNS.
Asegúrese de que el puerto 445 está abierto y compruebe la resolución DNS y la conectividad con el recurso compartido de archivos.
Linux
Las causas comunes de este problema son:
- Está usando una distribución de Linux con un cliente SMB obsoleto. Consulte Uso de Azure Files con Linux para obtener más información sobre las distribuciones comunes de Linux disponibles en Azure que tienen clientes compatibles.
- Las utilidades SMB (cifs-utils) no están instaladas en el cliente.
- La versión mínima de SMB, 2.1, no está disponible en el cliente.
- El cifrado SMB 3.x no se admite en el cliente. En la tabla anterior se proporciona una lista de distribuciones de Linux que admiten el montaje desde el entorno local y entre regiones mediante el cifrado. Otras distribuciones requieren kernel 4.11 y versiones posteriores.
- Está intentando conectarse a un recurso compartido de archivos de Azure desde una máquina virtual de Azure y la máquina virtual no está en la misma región que la cuenta de almacenamiento.
- Si la opción Transferencia segura necesaria está habilitada en la cuenta de almacenamiento, Azure Files solo permitirá conexiones que usen SMB 3.x con cifrado.
Para resolver el problema, use la herramienta de solución de problemas para Azure Files errores de montaje en Linux. Esta herramienta:
- Ayuda a validar el entorno de ejecución del cliente.
- Detecta la configuración de cliente incompatible que provocaría un error de acceso para Azure Files.
- Proporciona instrucciones prescriptivas sobre la corrección automática.
- Recopila los seguimientos de diagnóstico.
Por motivos de seguridad, las conexiones a recursos compartidos de archivos de Azure se bloquean si el canal de comunicación no está cifrado y el intento de conexión no se realiza desde el mismo centro de datos donde residen los recursos compartidos de archivos de Azure. Las conexiones sin cifrar dentro del mismo centro de datos también se pueden bloquear si la opción Transferencia segura necesaria está habilitada en la cuenta de almacenamiento. Solo se proporciona un canal de comunicación cifrado si el sistema operativo cliente del usuario admite el cifrado SMB.
Para más información, consulte Requisitos previos para montar un recurso compartido de archivos de Azure con Linux y el paquete cifs-utils.
- Conéctese desde un cliente que admita el cifrado SMB o conéctese desde una máquina virtual en el mismo centro de datos que la cuenta de almacenamiento de Azure que se usa para el recurso compartido de archivos de Azure.
- Compruebe que la opción Transferencia segura necesaria está deshabilitada en la cuenta de almacenamiento si el cliente no admite el cifrado SMB.
Si la red virtual (VNET) y las reglas de firewall están configuradas en la cuenta de almacenamiento, se denegará el acceso al tráfico de red a menos que se permita el acceso a la dirección IP del cliente o a la red virtual.
Compruebe que las reglas de red virtual y firewall están configuradas correctamente en la cuenta de almacenamiento. Para probar si las redes virtuales o las reglas de firewall están causando el problema, cambie temporalmente la configuración de la cuenta de almacenamiento a Permitir el acceso desde todas las redes. Para más información, consulte Configuración de firewalls y redes virtuales de Azure Storage.
Algunas distribuciones de Linux aún no admiten características de cifrado en SMB 3.x. Los usuarios pueden recibir un mensaje de error "115" si intentan montar Azure Files mediante SMB 3.x debido a una característica que falta. SMB 3.x con cifrado completo solo se admite en la versión más reciente de una distribución de Linux.
La característica de cifrado para SMB 3.x para Linux se introdujo en el kernel 4.11. Esta característica permite el montaje de un recurso compartido de archivos de Azure desde el entorno local o desde otra región de Azure. Es posible que algunas distribuciones de Linux hayan realizado cambios atrasados del kernel 4.11 a las versiones anteriores del kernel de Linux que mantienen. Para ayudar a determinar si la versión de Linux admite SMB 3.x con cifrado, consulte Uso de Azure Files con Linux.
Si el cliente SMB de Linux no admite el cifrado, monte Azure Files mediante SMB 2.1 desde una máquina virtual Linux que se encuentra en el mismo centro de datos de Azure que el recurso compartido de archivos. Compruebe que la opción Transferencia segura necesaria está deshabilitada en la cuenta de almacenamiento.
Se produce un error de montaje "112" en el cliente Linux cuando el cliente ha estado inactivo durante mucho tiempo. Después de un tiempo de inactividad prolongado, el cliente se desconecta y la conexión agota el tiempo de espera.
La conexión puede estar inactiva por los siguientes motivos:
- Errores de comunicación de red que impiden volver a establecer una conexión TCP con el servidor cuando se usa la opción de montaje "suave" predeterminada.
- Correcciones de reconexión recientes que no están presentes en kernels anteriores.
Este problema de reconexión en el kernel de Linux ahora se ha corregido como parte de los siguientes cambios:
- Corrección de la reconexión para no aplazar la reconexión de sesión smb3 mucho después de volver a conectar el socket
- Llamar al servicio de eco inmediatamente después de volver a conectar el socket
- CIFS: corrección de posibles daños en la memoria durante la reconexión
- CIFS: corrección de un posible bloqueo doble de exclusión mutua durante la reconexión (para kernel v4.9 y versiones posteriores)
Sin embargo, es posible que estos cambios no se porte aún a todas las distribuciones de Linux. Si usa una distribución de Linux popular, puede comprobar Usar Azure Files con Linux para ver qué versión de la distribución tiene los cambios necesarios en el kernel.
Para solucionar este problema, especifique un montaje duro. Un montaje duro obliga al cliente a esperar hasta que se establece una conexión o hasta que se interrumpe explícitamente. Puede usarlo para evitar errores debido a los tiempos de espera de red. Sin embargo, esta solución alternativa podría provocar esperas indefinidas. Esté preparado para detener las conexiones según sea necesario.
Si no puede actualizar a las versiones más recientes del kernel, puede solucionar este problema manteniendo un archivo en el recurso compartido de archivos de Azure en el que se escribe cada 30 segundos o menos. Debe ser una operación de escritura, como volver a escribir la fecha de creación o modificación en el archivo. De lo contrario, puede obtener resultados almacenados en caché y es posible que la operación no desencadene la reconexión.
No se puede acceder, modificar o eliminar un recurso compartido de archivos de Azure (o una instantánea de recurso compartido)
Error "El nombre de usuario o la contraseña son incorrectos" después de una conmutación por error iniciada por el cliente
En un escenario de conmutación por error iniciado por el cliente con cuentas de almacenamiento con redundancia geográfica, los identificadores de archivos y las concesiones no se conservan en la conmutación por error. Los clientes deben desmontar y volver a montar los recursos compartidos de archivos.
Al intentar acceder a un recurso compartido de archivos de Azure o eliminarlo mediante el Azure Portal, es posible que reciba el siguiente error:
Sin acceso Código de error: 403
Compruebe que las reglas de red virtual y firewall están configuradas correctamente en la cuenta de almacenamiento. Para probar si las reglas de firewall o red virtual están causando el problema, cambie temporalmente la configuración de la cuenta de almacenamiento a Permitir el acceso desde todas las redes. Para más información, consulte Configuración de firewalls y redes virtuales de Azure Storage.
Vaya a la cuenta de almacenamiento en la que se encuentra el recurso compartido de archivos de Azure, seleccione Control de acceso (IAM) y compruebe que la cuenta de usuario tiene acceso a la cuenta de almacenamiento. Para más información, consulte Protección de la cuenta de almacenamiento con el control de acceso basado en rol de Azure (RBAC de Azure).
Si no puede modificar o eliminar un recurso compartido de archivos o una instantánea de Azure, puede deberse a bloqueos de archivos o concesiones. Azure Files proporciona dos maneras de evitar la modificación o eliminación accidental de recursos compartidos de archivos de Azure e instantáneas de recursos compartidos:
-
Bloqueos de recursos de cuenta de almacenamiento: todos los recursos de Azure, incluida la cuenta de almacenamiento, admiten bloqueos de recursos. Un administrador o servicios como Azure Backup pueden poner bloqueos en la cuenta de almacenamiento. Existen dos variaciones de bloqueos de recursos: modificar, que impide todas las modificaciones en la cuenta de almacenamiento y sus recursos, y eliminar, lo que solo impide eliminaciones de la cuenta de almacenamiento y sus recursos. Al modificar o eliminar recursos compartidos a través del
Microsoft.Storage
proveedor de recursos, los bloqueos de recursos se aplican a los recursos compartidos de archivos de Azure y a las instantáneas de recursos compartidos. La mayoría de las operaciones del portal, Azure PowerShell cmdlets para Azure Files conRm
en el nombre (por ejemplo,Get-AzRmStorageShare
) y los comandos de la CLI de Azure en elshare-rm
grupo de comandos (por ejemplo,az storage share-rm list
) usan el proveedor deMicrosoft.Storage
recursos. Algunas herramientas y utilidades, como Explorador de Storage, los cmdlets de administración de PowerShell Azure Files heredados sinRm
el nombre (por ejemplo,Get-AzStorageShare
) y los comandos heredados de la CLI de Azure Files en elshare
grupo de comandos (por ejemplo,az storage share list
) usan API heredadas en la API de FileREST que omiten elMicrosoft.Storage
proveedor de recursos y los bloqueos de recursos. Para obtener más información sobre las API de administración heredadas expuestas en la API de FileREST, consulte plano de control en Azure Files. -
Concesiones de instantáneas de recursos compartidos o compartidos: las concesiones de recursos compartidos son una especie de bloqueo propietario para los recursos compartidos de archivos de Azure y las instantáneas de recursos compartidos de archivos. Los administradores pueden colocar concesiones en recursos compartidos de archivos de Azure individuales o instantáneas de recursos compartidos de archivos llamando a la API a través de un script o mediante servicios de valor agregado, como Azure Backup. Cuando se coloca una concesión en un recurso compartido de archivos de Azure o una instantánea de recurso compartido de archivos, la modificación o eliminación de la instantánea de recurso compartido de archivos o recurso compartido se puede realizar con el identificador de concesión. Los administradores también pueden liberar la concesión antes de las operaciones de modificación, que requiere el identificador de concesión, o interrumpir la concesión, que no requiere el identificador de concesión. Para obtener más información sobre las concesiones de recursos compartidos, consulte recurso compartido de concesión.
Dado que los bloqueos y concesiones de recursos pueden interferir con las operaciones de administrador previstas en la cuenta de almacenamiento o los recursos compartidos de archivos de Azure, es posible que desee quitar los bloqueos o concesiones de recursos que se hayan colocado en los recursos manualmente o automáticamente mediante servicios de valor agregado, como Azure Backup. El siguiente script quita todos los bloqueos y concesiones de recursos. No olvide reemplazar <resource-group>
y <storage-account>
por los valores adecuados para su entorno.
Antes de ejecutar el siguiente script, debe instalar la versión más reciente del módulo de PowerShell de Azure Storage.
Importante
Los servicios de valor agregado que toman bloqueos de recursos y comparten concesiones de instantáneas en los recursos de Azure Files pueden volver a aplicar periódicamente bloqueos y concesiones. La modificación o eliminación de recursos bloqueados por servicios de valor agregado puede afectar al funcionamiento normal de esos servicios, como la eliminación de instantáneas de recursos compartidos administradas por Azure Backup.
# Parameters for storage account resource
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-Name $storageAccountName
# Remove resource locks
Get-AzResourceLock `
-ResourceType "Microsoft.Storage/storageAccounts" `
-ResourceGroupName $storageAccount.ResourceGroupName `
-ResourceName $storageAccount.StorageAccountName | `
Remove-AzResourceLock -Force | `
Out-Null
# Remove share and share snapshot leases
Get-AzStorageShare -Context $storageAccount.Context | `
Where-Object { $_.Name -eq $fileShareName } | `
ForEach-Object {
try {
$leaseClient = [Azure.Storage.Files.Shares.Specialized.ShareLeaseClient]::new($_.ShareClient)
$leaseClient.Break() | Out-Null
} catch { }
}
Seleccione la pestaña Windows o Linux en función del sistema operativo cliente que use para acceder a recursos compartidos de archivos de Azure.
Windows
En Windows, es posible que vea los siguientes errores.
Uno de los propósitos clave de un recurso compartido de archivos es que varios usuarios y aplicaciones pueden interactuar simultáneamente con archivos y directorios del recurso compartido. Para ayudar con esta interacción, los recursos compartidos de archivos proporcionan varias formas de mediar el acceso a archivos y directorios.
Al abrir un archivo desde un recurso compartido de archivos de Azure montado a través de SMB, el sistema operativo o la aplicación solicita un identificador de archivo, que es una referencia al archivo. Entre otras cosas, la aplicación especifica un modo de uso compartido de archivos cuando solicita un identificador de archivo, que especifica el nivel de exclusividad del acceso al archivo aplicado por Azure Files:
None
: tiene acceso exclusivo.Read
: otros usuarios pueden leer el archivo mientras lo tiene abierto.Write
: otros pueden escribir en el archivo mientras lo tiene abierto.ReadWrite
: una combinación de losRead
modos de uso compartido y .Write
Delete
: otros usuarios pueden eliminar el archivo mientras lo tiene abierto.
Aunque como protocolo sin estado, el protocolo FileREST no tiene un concepto de identificadores de archivo, proporciona un mecanismo similar para mediar el acceso a archivos y carpetas que el script, la aplicación o el servicio pueden usar: concesiones de archivos. Cuando se concede un archivo, se trata como equivalente a un identificador de archivo con un modo de uso compartido de archivos de None
.
Aunque los identificadores de archivos y las concesiones tienen un propósito importante, a veces los identificadores de archivos y las concesiones pueden quedar huérfanos. Cuando esto sucede, esto puede causar problemas en la modificación o eliminación de archivos. Es posible que vea mensajes de error como:
- El proceso no puede acceder al archivo porque otro proceso usa el archivo.
- La acción no se puede completar porque el archivo está abierto en otro programa.
- Otro usuario bloquea el documento para su edición.
- Un cliente SMB marca el recurso especificado para su eliminación.
La resolución de este problema depende de si esto se debe a un identificador de archivo huérfano o a una concesión.
Nota
Las concesiones REST las usan las aplicaciones para evitar que los archivos se eliminen o modifiquen. Antes de interrumpir las concesiones, debe identificar qué aplicación las está adquiriendo. De lo contrario, podría interrumpir el comportamiento de la aplicación.
Un identificador de archivo impide que se modifique o elimine un archivo o directorio. Puede usar el cmdlet De PowerShell Get-AzStorageFileHandle para ver los identificadores abiertos.
Si todos los clientes SMB han cerrado sus identificadores abiertos en un archivo o directorio y el problema continúa ocurriendo, puede forzar el cierre de un identificador de archivo.
Para forzar el cierre de un identificador de archivo, use el cmdlet Close-AzStorageFileHandle de PowerShell.
Nota
Los Get-AzStorageFileHandle
cmdlets y Close-AzStorageFileHandle
se incluyen en el módulo Az PowerShell versión 2.4 o posterior. Para instalar el módulo Az PowerShell más reciente, consulte Instalación del módulo Azure PowerShell.
Una concesión de archivos impide que se modifique o elimine un archivo. Puede comprobar si un archivo tiene una concesión de archivos con los siguientes comandos de PowerShell. Reemplace <resource-group>
, <storage-account>
, <file-share>
y <path-to-file>
por los valores adecuados para el entorno.
# Set variables
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
$fileShareName = "<file-share>"
$fileForLease = "<path-to-file>"
# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-Name $storageAccountName
# Get reference to file
$file = Get-AzStorageFile `
-Context $storageAccount.Context `
-ShareName $fileShareName `
-Path $fileForLease
$fileClient = $file.ShareFileClient
# Check if the file has a file lease
$fileClient.GetProperties().Value
Si un archivo tiene una concesión, el objeto devuelto debe contener las siguientes propiedades:
LeaseDuration : Infinite
LeaseState : Leased
LeaseStatus : Locked
Para quitar una concesión de un archivo, puede liberarla o interrumpirla. Para liberar la concesión, necesita el Valor LeaseId de la concesión, que se establece al crear la concesión. No necesita el Valor LeaseId para interrumpir la concesión.
En el ejemplo siguiente se muestra cómo interrumpir la concesión del archivo indicado en la causa 2 (este ejemplo continúa con las variables de PowerShell de la causa 2):
$leaseClient = [Azure.Storage.Files.Shares.Specialized.ShareLeaseClient]::new($fileClient)
$leaseClient.Break() | Out-Null
Linux
En Linux, es posible que vea los siguientes problemas.
Este problema suele producirse si el archivo o directorio tiene un identificador abierto.
Si los clientes SMB han cerrado todos los identificadores abiertos y el problema continúa ocurriendo, realice lo siguiente:
-
Use el cmdlet Get-AzStorageFileHandle de PowerShell para ver los identificadores abiertos.
-
Use el cmdlet Close-AzStorageFileHandle de PowerShell para cerrar los identificadores abiertos.
Nota: Los Get-AzStorageFileHandle
cmdlets y Close-AzStorageFileHandle
se incluyen en el módulo Az PowerShell versión 2.4 o posterior. Para instalar el módulo Az PowerShell más reciente, consulte Instalación del módulo Azure PowerShell.
No se puede montar una instantánea de recurso compartido de archivos de Azure en Linux
"Error de montaje(22): argumento no válido" al intentar montar una instantánea de recurso compartido de archivos de Azure en Linux
Si la snapshot
opción del mount
comando no se pasa en un formato reconocido, el mount
comando puede producir un error. Para confirmarlo, compruebe los mensajes de registro del kernel (dmesg) y dmesg mostrará una entrada de registro como cifs: Bad value for 'snapshot'
.
Asegúrese de pasar la snapshot
opción del mount
comando en el formato correcto. Consulte la página manual mount.cifs (por ejemplo, man mount.cifs
). Un error común es pasar la marca de tiempo GMT en el formato incorrecto, como usar guiones o dos puntos en lugar de puntos. Para obtener más información, consulte Montaje de una instantánea de recurso compartido de archivos.
"Token de instantánea incorrecto" al intentar montar una instantánea de recurso compartido de archivos de Azure en Linux
Si se pasa la opción de instantánea mount
a partir @GMT
de , pero el formato sigue siendo incorrecto (por ejemplo, con guiones y dos puntos en lugar de puntos), el mount
comando puede producir un error.
Asegúrese de pasar la marca de tiempo GMT en el formato correcto, que es @GMT-year.month.day-hour.minutes.seconds
. Para obtener más información, consulte Montaje de una instantánea de recurso compartido de archivos.
"Error de montaje(2): no hay ningún archivo o directorio de este tipo" al intentar montar una instantánea del recurso compartido de archivos de Azure
Si la instantánea que intenta montar no existe, el mount
comando puede producir este error. Para confirmarlo, compruebe los mensajes de registro del kernel (dmesg) y dmesg mostrará una entrada de registro como:
[Mon Dec 12 10:34:09 2022] CIFS: Attempting to mount \\snapshottestlinux.file.core.windows.net\snapshot-test-share1
[Mon Dec 12 10:34:09 2022] CIFS: VFS: cifs_mount failed w/return code = -2
Asegúrese de que existe la instantánea que intenta montar. Para obtener más información sobre cómo enumerar las instantáneas disponibles para un recurso compartido de archivos de Azure determinado, consulte Montaje de una instantánea de recurso compartido de archivos.
Seleccione la pestaña Windows o Linux en función del sistema operativo cliente que use para acceder a recursos compartidos de archivos de Azure.
Windows
El error 1816 se produce cuando se alcanza el límite superior de identificadores abiertos simultáneos permitidos para un archivo o directorio en el recurso compartido de archivos de Azure. Para obtener más información, consulte Azure Files destinos de escala.
Reduzca el número de identificadores abiertos simultáneos cerrando algunos identificadores y, a continuación, vuelva a intentarlo. Para obtener más información, consulte Microsoft Azure Storage lista de comprobación de rendimiento y escalabilidad.
Para ver los identificadores abiertos de un recurso compartido de archivos, directorio o archivo, use el cmdlet Get-AzStorageFileHandle de PowerShell.
Para cerrar los identificadores abiertos de un recurso compartido de archivos, un directorio o un archivo, use el cmdlet Close-AzStorageFileHandle de PowerShell.
Nota
Los Get-AzStorageFileHandle
cmdlets y Close-AzStorageFileHandle
se incluyen en el módulo Az PowerShell versión 2.4 o posterior. Para instalar el módulo Az PowerShell más reciente, consulte Instalación del módulo Azure PowerShell.
Si almacena en caché o mantiene un gran número de identificadores abiertos durante mucho tiempo, es posible que vea este error en el lado servidor debido a motivos de limitación. Cuando el cliente almacena en caché un gran número de identificadores, muchos de ellos pueden entrar en una fase de reconexión al mismo tiempo, creando una cola en el servidor que debe limitarse. La lógica de reintento y la limitación en el back-end para volver a conectarse tardan más tiempo que el tiempo de espera del cliente. Esta situación se manifiesta como un cliente que no puede usar un identificador existente para ninguna operación, con todas las operaciones con errores con ERROR_UNEXP_NET_ERR (59).
También hay casos perimetrales en los que el identificador de cliente se desconecta del servidor (por ejemplo, una interrupción de red que dura varios minutos) que podrían provocar este error.
No mantenga un gran número de identificadores almacenados en caché. Cierre los identificadores y vuelva a intentarlo. Use Get-AzStorageFileHandle
y Close-AzStorageFileHandle
los cmdlets de PowerShell para ver o cerrar identificadores abiertos.
Si usa recursos compartidos de archivos de Azure para almacenar contenedores de perfiles o imágenes de disco para una implementación de escritorio virtual a gran escala u otras cargas de trabajo que abran identificadores en archivos, directorios o el directorio raíz, es posible que alcance los límites de escala superior para los identificadores abiertos simultáneos. En este caso, use un recurso compartido de archivos de Azure adicional y distribuya los contenedores o imágenes entre los recursos compartidos.
Linux
"[permiso denegado] Cuota de disco superada" al intentar abrir un archivo
En Linux, es posible que reciba un mensaje de error similar al siguiente:
<filename> [permiso denegado] Cuota de disco superada
Ha alcanzado el límite superior de identificadores abiertos simultáneos permitidos para un archivo o directorio.
Azure Files admite 10 000 identificadores abiertos en el directorio raíz y 2000 identificadores abiertos por archivo y directorio dentro del recurso compartido.
Reduzca el número de identificadores abiertos simultáneos cerrando algunos identificadores y reintentar la operación.
Para ver los identificadores abiertos de un recurso compartido de archivos, directorio o archivo, use el cmdlet Get-AzStorageFileHandle de PowerShell.
Para cerrar los identificadores abiertos de un recurso compartido de archivos, un directorio o un archivo, use el cmdlet Close-AzStorageFileHandle de PowerShell.
Nota: Los Get-AzStorageFileHandle
cmdlets y Close-AzStorageFileHandle
se incluyen en el módulo Az PowerShell versión 2.4 o posterior. Para instalar el módulo Az PowerShell más reciente, consulte Instalación del módulo Azure PowerShell.
Cuando se copia un archivo a través de la red, el archivo se descifra en el equipo de origen, se transmite en texto no cifrado y se vuelve a cifrar en el destino. Sin embargo, es posible que vea el siguiente error al intentar copiar un archivo cifrado: "Está copiando el archivo en un destino que no admite el cifrado".
Este problema puede producirse si usa El sistema de cifrado de archivos (EFS). Los archivos cifrados con BitLocker se pueden copiar en Azure Files. Sin embargo, Azure Files no admite NTFS EFS.
Para copiar un archivo a través de la red, primero debe descifrarlo. Utilice uno de los métodos siguientes:
- Use el comando copy /d . Permite que los archivos cifrados se guarden como archivos descifrados en el destino.
- Establezca la siguiente clave del Registro:
- Ruta de acceso = HKLM\Software\Policies\Microsoft\Windows\System
- Tipo de valor = DWORD
- Name = CopyFileAllowDecryptedRemoteDestination
- Valor = 1
Tenga en cuenta que la configuración de la clave del Registro afecta a todas las operaciones de copia realizadas en recursos compartidos de red.
Error ConditionHeadersNotSupported desde una aplicación web mediante Azure Files desde el explorador
El error ConditionHeadersNotSupported se produce al acceder al contenido hospedado en Azure Files a través de una aplicación que usa encabezados condicionales, como un explorador web, se produce un error de acceso. El error indica que no se admiten los encabezados de condición.
Los encabezados condicionales aún no se admiten. Las aplicaciones que las implementan tendrán que solicitar el archivo completo cada vez que se acceda al archivo.
Cuando se carga un nuevo archivo, la propiedad CacheControl de forma predeterminada es no-cache. Para forzar a la aplicación a solicitar el archivo cada vez, la propiedad CacheControl del archivo debe actualizarse de no-cache a no-cache, no-store, must-revalidate. Esto se puede lograr mediante Explorador de Azure Storage.