У меня есть случай, когда я хотел бы использовать локальный диск в качестве кэша LRU для (горячих) файлов из отдельной веб-службы (что-то вроде S3). Если файл не существует на диске, он считывается через интернет, записывается на локальный диск, а затем будущие запросы могут использовать локальный кэш вместо чтения его из исходного источника.
Поскольку объем данных, хранящихся в веб-сервисе, превысит локальное хранилище, я хочу автоматически и прозрачно удалять локальные файлы при записи нового файла, если хранилище уже заполнено. Если возможно, я хотел бы избежать ситуации, когда у меня есть задача cron, которая проверяет atime и истекает срок действия файлов по истечении определенного времени, поскольку нет особой причины истекать срок действия элементов кэша на основе времени, если файлы не записываются.
Я пытался найти что-то вроде tmpfs, что позволило бы реализовать нечто подобное чисто дисковому кэшу (на SSD) максимально прозрачно для приложения, использующего кэш, но мне не удалось найти ничего, что реализовывало бы эту функциональность (похоже на то, что делает CacheFS для NFS, но в более общем виде).
решение1
Вы можете попробовать кэширование файлов nginx для этого, если вас устраивает интерфейс http. Смотритекэширование контента nginx.