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


Как примонтировать хранилище blob-объектов Azure как файловую систему с помощью BlobFuse v1

Внимание

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

BlobFuse — это драйвер виртуальной файловой системы для использования в хранилище BLOB Azure. BlobFuse позволяет получить доступ к имеющимся блочным BLOB-данным в вашем аккаунте хранения через файловую систему Linux. BlobFuse использует схему виртуального каталога с косой чертой (/) в качестве разделителя.

В этом руководстве показано, как использовать BLOBFuse версии 1 и подключить контейнер хранилища BLOB-объектов в Linux и получить доступ к данным. Дополнительные сведения о BLOBFuse версии 1 см. в разделе readme и wiki.

Предупреждение

BlobFuse не гарантирует 100% совместимости с POSIX, так как он просто преобразует запросы в Blob REST APIs. Например, операции переименования в POSIX являются атомарными, а в BlobFuse — нет. Полный список различий между собственной файловой системой и BlobFuse см. в репозитории исходного кода BlobFuse.

Установка BLOBFuse версии 1 в Linux

Двоичные файлы BLOBFuse доступны в репозиториях программного обеспечения Майкрософт для Linux для Ubuntu, Debian, SUSE, Oracle Linux и RHEL. Чтобы установить BlobFuse в этих дистрибутивах, настройте один из репозиториев из списка. Вы также можете создавать двоичные файлы из исходного кода, следуя действиям по установке службы хранилища Azure, если для вашего дистрибутива нет двоичных файлов.

BlobFuse публикуется в репозитории Linux для версий Ubuntu: 16.04, 18.04 и 20.04, RHEL версии: 7.5, 7.8, 7.9, 8.0, 8.1, 8.2, Debian версии: 9.0, 10.0, SUSE версии: 15, Oracle Linux 8.1. Выполните следующую команду, чтобы убедиться в том, что у вас развернута одна из этих версий:

cat /etc/*-release

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

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

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

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

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

Установка BLOBFuse версии 1

sudo yum install blobfuse

Подготовка к монтажу

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

Примечание.

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

Используйте рамдиск для временного пути (необязательно)

В следующем примере создается RAM-диск на 16 ГБ и каталог для BlobFuse. Выберите размер в соответствии со своими потребностями. Такой RAM-диск позволяет BlobFuse открывать файлы размером до 16 ГБ.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp

Использование диска SSD в качестве временного пути

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

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

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

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

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

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

accountName myaccount
accountKey storageaccesskey
containerName mycontainer
authType Key

accountName — это имя учетной записи хранения, а не полный URL-адрес. Вам нужно обновить myaccount, storageaccesskey, и mycontainer данными вашего хранилища.

Создайте этот файл с помощью следующей команды:

sudo touch /path/to/fuse_connection.cfg

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

sudo chmod 600 /path/to/fuse_connection.cfg

Примечание.

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

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

sudo mkdir ~/mycontainer

Маунт

Примечание.

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

Чтобы подключить BlobFuse, выполните следующую команду вашим пользователем. Эта команда монтирует контейнер, указанный в "/path/to/fuse_connection.cfg", на местоположение "/mycontainer".

sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp  --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

Примечание.

При использовании учетной записи ADLS необходимо включить --use-adls=true.

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

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

Перманентное монтирование

Сведения о том, как сохранить подключение, см. в разделе Сохранение на вики-сайте BlobFuse.

Поддержка функций

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. Если вы включили любую из этих возможностей, см. Сведения о поддержке функций хранилища BLOB-объектов в учетных записях хранения Azure, чтобы оценить поддержку данной функции.

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