Возможно ли иметь кеш Linux VFS с файловой системой FUSE?

Кажется, что кеш Linux VFS по умолчанию не работает с файловой системой FUSE. Например, похоже, что вызов «read» систематически перенаправляется в файловую систему FUSE.

Я работаю над конкретной удаленной файловой системой FUSE. Мне нужен очень агрессивный кеш.

Нужно ли мне реализовывать собственный кеш страниц? Или можно активировать кеш Linux VFS для этой конкретной файловой системы FUSE? Или кто-нибудь знает хорошую файловую систему прокси/кеша FUSE (или что-то вроде библиотеки C, чтобы сделать это, не изобретая велосипед)?

Бонусный вопрос:

Если мне нужно реализовать свой собственный кеш страниц, я думаю использовать демон REDIS для выполнения операций LRU. Я почти уверен, что это может быть хорошим вариантом для кэширования метаданных. А вот для страниц я не уверен, что это будет лучше, чем простая локальная директория (с кешем VFS) или чем /dev/shm. Но я потеряю автоматическую очистку LRU. Кто-нибудь знает что-то вроде /dev/shm с автоматической очисткой LRU?

Некоторая дополнительная информация: файловая система доступна только для чтения, а удаленная сторона почти неизменяема; удаленная сторона содержит очень большие файлы, которые я не могу скопировать в локальный каталог.


person Fabien    schedule 29.12.2010    source источник


Ответы (2)


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

Немного поискав, я нашел fuse-cache; они утверждают, что это просто.

person Samet Atdag    schedule 29.12.2010
comment
Спасибо за ответ. Но fuse-cache мне не подходит, потому что у меня есть очень большие файлы на удаленной стороне, которые я не могу просто скопировать в локальный каталог. Мне нужен кеш на уровне страницы, потому что научная сторона открывает только определенные части этих больших файлов. - person Fabien; 30.12.2010
comment
Тогда кажется, что трудно найти общее решение. Попробуйте реализовать свой. - person Samet Atdag; 30.12.2010

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

person J. Har    schedule 20.12.2016