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


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

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

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

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

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

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

Проект BlobFuse2 лицензирован в соответствии с лицензией MIT.

Функции

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

  • Подключите контейнер Хранилище BLOB-объектов Azure или файловую систему Azure Data Lake Storage в Linux. (BlobFuse2 поддерживает учетные записи хранения с неструктурированными пространствами имен или иерархическим пространством имен.)
  • Используйте базовые операции файловой системы, rmdirreaddirclosewriteunlinkcreaterenameopendirstatopentruncatereadтакие как mkdir, и .
  • Используйте кэширование локальных файлов для улучшения последующего времени доступа.
  • Получите аналитические сведения о действиях подключения и использовании ресурсов с помощью монитор работоспособности BLOBFuse2.

К другим ключевым функциям в BLOBFuse2 относятся:

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

Внимание

Из-за известных проблем согласованности данных при использовании старых версий Blobfuse2 в потоковой передаче с block-cache режимом настоятельно рекомендуется обновить все установки Blobfuse2 до версии 2.3.2 или более поздней. Дополнительные сведения см. в разделе this.

Усовершенствования BLOBFuse2 из BLOBFuse версии 1

BlobFuse2 поддерживает больше функций и повышает производительность в нескольких сценариях пользователей из BLOBFuse версии 1. Полный список улучшений представлен в файле README для 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, readrmdircloseunlinkwriterename readdirstatopentruncatecreateи работают так же, как и в файловой системе Linux. opendir

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

  • Число жестких ссылок readdir:

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

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

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

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

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

  • mkfifo:

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

  • chown и chmod:

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

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

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

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

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

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

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

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

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

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

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

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

Потоковая передача

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

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

Разрешения

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

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

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

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

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

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

См. также

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