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

Внимание

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

Внимание

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

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

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

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

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

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

Двоичные файлы BlobFuse доступны в репозиториях программного обеспечения Майкрософт для Linux для дистрибутивов Ubuntu, Debian, SUSE, CentOS, 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, CentOS версии: 7.0, 8.0, Debian версии: 9.0, 10.0, SUSE версии: 15, Oracle Linux 8.1. Выполните следующую команду, чтобы убедиться в том, что у вас развернута одна из этих версий:

cat /etc/*-release

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

Настройте репозиторий пакетов 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.

Установка 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 буфер с малой задержкой. В зависимости от используемого агента подготовки временный диск для виртуальных машин waagent будет подключен в каталоге /mnt для cloud-init или /mnt/resource.

Для пользователя нужно настроить права доступа к временному пути:

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

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

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

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

accountName myaccount
accountKey storageaccesskey
containerName mycontainer
authType Key

accountName — это имя учетной записи хранения, а не полный URL-адрес. Вам нужно обновить myaccountstorageaccesskeyданные хранилища и 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, чтобы оценить поддержку данной функции.

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