Прочитать на английском

Поделиться через


Устранение неполадок с подключением и доступом Файлы Azure (SMB)

В этой статье перечислены распространенные проблемы, которые могут возникнуть при попытке подключиться к общим папкам Azure и получить доступ к нему из клиентов Windows или Linux. Кроме того, здесь представлены возможные причины этих проблем и способы их устранения.

Примечание

Статья была полезной? Ваши входные данные важны для нас. Нажмите кнопку "Отзывы" на этой странице, чтобы сообщить нам, насколько хорошо эта статья работала для вас или как мы можем улучшить ее.

Важно!

Эта статья относится только к общим папкам SMB. Дополнительные сведения о общих папках сетевой файловой системы (NFS) см. в статье "Устранение неполадок с общими папками Azure NFS".

Применяется к

Тип общей папки SMB NFS
Стандартные общие папки (GPv2), LRS/ZRS
Стандартные общие папки (GPv2), GRS/GZRS
Общие папки уровня "Премиум" (FileStorage), LRS/ZRS

Не удается подключиться к общей папке Azure или подключить ее

Выберите вкладку Windows или Linux в зависимости от клиентской операционной системы, которую вы используете для доступа к общим папкам Azure.

Клиенты Linux могут использовать AzFileDiagnostics для автоматизации обнаружения симптомов и обеспечения правильности необходимых компонентов.

Ниже приведены распространенные причины этой проблемы:

  • Вы используете дистрибутив Linux с устаревшим клиентом SMB. Дополнительные сведения о распространенных дистрибутивах Linux в Azure с совместимыми клиентами см. в статье Использование Файлов Azure с Linux.
  • Служебные программы SMB (cifs-utils) не установлены на клиенте.
  • Минимальная версия SMB 2.1 недоступна на клиенте.
  • Шифрование SMB 3.x не поддерживается на клиенте. В приведенной выше таблице представлен список дистрибутивов Linux, поддерживающих подключение из локальной среды и между регионами с использованием шифрования. В других дистрибутивах нужно использовать ядро 4.11 или более поздней версии.
  • Вы пытаетесь подключиться к общей папке Azure с виртуальной машины Azure, и виртуальная машина не в том же регионе, что и учетная запись хранения.
  • Если для учетной записи хранения включен параметр Требуется безопасное перемещение, то служба файлов Azure разрешает подключения только по протоколу SMB 3.x с шифрованием.

Решение

Чтобы устранить эту проблему, используйте средство устранения неполадок с подключением в службе файлов Azure для Linux. Это средство предоставляет следующие возможности:

  • Помогает проверить среду выполнения клиента.
  • Выявляет несовместимые конфигурации клиента, которые приведут к ошибкам доступа в файлах Azure.
  • Предоставляет рекомендации для самостоятельного исправления.
  • Собирает диагностические трассировки.

"Mount error(13): Permission denied" (Ошибка подключения(13). Отказ в разрешении) при подключении общей папки Azure

Причина 1: незашифрованный коммуникационный канал

По соображениям безопасности подключения к общим папкам Azure блокируются, если канал связи не зашифрован, и попытка подключения не выполняется из того же центра обработки данных, где находятся общие папки Azure. Незашифрованные подключения в одном центре обработки данных также могут быть заблокированы, если в учетной записи хранения включен параметр Требуется безопасное перемещение. Зашифрованный канал связи предоставляется только в том случае, если клиентская ОС пользователя поддерживает шифрование SMB.

Подробнее см. в статье Предварительные требования для подключения файлового ресурса Azure с помощью Linux и пакета cifs-utils.

Решение для причины 1
  1. Подключитесь из клиента, который поддерживает шифрование SMB или подключитесь из виртуальной машины в том же центре обработки данных, что и учетная запись хранения Azure, используемая для общей папки Azure.
  2. Убедитесь, что параметр Требуется безопасное перемещение отключен в учетной записи хранения, если клиент не поддерживает шифрование SMB.
Причина 2. В учетной записи хранения включены правила виртуальной сети или брандмауэра или порт 445 заблокирован.

Если для учетной записи хранения настроены правила виртуальной сети и брандмауэра, доступ сетевого трафика будет запрещен, если IP-адрес клиента или виртуальная сеть не разрешают доступ. Кроме того, если ваша компания или ISP блокирует исходящий порт 445, вы не сможете подключить общую папку.

