Настройка BLOBFuse для режима потоковой передачи

В этой статье показано, как настроить BLOBFuse для подключения контейнера в режиме потоковой передачи.

Подсказка

Контейнер можно подключить в режиме потоковой передачи или в режиме кэширования. Дополнительные сведения о каждом режиме см. в разделе "Потоковая передача и режим кэширования".

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

Параметры конфигурации

В следующей таблице описаны все параметры и его параметры по умолчанию.

Параметр Description Значение по умолчанию
Размер блока Размер в МБ каждого блока для кэширования в памяти 16 МБ
Размер памяти Общий объем памяти в МБ для предварительного размещения кэша блоков 80% свободной памяти
Путь Путь к локальному кэшу дисков, в котором хранятся скачанные блоки Неприменимо
Размер диска Максимальный размер кэша диска, разрешенный в МБ 80% свободного места на диске
Тайм-аут диска Время ожидания вытеснения кэша дисков в секундах 120 секунд
Предварительная выборка Количество блоков для предварительной выборки для операций последовательного чтения 2 × число ядер ЦП
Параллелизм Количество параллельных потоков, скачиваемых и записывающихся в кэш диска 3 × число ядер ЦП

В следующем примере эти значения задаются в качестве параметров для команды mount.

blobfuse2 mount <mount-path> --streaming --block-cache-disk-size=16 --block-cache-block-size=80 --block-cache-disk-timeout=120

В следующем примере показано, как эти параметры отображаются в файле конфигурации BLOBFuse:

block_cache:
  block-size-mb: 16
  mem-size-mb: 80
  disk-timeout-sec: 120

Полный пример см. в примере конфигурации потоковой передачи.

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

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

Рекомендации по использованию режима потоковой передачи

  • Приложения должны проверять возвращаемый код (успешно или сбой) для вызовов файловой системы, таких как read, writeи closeflush. Если возвращается ошибка, приложение должно прервать соответствующую операцию.

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

  • При работе с большими файлами (в TiBs) настройте соответствующий размер блока. Azure Storage поддерживает только 50 000 блоков на blob.

Важные рекомендации по режиму потоковой передачи

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

  • Хотя поддерживаются одновременные операции чтения и одна операция записи, данные, считываемые из некоторых потоков, могут не быть текущими.

  • Одновременные операции записи в одном файле с несколькими дескрипторами не проверяются на согласованность данных и могут привести к неправильной записи данных.

  • Операция чтения из файла, в который одновременно записывается другим процессом или дескриптором, не возвращает самые актуальные данные.

  • При копировании файлов со следующими байтами null с помощью cp утилиты в монтированный путь BlobFuse используйте параметр --sparse=never, чтобы избежать обрезки данных. Например: cp --sparse=never src dest.

  • Для операций записи приложение сохраняет (или фиксирует) данные в контейнер службы хранилища Azure только при вызове close, sync или при операциях flush.

  • Вы не можете изменить файлы, если вы создали их с размером блока, отличным от настроенного в данный момент.

Кэширование можно отключить на уровнях ядра и BLOBFuse или исключительно на уровне ядра. Дополнительные сведения см. в разделе "Настройка параметров кэширования BLOBFuse".

Дальнейшие шаги

См. также