Можно ли отключить кеш директории overlayfs

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

152527 ├── 1525270000000 │   ├── 01be6dc0b6e3e087.json │   ├── 067e2490bb7ee05c.json │   ├── 15ec3513bf7deef6.json ├── 1525270010000 │   ├── 01be6dc0b6e3e087.json │   ├── 067e2490bb7ee05c.json │   ├── 15ec3513bf7deef6.json ... Каталоги написаны на серии креплений, /mnt/fs_01, /mnt_fs_02, /mnt/fs_03, все объединено в только для чтения overlayfs из /mnt/fs_all,

Набор процессов записывает в одно монтирование одновременно; тот же набор процессов читает из комбинированного /mnt/fs_all, (Это приложение uWSGI.)

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

Документация по overlayfs отмечает:

Когда в объединенном каталоге делается запрос "readdir", каждый из верхних и нижних каталогов читается, а списки имен объединяются очевидным образом (сначала читается верхний, затем нижний - уже существующие записи не добавляются повторно). Этот объединенный список имен кэшируется в "struct file" и сохраняется до тех пор, пока файл остается открытым. Если каталог открывается и читается двумя процессами одновременно, каждый из них будет иметь отдельные кэши. При поиске в начале каталога (смещение 0), а затем в readdir, кэш будет сброшен и перестроен.

Это означает, что изменения в объединенном каталоге не отображаются во время чтения каталога. Это вряд ли будет замечено многими программами.

К сожалению, это замечено моей программой.

Я могу реализовать seekdir предложение, но я бы предпочел вообще отключить кеш, если это возможно.

Есть способ сделать это?

0 ответов

Другие вопросы по тегам