Решение для причины 2

Убедитесь, что правила виртуальной сети и брандмауэра настроены правильно в учетной записи хранения и разрешенный порт 445. Чтобы проверить, вызвана ли проблема виртуальными сетями или правилами брандмауэра, можно временно изменить параметр учетной записи хранения, чтобы разрешить доступ из всех сетей. Подробнее см. в статье Настройка брандмауэров службы хранилища Azure и виртуальных сетей (предварительная версия).

Причина 3. Клиент SMB настроен для использования NTLMv1

Файлы Azure поддерживает только NTLMv2 (только ключ учетной записи хранения) и проверку подлинности Kerberos для общих папок SMB. NTLMv1 не поддерживается. Ядро 3.3 и более поздние версии по умолчанию для NTLMv2, если не переопределен параметр подключения sec . Ядра 4.4 и более поздних версий включите NTLMv2 по умолчанию и отключите LANMAN. В конфигурациях по умолчанию NTLMv1 хранится только в качестве варианта согласования. Дополнительные сведения см. в документации по ОС.

Решение для причины 3

Убедитесь, что команды подключения SMB не переопределяют проверку подлинности NTLMv2 по умолчанию с помощью sec параметра. Этот sec параметр никогда не должен использоваться ntlm или ntlmi при подключении к общим папкам SMB Azure. Если вы устанавливаете глобальные параметры в файле /etc/samba/smb.conf, убедитесь, что вы не отключаете NTLMv2.

Причина 4. Доступ к ключу учетной записи хранения отключен или запрещен с помощью политики

Если доступ к ключу учетной записи хранения отключен или запрещен для учетной записи хранения, маркеры SAS и ключи доступа не будут работать.

Решение для причины 4

Вместо этого используйте проверку подлинности на основе удостоверений. Сведения о предварительных требованиях и инструкциях см. в статье "Включение проверки подлинности Active Directory через SMB для клиентов Linux, обращаюющихся к Файлы Azure".

Отображается ошибка «Mount error(115): Operation now in progress» (Ошибка подключения (115). Идет выполнение операции) при подключении службы файлов Azure с помощью SMB 3.x

Причина

Сейчас некоторые дистрибутивы Linux не поддерживают функции шифрования в SMB 3.x. Из-за этого при попытке подключения службы файлов Azure с помощью SMB 3.x пользователь может получить сообщение об ошибке 115. SMB 3.x с полным шифрованием поддерживается только в последней версии дистрибутива Linux.

Решение

Функция шифрования протокола SMB 3.x для Linux появилась в ядре версии 4.11. Эта функция позволяет подключать общую папку Azure из локальной среды или другого региона Azure. Некоторые дистрибутивы Linux, возможно, изменились с ядра 4.11 на старые версии ядра Linux, которые они поддерживают. Чтобы определить, поддерживает ли ваша версия Linux SMB 3.x с шифрованием, обратитесь к разделу Use Файлы Azure with Linux.

Если клиент SMB Linux не поддерживает шифрование, подключите Файлы Azure с помощью SMB 2.1 с виртуальной машины Linux, которая находится в том же центре обработки данных Azure, что и общая папка. Убедитесь, что параметр Требуется безопасное перемещение отключен в учетной записи хранения.

Отображается сообщение "Mount error(112): Host is down" (Ошибка подключения (112). Узел не работает) из-за истечения времени ожидания повторного подключения

Ошибка подключения (112) возникает в клиенте Linux, если он бездействует в течение длительного времени. После длительного простоя клиент отключается и время ожидания подключения.

Причина

Подключение может бездействовать по следующим причинам:

  • Сбои сетевого подключения, которые препятствуют повторному установке TCP-подключения к серверу при использовании параметра подключения по умолчанию "soft".
  • Последние исправления повторного подключения, которые отсутствуют в старых ядрах.
Решение

Эта проблема повторного подключения в ядре Linux исправлена в рамках следующих изменений:

Однако эти изменения еще не переносились ко всем дистрибутивам Linux. Если вы используете популярный дистрибутив Linux, вы можете проверить, Файлы Azure с Linux, чтобы узнать, какая версия дистрибутива имеет необходимые изменения ядра.

