Назад | Перейти на главную страницу

Linux - Диск / Файловая система как LRU Cache (с прозрачным истечением срока действия)

У меня есть случай, когда я хотел бы использовать локальный диск в качестве кеша LRU для (горячих) файлов из отдельной веб-службы (что-то вроде S3). Если файл не существует на диске, файл считывается через Интернет, записывается на локальный диск, а затем будущие запросы могут использовать локальный кеш вместо чтения его из исходного источника.

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

Я попытался найти что-то вроде tmpfs, которое позволяет мне реализовать что-то похожее на чисто дисковый кеш (на SSD) максимально прозрачно для приложения, которое использует кеш, но мне не удалось найти ничего, что реализует эту функцию (аналогично тому, что CacheFS делает для NFS, но в более общем плане).

Вы можете попробовать кеширование файлов nginx для этого, если вас устраивает http-интерфейс. Видеть кеширование содержимого nginx.