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


Подключение Хранилища BLOB-объектов с использованием протокола NFS 3.0

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Обратите внимание на использование и план соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

В этой статье описано, как подключить контейнер, сохраненный в Хранилище BLOB-объектов Azure, к виртуальной машине Azure на базе Linux или к локальной системе Linux по протоколу NFS версии 3.0. Дополнительные сведения о поддержке NFS 3.0 в Хранилище BLOB-объектов Azure см. в разделе Поддержка протокола NFS 3.0 в хранилище BLOB-объектов Azure.

Шаг 1. Создание виртуальной сети Azure

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

Примечание.

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

Шаг 2. Настройка безопасности сети

В настоящее время есть только один способ защитить данные в учетной записи хранения — настроить виртуальную сеть и другие параметры безопасности сети. Рекомендации по безопасности сети для хранилища BLOB-объектов.

Любые другие средства, используемые для защиты данных, включая авторизацию ключа учетной записи, безопасность Microsoft Entra и списки управления доступом (ACL), нельзя использовать для авторизации запроса NFS 3.0. На самом деле, если добавить запись для именованного пользователя или группы в ACL большого двоичного объекта или каталога, этот файл становится недоступным на клиенте для пользователей, не являющихся корневыми. Эту запись необходимо удалить, чтобы восстановить доступ к не корневым пользователям на клиенте.

Внимание

Протокол NFS 3.0 использует порты 111 и 2048. Если вы подключаетесь из локальной сети, убедитесь, что клиент разрешает исходящий обмен данными через эти порты. Если у вас есть доступ к определенным виртуальным сетям, убедитесь, что все группы безопасности сети, связанные с этими виртуальными сетями, не содержат правил безопасности, которые блокируют входящий обмен данными через эти порты.

Шаг 3. Создание и настройка учетной записи хранения

Чтобы подключить контейнер по протоколу NFS 3.0, необходимо создать учетную запись хранения. Включить существующие учетные записи нельзя.

Протокол NFS 3.0 поддерживается для учетных записей хранения общего назначения версии 2 (ценовая категория "Стандартный") и учетных записей хранилища блочных BLOB-объектов (ценовая категория "Премиум"). Дополнительные сведения об учетных записях хранения см. в этой обзорной статье.

Для настройки учетной записи выберите следующие значения:

Параметр Производительность уровня "Премиум" Производительность уровня "Стандартный"
Расположение Все доступные регионы Все доступные регионы
Производительность Premium Стандартные
Тип учетной записи BlockBlobStorage Общего назначения версии 2
Репликация Локально избыточное хранилище (LRS); хранилище, избыточное между зонами (ZRS) Локально избыточное хранилище (LRS); хранилище, избыточное между зонами (ZRS)
Метод подключения Общедоступная конечная точка (выбранные сети) или частная конечная точка Общедоступная конечная точка (выбранные сети) или частная конечная точка
Иерархическое пространство имен Включен Включен
NFS V3 Включен Включен

Для остальных параметров оставьте значения по умолчанию.

Шаг 4. Создание контейнера

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

Инструменты Пакеты SDK
Портал Azure .NET
AzCopy Java
PowerShell Python
Azure CLI JavaScript
REST

Примечание.

По умолчанию параметр root squash для нового контейнера имеет значение No Root Squash. Но вы можете указать значения Root squash или All squash. Дополнительные сведения об этих параметрах сжатия см. в документации операционной системы.

На следующем изображении показаны параметры сжатия так, как они отображаются на портале Azure.

Снимок экрана: параметры сквошной черты в портал Azure.

Шаг 5. Установка вспомогательного пакета подключения PDFFS

Вспомогательный пакет подключения JSONFS помогает клиентам Linux NFS надежно получать доступ к общим папкам NFS больших двоичных объектов Azure, даже если IP-адрес конечной точки изменяется. Этот пакет запускает фоновое задание, которое aznfswatchdog отслеживает изменения IP-адреса конечной точки для подключенных общих папок. Если обнаружено изменение, это фоновое задание обновляет правила преобразования сетевых адресов назначения (DNAT). Дополнительные сведения см . в справке по подключению JSONFS.

  1. Определите, установлен ли на клиент пакет вспомогательного средства подключения JSONFS.

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

    Если пакет установлен, появится сообщение AZNFS mounthelper is installed! .

  2. Если пакет еще не установлен, используйте следующую команду для его установки.

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

    Примечание.

    В следующих дистрибутивах Linux поддерживается СЛУЖБА HDFS:

    • Ubuntu (18.04 LTS, 20.04 LTS, 22.04 LTS)
    • Centos7, Centos8
    • RedHat7, RedHat8, RedHat9
    • Роки8, Роки9
    • SUSE (SLES 15)

Шаг 6. Подключение контейнера

Создайте каталог в системе Linux и подключите контейнер в учетной записи хранения.

  1. Чтобы создать каталог в системе Linux, выполните:

    mkdir -p /nfsdata
    
  2. Подключите контейнер с помощью одного из описанных ниже методов. В обоих методах замените заполнитель <storage-account-name> именем учетной записи хранения, а <container-name> — именем контейнера.

    • Чтобы общая папка была подключен автоматически при перезагрузке:

      1. Создайте запись в файле /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
        
      2. Выполните следующую команду, чтобы немедленно обработать записи /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-адрес этой конечной точки изменяется.

      Другие необязательные параметры доступны с помощью команды подключения. Эти параметры в первую очередь влияют на поведение на стороне клиента. sys — это единственное значение, которое в настоящее время поддерживается параметром sec .

      Внимание

      Параметр nconnect подключения работает только на клиентах с поддержкой Azure nconnect. 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. Непривилегированные пользователи не имеют доступа к такому тому. Если требуется предоставить доступ непривилегированным пользователям,привилегированный пользователь должен установить режим доступа 0755. Пример команды: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Эта ошибка может возникать, когда клиент пытается выполнить следующие действия:
  • запись в большой двоичный объект, созданный на основе конечной точки большого двоичного объекта;
  • удаление большого двоичного объекта, который имеет моментальный снимок или находится в контейнере с активной политикой WORM (однократная запись, многократное чтение).
  • EROFS ("Read-only file system") Эта ошибка может возникать, когда клиент пытается выполнить следующие действия:
  • запись в большой двоичный объект или удаление большого двоичного объекта с активной арендой;
  • запись в большой двоичный объект или удаление большого двоичного объекта в контейнере с активной политикой WORM.
  • NFS3ERR_IO/EIO ("Input/output error") Эта ошибка может возникать, когда клиент пытается прочитать, записать или задать атрибуты больших двоичных объектов, которые хранятся на архивном уровне доступа.
    Ошибок: OperationNotSupportedOnSymLink Эта ошибка может возвращаться во время операции записи через Хранилище BLOB-объектов или API Azure Data Lake Storage 2-го поколения. Использовать эти 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 служба хранилища.

    Ограничения и устранение неполадок для вспомогательного средства подключения в ФОРМАТЕ PDFFS

    См . вспомогательный помощник по подключению JSONFS.

    См. также