Обходное решение

Можно обойти эту проблему, указав жесткое подключение. Жесткое подключение вынудит клиент ожидать установки подключения или явного прерывания. Вы можете использовать этот вариант, чтобы избежать ошибок из-за истечения времени ожидания сети. Тем не менее этот способ может породить неопределенное время ожидания. Будьте готовы останавливать подключения при необходимости.

Если не удается выполнить обновление до последних версий ядра, можно решить эту проблему, поместив в файловый ресурс Azure файл и перезаписывая его каждые 30 секунд (или чаще). Это должна быть операция записи, такая как перезапись даты создания или изменения файла. В противном случае можно получить кэшированные результаты, в итоге операция записи не активирует повторное подключение.

Не удается получить доступ, изменить или удалить файловый ресурс Azure (или моментальный снимок общего ресурса)

Ошибка "Неверное имя пользователя или пароль" после отработки отказа, инициированной клиентом

В сценарии, инициированном клиентом отработки отказа с геоизбыточными учетными записями хранения, дескрипторы файлов и аренды не сохраняются при отработке отказа. Клиенты должны отключить и повторно подключить общие папки.

Ошибка "Нет доступа" при попытке получить доступ к общей папке Azure или удалить ее

При попытке получить доступ к общей папке Azure или удалить ее с помощью портал Azure может появиться следующая ошибка:

Код ошибки доступа: 403

Причина 1: правила виртуальной сети или брандмауэра включены для учетной записи хранения

Решение для причины 1

Убедитесь, что правила виртуальной сети и брандмауэра надлежащим образом настроены для учетной записи хранения. Чтобы проверить, вызывают ли проблемы правила виртуальной сети или брандмауэра, временно измените параметр учетной записи хранения, чтобы разрешить доступ из всех сетей. Подробнее см. в статье Настройка брандмауэров службы хранилища Azure и виртуальных сетей (предварительная версия).

Причина 2. У учетной записи пользователя нет доступа к учетной записи хранения.

Решение для причины 2

Перейдите к учетной записи хранения, в которой находится общая папка Azure, выберите элемент управления доступом (IAM) и убедитесь, что у вашей учетной записи пользователя есть доступ к учетной записи хранения. Дополнительные сведения см. в статье Защита учетной записи хранения с помощью управления доступом на основе ролей (Azure RBAC).

Блокировки файлов и аренды

Если вы не можете изменить или удалить общую папку Azure или моментальный снимок, это может быть связано с блокировками файлов или арендой. Файлы Azure предоставляют два метода для защиты от случайного изменения или удаления общих папок Azure и моментальных снимков общих папок.

  • Блокировка ресурса учетной записи хранения. Все ресурсы Azure, в том числе учетные записи хранения, поддерживают блокировку ресурсов. Блокировки могут быть помещены в учетную запись хранения администратором или службами, такими как Azure Backup. Существуют два варианта блокировок ресурсов: изменение, которое предотвращает все изменения учетной записи хранения и ее ресурсов, а также удаление, которое только предотвращает удаление учетной записи хранения и ее ресурсов. При изменении или удалении общих папок с помощью поставщика ресурсов Microsoft.Storage к общим папкам и моментальным снимкам общих папок Azure применяются блокировки ресурсов. Большинство операций портала, командлеты Azure PowerShell для Файлы Azure с Rm именем (например, ) и команды Azure CLI в share-rm группе команд (например, Get-AzRmStorageShareaz storage share-rm list) используют Microsoft.Storage поставщика ресурсов. Некоторые средства и служебные программы, такие как Обозреватель службы хранилища, устаревшие командлеты Файлы Azure управления PowerShell без Rm имени (например, ) и устаревшие команды Файлы Azure CLI в share группе команд (например, Get-AzStorageShareaz storage share list) используют устаревшие API в API FileREST, которые обходят Microsoft.Storage поставщик ресурсов и блокировки ресурсов. Дополнительные сведения об устаревших API управления, которые предоставляются в наборе FileREST API, см. в разделе Уровень управления в Файлах Azure.

  • Аренда общих папок и моментальных снимков общих папок. Аренда общей папки — это тип защищаемой блокировки, применяемый для общих папок и моментальных снимков общих папок в Azure. Аренды могут быть помещены в отдельные общие папки Azure или моментальные снимки файловых ресурсов администраторами путем вызова API с помощью скрипта или дополнительных служб, таких как Azure Backup. Если к общей папке или моментальному снимку общей папки Azure применена аренда, удаление и изменение такого объекта возможно только при указании правильного идентификатора аренды. Администраторы также могут освободить аренду перед операциями изменения, которые требуют идентификатора аренды или разрыва аренды, что не требует идентификатора аренды. Дополнительные сведения об аренде общих папок см. в этой статье.

