Подключение контейнера Хранилище BLOB-объектов Azure в Linux с помощью BLOBFuse2

Внимание

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

В этой статье показано, как установить и настроить BLOBFuse2, подключить контейнер BLOB-объектов Azure и получить доступ к данным в контейнере. Основными шагами являются:

Установка BlobFuse2

Настройка BlobFuse2

Подключение контейнера BLOB-объектов

Доступ к данным

Установка BLOBFuse2

У вас есть два варианта установки BLOBFuse2:

Вариант 1. Установка BLOBFuse2 из репозиториев программного обеспечения Майкрософт для Linux

Сведения о поддерживаемых дистрибутивах см. в выпусках BlobFuse2.

Сведения о поддержке libfuse см. в разделе BLOBFuse2 README.

Чтобы узнать используемую версию Linux, выполните следующую команду:

cat /etc/*-release

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

Чтобы установить BLOBFuse2 из репозиториев, выполните следующие действия.

Настройка репозитория пакетов Майкрософт

Установка BlobFuse2

Настройка репозитория пакетов Майкрософт

Настройте репозиторий пакетов Linux для продуктов Майкрософт.

Например, в дистрибутиве Redhat Enterprise Linux 8:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

Аналогичным образом измените URL-адрес, чтобы .../rhel/7/... указать на дистрибутив Redhat Enterprise Linux 7.

Установка BlobFuse2

sudo yum install blobfuse2

Вариант 2. Создание двоичных файлов из исходного кода

Чтобы создать двоичные файлы BLOBFuse2 из исходного кода:

  1. Установка зависимостей:

    1. Установите Git:

      sudo apt-get install git
      
    2. Установите зависимости BLOBFuse2.

      В Ubuntu:

      sudo apt-get install libfuse3-dev fuse3 -y
      
  2. Клонируйте репозиторий.

    sudo git clone https://github.com/Azure/azure-storage-fuse/
    sudo cd ./azure-storage-fuse
    sudo git checkout main
    
  3. Сборка BLOBFuse2:

    go get
    go build -tags=fuse3
    

Совет

Если вам нужно установить Go, см. статью "Скачать и установить Go".

Настройка BLOBFuse2

Вы можете настроить BLOBFuse2 с помощью различных параметров. Ниже приведены некоторые типичные параметры:

  • Расположение и параметры ведения журнала
  • Временный путь к файлу для кэширования
  • Сведения об учетной записи хранения Azure и контейнере BLOB-объектов, который будет подключаться

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

Дополнительные сведения о каждом из параметров конфигурации для BLOBFuse2 и их указании см. в следующих статьях:

Чтобы настроить BLOBFuse2 для подключения:

  1. Настройка кэширования.
  2. Создайте пустой каталог для подключения контейнера BLOB-объектов.
  3. Авторизация доступа к учетной записи хранения.

Настройка кэширования

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

Настройка кэширования для потоковой передачи больших файлов

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

stream:
    block-size-mb:
        For read only mode, the size of each block to be cached in memory while streaming (in MB)
        For read/write mode, the size of newly created blocks
    max-buffers: The total number of buffers to store blocks in
    buffer-size-mb: The size for each buffer

Чтобы быстро приступить к работе с некоторыми параметрами для базового сценария потоковой передачи, ознакомьтесь с примером файла конфигурации потоковой передачи.

Настройка кэширования для небольших файлов

Небольшие файлы кэшируются во временный путь, указанный file_cache: в файле конфигурации:

file_cache:
    path: <path to local disk cache>

Примечание.

BlobFuse2 хранит все содержимое открытых файлов во временном пути. Убедитесь, что у вас достаточно места, чтобы содержать все открытые файлы.

Существует три распространенных варианта настройки временного пути для кэширования файлов:

Использование локального высокопроизводительного диска

Если вы используете существующий локальный диск для кэширования файлов, выберите диск, который обеспечивает лучшую производительность, например твердотельный диск (SSD).

Использование диска ОЗУ

В следующем примере создается диск ОЗУ размером 16 ГБ и каталог для BLOBFuse2. Выберите размер, соответствующий вашим требованиям. BlobFuse2 использует диск ОЗУ для открытия файлов размером до 16 ГБ.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfuse2tmp
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
Использование SSD

В Azure можно использовать временные диски SSD, доступные на виртуальных машинах, чтобы обеспечить буфер с низкой задержкой для BLOBFuse2. В зависимости от используемого агента подготовки подключите временный диск на виртуальных машинах /mnt для cloud-init или /mnt/resource для виртуальных машин Microsoft Azure Linux Agent (waagent).

Убедитесь, что у пользователя есть доступ к временному пути:

sudo mkdir /mnt/resource/blobfuse2tmp -p
sudo chown <youruser> /mnt/resource/blobfuse2tmp

Создание пустого каталога для подключения контейнера BLOB-объектов

Чтобы создать пустой каталог для подключения контейнера BLOB-объектов:

mkdir ~/mycontainer

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

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

  • Ключ доступа к учетной записи хранения
  • Подписанный URL-адрес
  • Управляемое удостоверение
  • Субъект-служба

Вы можете предоставить сведения о авторизации в файле конфигурации или в переменных среды. Дополнительные сведения см. в разделе "Настройка параметров для BLOBFuse2".

Подключение контейнера BLOB-объектов

Внимание

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

BlobFuse2 не поддерживает сосуществование с NFS на том же пути подключения. Результаты выполнения BLOBFuse2 на том же пути подключения, что и NFS, не определены и могут привести к повреждению данных.

Чтобы подключить контейнер BLOB-объектов Azure блочного объекта с помощью BlobFuse2, выполните следующую команду. Команда подключает контейнер, указанный в ./config.yaml расположении ~/mycontainer:

sudo blobfuse2 mount ~/mycontainer --config-file=./config.yaml

Примечание.

Полный список параметров подключения см. в разделе "Команды подключения BLOBFuse2".

Теперь вы сможете обращаться к блочным BLOB-объектам через обычные API файловой системы Linux. Чтобы протестировать развертывание, попробуйте создать новый каталог и файл:

cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt

Как получить доступ к данным

В общем случае вы можете работать с подключенным хранилищем BlobFuse2, как с обычной файловой системой Linux. Он использует схему виртуального каталога с косой чертой (/) в качестве разделителя в пути к файлу и поддерживает базовые операции файловой системы, такие как mkdir, writermdiropendirreaddirunlinkclosetruncatereadcreateopenи . statrename

Однако следует учитывать некоторые ключевые различия в функциональных возможностях:

Поддерживаемые компоненты

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

Storage account type Служба хранилища BLOB-объектов (поддержка по умолчанию) Data Lake Storage 2-го поколения 1 NFS 3.0 1 SFTP 1
Стандартная общего назначения версии 2 Да Да Да Да
Блочные BLOB-объекты (цен. категория "Премиум") Да Да Да Да

1 Azure Data Lake Storage 2-го поколения, протокол NFS 3.0 и SSH File Transfer Protocol (SFTP) поддерживают все необходимые учетные записи хранения с включенным иерархическим пространством имен.

См. также

Следующие шаги