Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описано, как подключить контейнер, сохраненный в Хранилище BLOB-объектов Azure, к виртуальной машине Azure на базе Linux или к локальной системе Linux по протоколу NFS версии 3.0. Дополнительные сведения о поддержке NFS 3.0 в Хранилище BLOB-объектов Azure см. в разделе Поддержка протокола NFS 3.0 в хранилище BLOB-объектов Azure.
Шаг 1. Создание виртуальной сети Azure
Ваша учетная запись хранения должна содержаться в виртуальной сети. Виртуальная сеть позволяет клиентам безопасно подключаться к учетной записи хранения. Дополнительные информацию о виртуальной сети Azure и о том, как создать виртуальную сеть, см. в документации по виртуальной сети.
Клиенты в той же виртуальной сети могут подключать контейнеры в вашей учетной записи. Вы также можете подключить контейнер из клиента, работающего в локальной сети, но сначала подключить локальную сеть к виртуальной сети. Дополнительные сведения см. в разделе "Поддерживаемые сетевые подключения".
Шаг 2. Настройка безопасности сети
В настоящее время есть только один способ защитить данные в учетной записи хранения — настроить виртуальную сеть и другие параметры безопасности сети. Дополнительные сведения см. в рекомендациях по безопасности сети для хранилища BLOB-объектов.
Другие средства, используемые для защиты данных, не могут использоваться для авторизации запроса NFS 3.0. Средства включают авторизацию ключа учетной записи, безопасность Microsoft Entra и списки управления доступом (ACL). Если добавить запись для именованного пользователя или группы в ACL большого двоичного объекта или каталога, этот большой двоичный объект или каталог становится недоступным для пользователей, не являющихся суперпользователями, на клиенте. Эту запись необходимо удалить, чтобы восстановить доступ не root-пользователям на клиенте.
Внимание
Протокол NFS 3.0 использует порты 111 и 2048. Если вы подключаетесь из локальной сети, убедитесь, что клиент разрешает исходящий обмен данными через эти порты. Если вы предоставили доступ к определенным виртуальным сетям, убедитесь, что все группы безопасности сети, связанные с этими виртуальными сетями, не содержат правил безопасности, которые блокируют входящий обмен данными через эти порты.
Шаг 3. Создание и настройка учетной записи хранения
Чтобы подключить контейнер по протоколу NFS 3.0, необходимо создать учетную запись хранения. Включить существующие учетные записи нельзя.
Протокол NFS 3.0 поддерживается для учетных записей хранения общего назначения версии 2 (ценовая категория "Стандартный") и учетных записей хранилища блочных BLOB-объектов (ценовая категория "Премиум"). Дополнительные сведения об учетных записях хранения см. в этой обзорной статье.
Чтобы настроить учетную запись, выберите следующие значения.
| Настройка | Производительность уровня "Премиум" | Стандартная производительность |
|---|---|---|
| Расположение | Все доступные регионы | Все доступные регионы |
| Производительность | Премиум | Стандарт |
| Тип учетной записи | BlockBlobStorage | Общая цель версии 2 |
| Репликация | Локально избыточное хранилище (LRS), зонально избыточное хранилище (ZRS) | Локально избыточное хранилище (LRS), Зонально избыточное хранилище (ZRS), Геоизбыточное хранилище (GRS) |
| Метод подключения | Общедоступная конечная точка (выбранные сети) или частная конечная точка | Общедоступная конечная точка (выбранные сети) или частная конечная точка |
| Иерархическое пространство имен | Включен | Включен |
| NFS версии 3 | Включен | Включен |
Для остальных параметров оставьте значения по умолчанию.
Шаг 4. Создание контейнера
Создайте контейнер в учетной записи хранения с помощью любого из следующих средств или пакетов SDK.
| Инструменты | Пакеты SDK |
|---|---|
| Портал Azure | .СЕТЬ |
| AzCopy | Java |
| PowerShell | Питон |
| Azure CLI | JavaScript |
| ОТДЫХ |
По умолчанию параметр root squash для нового контейнера имеет значение No Root Squash. Этот параметр можно изменить на Root Squash или All Squash. Дополнительные сведения об этих параметрах сжатия см. в документации операционной системы.
На следующем изображении показаны параметры сжатия так, как они отображаются на портале Azure.
Шаг 5. Установите пакет AZNFS Mount Helper
Пакет вспомогательной программы монтирования AZNFS помогает клиентам Linux NFS надежно получать доступ к NFS-общим ресурсам Azure Blob, даже если IP-адрес конечной точки изменяется. Этот пакет запускает фоновое задание aznfswatchdog, которое отслеживает изменения IP-адреса узла для смонтированных общих папок.
Если обнаружено изменение, это фоновое задание обновляет правила преобразования сетевых адресов назначения (DNAT). Для получения дополнительной информации см. помощник монтирования AZNFS.
Определите, установлен ли на клиент пакет вспомогательного средства подключения AZNFS.
systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"Если пакет установлен, появится сообщение
AZNFS mounthelper is installed!.Если пакет не установлен, используйте следующую команду, чтобы установить его:
wget -O - -q https://github.com/Azure/AZNFS-mount/releases/latest/download/aznfs_install.sh | bash
На следующих дистрибутивах Linux поддерживается AZNFS:
Ubuntu (18.04 LTS, 20.04 LTS, 22.04 LTS, 24.04 LTS)
RedHat7, RedHat8, RedHat9, RedHat10
Роки8, Роки9
CentOS7, CentOS8
SUSE (SLES 15)
Совет
AZNFS 3.0 теперь доступен в публичной предварительной версии. Этот выпуск обеспечивает более высокую пропускную способность, поддерживает более крупные файлы, повышает производительность метаданных и устраняет ограничения группы пользователей. Дополнительные сведения об улучшениях и инструкциях по использованию AZNFS 3.0 см. вики AZNFS.
Шаг 6. Подключение контейнера
Создайте каталог в системе Linux и подключите контейнер в учетной записи хранения.
Чтобы создать каталог в системе Linux, выполните:
mkdir -p /nfsdataПодключите контейнер с помощью одного из описанных ниже методов. В обоих методах замените
<storage-account-name>заполнитель именем учетной записи хранения. Затем замените<container-name>именем контейнера.Чтобы общий ресурс был подключен автоматически при перезагрузке:
Создайте запись в
/etc/fstabфайле, добавив следующую строку:<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Выполните следующую команду, чтобы немедленно обработать
/etc/fstabзаписи и попытаться подключить предыдущий путь:mount /nfsdata
Для временного подключения, которое не сохраняется после перезагрузки, выполните следующую команду:
mount -t aznfs -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdataИспользуя
-t aznfsпараметр подключения, вы гарантируете, что клиент NFS всегда будет правильно подключен к конечной точке хранилища, даже если IP-адрес конечной точки изменяется после подключения. NFS-ресурсы, смонтированные с помощью опции-t nfs, могут быть отключены от конечной точки хранилища, если IP-адрес этой конечной точки изменяется.Другие необязательные параметры доступны с помощью команды mount. Эти параметры в первую очередь влияют на поведение на стороне клиента. Значение
sys— это единственное значение, которое поддерживает опцияsec.Опция
nconnectмонтирования работает только на клиентах, поддерживающих Azurenconnect. Использование параметраnconnectдля клиента, который не поддерживается, уменьшает пропускную способность и приводит к истечению времени ожидания команд или их некорректной работе.Дополнительные сведения о том, как обеспечить поддержку Azure
nconnectв клиенте, см. в статье "Увеличение числа TCP-подключений".
Устранение распространенных ошибок
| Ошибка | Причина/разрешение |
|---|---|
Access denied by server while mounting |
Убедитесь, что клиент работает в поддерживаемой подсети. Дополнительные сведения см. в разделе "Поддерживаемые сетевые расположения". |
No such file or directory |
Команду mount и ее параметры лучше не копировать, а вручную вводить непосредственно в терминале. Если вы скопируете любую часть этой команды в терминал из другого приложения, скрытые символы в скопированных данных могут вызвать ошибку. Эта ошибка также может появиться, если для учетной записи не включена поддержка NFS 3.0. |
Permission denied |
По умолчанию для вновь созданного контейнера NFS версии 3.0 устанавливается режим доступа 0750. Нерутовые пользователи не имеют доступа к тому. Если требуется доступ пользователей, не имеющих прав root, то пользователи с правами root должны изменить режим на 0755. Ниже приведен пример команды: sudo chmod 0755 /nfsdata |
EINVAL ("Invalid argument"( |
Эта ошибка может возникать при попытке клиента:
|
EROFS ("Read-only file system"( |
Эта ошибка может возникать при попытке клиента:
|
NFS3ERR_IO/EIO ("Input/output error"( |
Эта ошибка может возникать, когда клиент пытается прочитать, записать или задать атрибуты больших двоичных объектов, которые хранятся на архивном уровне доступа. |
Ошибка OperationNotSupportedOnSymLink |
Эта ошибка может быть возвращена во время операции записи через хранилище BLOB-объектов или API Azure Data Lake Storage. Использование этих API для записи или удаления символьных ссылок, созданных с помощью NFS 3.0, запрещено. Используйте конечную точку NFS версии 3.0 для работы с символьными ссылками. |
mount: /nfsdata: bad option; |
Установите программу-помощник NFS с помощью sudo apt install nfs-common. |
Connection Timed Out |
Убедитесь, что клиент разрешает исходящий обмен данными через порты 111 и 2048. Протокол NFS 3.0 использует эти порты. Убедитесь, что вы подключаете учетную запись хранения с помощью конечной точки хранилища BLOB-объектов, а не конечной точки Data Lake Storage. |
Ограничения и устранение неполадок для средства монтирования AZNFS.
Дополнительные сведения см. в помощнике монтирования AZNFS.