Так как блокировки ресурсов и аренды могут препятствовать предполагаемым операциям администратора в вашей учетной записи хранения или общих папках Azure, возможно, потребуется удалить все блокировки ресурсов или аренды, которые были помещены в ресурсы вручную или автоматически с помощью служб, таких как Azure Backup. Следующий скрипт удаляет все блокировки и аренды, которые применялись к ресурсу. Не забудьте заменить <resource-group> и <storage-account> соответствующими значениями из своей среды.

Перед выполнением следующего скрипта необходимо установить последнюю версию модуля PowerShell служба хранилища Azure.

Важно!

Дополнительные службы, которые применяют блокировку и аренду к ресурсам общих папок и моментальных снимков общих папок в Файлах Azure, могут время от времени повторно применять эти процедуры. Изменение или удаление заблокированных ресурсов по добавленным службам может повлиять на обычную работу этих служб, например удаление моментальных снимков общих ресурсов, управляемых 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 { }
    }

Не удается изменить, переместить, переименовать или удалить файл или каталог

Выберите вкладку Windows или Linux в зависимости от операционной системы клиента, которую вы используете для доступа к общим папкам Azure.

Клиенты Linux могут использовать AzFileDiagnostics для автоматизации обнаружения симптомов и обеспечения правильности необходимых компонентов.

В Linux могут появиться следующие проблемы.

Открытые дескрипторы файлов или каталогов

Причина

Эта проблема обычно возникает, если файл или каталог имеет открытый дескриптор.

Решение

Если клиенты SMB закрыли все открытые дескрипторы, но проблема появляется снова, выполните следующие действия.

  • Для просмотра открытых дескрипторов используйте командлет PowerShell Get-AzStorageFileHandle.

  • Чтобы закрыть открытые дескрипторы, используйте командлет PowerShell Close-AzStorageFileHandle.

Примечание

Close-AzStorageFileHandle Командлеты Get-AzStorageFileHandle включены в модуль Az PowerShell версии 2.4 или более поздней версии. Информация о том, как установить модуль AZ PowerShell последней версии, приведена в статье Установка модуля Azure PowerShell.

Не удается подключить моментальный снимок общей папки Azure в Linux

"Ошибка подключения(22): недопустимый аргумент" при попытке подключить моментальный снимок общей папки Azure в Linux

Причина

snapshot Если параметр команды mount не передается в распознаваемом формате, mount эта команда может завершиться ошибкой. Чтобы подтвердить его, проверьте сообщения журнала ядра (dmesg), а dmesg отобразит запись журнала, cifs: Bad value for 'snapshot'например.

Решение

Убедитесь, что вы передаете snapshot параметр для mount команды в правильном формате. См. страницу вручную mount.cifs (например, man mount.cifs). Распространенная ошибка передает метку времени GMT в неправильном формате, например использование дефисов или двоеточий вместо периодов. Дополнительные сведения см. в разделе "Подключение моментального снимка общей папки".

"Недопустимый маркер моментального снимка" при попытке подключения моментального снимка общей папки Azure в Linux

Причина

Если параметр моментального снимка mount передается начиная с @GMT, но формат по-прежнему неправильный (например, использование дефисов и двоеточий вместо периодов), mount команда может завершиться ошибкой.

Решение

Убедитесь, что вы передаете метку времени GMT в правильном формате.@GMT-year.month.day-hour.minutes.seconds Дополнительные сведения см. в разделе "Подключение моментального снимка общей папки".

"Ошибка подключения(2): нет такого файла или каталога" при попытке подключить моментальный снимок общей папки Azure

Причина

