Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как настроить 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".