Что такое 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
,opendir
readdir
,rmdir
,open
,read
,create
,write
,unlink
close
,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
, readdir
opendir
, rmdir
, open
, read
, create
, , write
close
, 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 требуют учетной записи хранения с включенным иерархическим пространством имен.