Если моментальный снимок, который вы пытаетесь подключить, не существует, mount команда может завершиться ошибкой. Чтобы подтвердить его, проверьте сообщения журнала ядра (dmesg), а dmesg отобразит запись журнала, например:

[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

Решение

Убедитесь, что моментальный снимок, который вы пытаетесь подключить. Дополнительные сведения о том, как вывести список доступных моментальных снимков для определенной общей папки Azure, см. в статье "Подключение моментального снимка общей папки".

Квота диска или ошибки сети из слишком большого количества открытых дескрипторов

Выберите вкладку Windows или Linux в зависимости от операционной системы клиента, которую вы используете для доступа к общим папкам Azure.

Клиенты Linux могут использовать AzFileDiagnostics для автоматизации обнаружения симптомов и обеспечения правильности необходимых компонентов.

Отображается сообщение "[permission denied] Disk quota exceeded" ([Отказано в разрешении]. Превышена дисковая квота) при попытке открыть файл

В Linux может появиться сообщение об ошибке, похожее на следующее:

<имя> файла [разрешение запрещено] Превышена квота диска

Причина

Вы достигли верхнего предела параллельных открытых дескрипторов, которые разрешены для файла или каталога.

Файлы Azure поддерживает 10 000 открытых дескрипторов в корневом каталоге и 2000 открытых дескрипторов на файл и каталог в общей папке.

Решение

Уменьшите количество параллельных открытых дескрипторов, закрывая некоторые дескрипторы, а затем повторите операцию.

Чтобы просмотреть открытые дескрипторы для общей папки, каталога или файла, используйте командлет PowerShell Get-AzStorageFileHandle.

Чтобы закрыть открытые дескрипторы для общей папки, каталога или файла, используйте командлет PowerShell Close-AzStorageFileHandle.

Примечание

Close-AzStorageFileHandle Командлеты Get-AzStorageFileHandle включены в модуль Az PowerShell версии 2.4 или более поздней версии. Информация о том, как установить модуль AZ PowerShell последней версии, приведена в статье Установка модуля Azure PowerShell.

Ошибка "Вы копируете файл в место, которое не поддерживает шифрование"

Когда файл копируется по сети, он расшифровывается на исходном компьютере, передается в виде обычного текста и повторно шифруется в месте назначения. Тем не менее при попытке скопировать зашифрованный файл может появиться следующее сообщение об ошибке: "Вы копируете файл в место, которое не поддерживает шифрование".

Причина

Эта проблема может возникнуть при использовании шифрованной файловой системы (EFS). Файлы с шифрованием BitLocker нельзя копировать в службу файлов Azure. Однако Файлы Azure не поддерживает NTFS EFS.

Обходное решение

Чтобы скопировать файл по сети, его сначала необходимо расшифровать. Используйте один из следующих методов:

  • Используйте команду copy /d. Она позволяет сохранить зашифрованные файлы как расшифрованные файлы в месте назначения.
  • Задайте следующий раздел реестра:
    • путь: HKLM\Software\Policies\Microsoft\Windows\System;
    • тип значения: DWORD;
    • Name = CopyFileAllowDecryptedRemoteDestination;
    • Value = 1.

Помните, что настройка раздела реестра влияет на все операции копирования в сетевые общие папки.

Ошибка ConditionHeadersNotSupported у веб-приложения, использующего службу файлов Azure из браузера

Ошибка ConditionHeadersNotSupported возникает при доступе к содержимому, размещенному в службе файлов Azure, через приложение, в котором используются условные заголовки, например в веб-браузере, и происходит сбой доступа. Ошибка указывает, что заголовки условий не поддерживаются.

Снимок экрана: сообщение об ошибке ConditionHeadersNotSupported.

Причина

Условные заголовки пока не поддерживаются. Приложения, в которых реализована эта возможность, должны запрашивать полный файл при каждом обращении к файлу.

Обходное решение

При отправке нового файла свойство CacheControl по умолчанию не является кэшем. Чтобы принудить приложение запрашивать файл каждый раз, свойство CacheControl файла должно обновляться из без кэша до no-cache, no-store, должно быть обновлено. Это можно сделать с помощью Обозревателя службы хранилища Azure.

Screeshot, показывающий свойство файла CacheControl.

См. также

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.