Что такое BlobFuse? - BlobFuse2

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

Сведения о проекте BlobFuse2 с открытым кодом

BlobFuse2 — это проект открытый код, который использует библиотеку открытый код libfuse (fuse3) для взаимодействия с модулем ядра FUSE Linux. BlobFuse2 реализует операции файловой системы с помощью REST API службы хранилища Azure.

Проект Открытый код BlobFuse2 находится на сайте GitHub:

Лицензирование

Проект BlobFuse2 лицензируется по лицензии MIT.

Компоненты

Полный список возможностей BlobFuse2 приводится в файле README для BlobFuse2. Вот некоторые из ключевых задач, которые можно выполнить с помощью BlobFuse2:

  • Подключите контейнер Хранилище BLOB-объектов Azure или файловую систему Azure Data Lake Storage 2-го поколения в Linux. (BlobFuse2 поддерживает учетные записи хранения с настроенными неструктурированными пространствами имен или иерархическими пространствами имен.)
  • Используйте основные операции файловой системы, такие как mkdir, opendirreaddir, rmdir, open, read, create, write, unlinkclose, truncate, statи rename.
  • Используйте локальное кэширование файлов, чтобы улучшить время последующего доступа.
  • Получите аналитические сведения о действиях подключения и использовании ресурсов с помощью монитора работоспособности BlobFuse2.

Другие ключевые функции BlobFuse2:

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

Усовершенствования BlobFuse2 из BlobFuse версии 1

BlobFuse2 имеет более высокую поддержку функций и улучшенную производительность в нескольких пользовательских сценариях из BlobFuse версии 1. Подробный список улучшений см. в файле сведений BlobFuse2. Ниже приведена сводка улучшений BlobFuse2 из BlobFuse версии 1:

  • улучшенное кэширование;
  • дополнительная поддержка управления с помощью новых команд Azure CLI;
  • Дополнительная поддержка ведения журнала
  • Добавление потоковой передачи записи для больших файлов (ранее поддерживалась только потоковая передача для чтения).
  • Новый монитор работоспособности BlobFuse2, который поможет вам получить аналитические сведения о действиях подключения и использовании ресурсов
  • совместимость и возможность обновления для существующих пользователей BlobFuse версии 1;
  • проверка версии и запрос на обновление;
  • поддержка шифрования файла конфигурации.

См. список улучшений производительности BlobFuse2 из BlobFuse версии 1.

Для пользователей BlobFuse версии 1

Усовершенствования, предоставляемые BlobFuse2, являются веской причиной для обновления и миграции на BlobFuse2. Если вы не готовы к миграции, вы можете использовать BlobFuse2 для подключения контейнера BLOB-объектов, используя те же параметры конфигурации и параметры Azure CLI, которые используются с BlobFuse версии 1.

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

Поддержка

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

Ограничения

BlobFuse2 не гарантирует 100-процентное соответствие POSIX, так как BlobFuse2 просто преобразует запросы в REST API BLOB-объектов. Например, операции переименования являются атомарными в POSIX, но не в BlobFuse2.

См. полный список различий между собственной файловой системой и BlobFuse2.

Различия между файловой системой Linux и BlobFuse2

Во многих отношениях можно использовать хранилище, подключенное к BlobFuse2, как и собственную файловую систему Linux. Схема виртуального каталога одинакова и использует косую черту (/) в качестве разделителя. Основные операции файловой системы, такие как mkdir, readdiropendir, rmdir, open, read, create, , writeclose, unlink, truncate, , statи, работают так же, как и rename в файловой системе Linux.

BlobFuse2 отличается от файловой системы Linux несколькими ключевыми способами:

  • Число сведений о жестких ссылках:

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

  • Неатомарные переименования.

    Хранилище BLOB-объектов Azure не поддерживает атомарные операции переименования. На самом деле переименование одного файла — это две операции: копирование и удаление исходного файла. Каталог переименовывает рекурсивно все файлы в каталоге и переименовывает каждый файл.

  • Специальные файлы:

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

  • mkfifo:

    BlobFuse2 не поддерживает создание fifo. Попытка выполнения этого действия приводит к ошибке "функция не реализована".

  • chown и chmod:

    Data Lake Storage 2-го поколения учетные записи хранения поддерживают разрешения для каждого объекта и списки управления доступом, но блочные BLOB-объекты с неструктурированным пространством имен (FNS) — нет. Это означает, что BlobFuse2 не поддерживает операции chown и chmod для подключенных контейнеров блочных BLOB-объектов. Эти операции поддерживаются для Data Lake Storage 2-го поколения.

  • Файлы устройств или каналы.

    BlobFuse2 не поддерживает создание файлов или каналов устройств.

  • Расширенные атрибуты (x-attrs).

    BlobFuse2 не поддерживает операции с расширенными атрибутами (x-attrs).

  • Потоковая передача записи:

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

Целостность данных

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

BlobFuse2 поддерживает операции чтения и записи. Непрерывная синхронизация данных, записываемых в хранилище с помощью других API или других подключений BlobFuse2, не гарантируется. Для обеспечения целостности данных рекомендуется, чтобы несколько источников не изменяли один и тот же BLOB-объект, особенно одновременно. Если одно или несколько приложений пытаются одновременно выполнить запись в один и тот же файл, результаты могут быть непредвиденными. В зависимости от времени выполнения нескольких операций записи и актуальности кэша для каждой операции результатом может быть то, что последний модуль записи выигрывает, а предыдущие записи будут потеряны, или, как правило, обновленный файл не в нужном состоянии.

Кэширование файлов на диске

Если файл является субъектом операции записи, данные сначала сохраняются в кэше на локальном диске. Данные записываются в хранилище BLOB-объектов только после закрытия дескриптора файла. Если возникает проблема с попыткой сохранить данные в хранилище BLOB-объектов, появится сообщение об ошибке.

Потоковые операторы

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

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

Разрешения

При подключении контейнера с параметрами по умолчанию все файлы получают 770 разрешений и доступны только пользователю, который выполняет подключение. Чтобы разрешить любому пользователю доступ к подключению BlobFuse2, подключите BlobFuse2 с помощью --allow-other параметра . Этот параметр также можно настроить в файле конфигурации YAML.

Как упоминалось ранее, chown операции и chmod поддерживаются для Data Lake Storage 2-го поколения, но не для блочных BLOB-объектов FNS. chmod Выполнение операции с подключенным контейнером блочных BLOB-объектов FNS возвращает сообщение об успешном выполнении, но операция на самом деле не завершается успешно.

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

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

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

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

См. также раздел

Дальнейшие действия