Я планирую использовать NFS для обслуживания множества небольших файлов. Они будут читаться очень часто, поэтому кеширование на стороне клиента имеет решающее значение. Справляется ли с этим NFS? Есть ли способ каким-то образом увеличить кеширование на стороне клиента?
... или мне стоит поискать другое решение? Периодическая синхронизация с использованием rsync или unison невозможна, поскольку файлы время от времени изменяются на стороне клиента.
Во-первых, NFS не обеспечивает согласованности кеша, поэтому, если вам это нужно, вы должны поискать в другом месте.
NFS определяет более слабую модель, называемую согласованностью, близкой к открытой. Это означает, что при закрытии файла любые грязные данные сбрасываются на сервер. И наоборот, когда файл открывается, выполняется проверка атрибутов, что означает, что если у клиента есть кэшированные страницы из этого файла, он проверяет, действительны ли эти страницы.
Хотя это и не указано в самой спецификации, у большинства клиентов NFS есть так называемый тайм-аут кеширования атрибутов, то есть сколько лет может быть атрибутам каталога или открытого файла до того, как клиент свяжется с сервером для их повторной проверки. В Linux см. Параметры монтирования actimeo = etc. Более высокие значения допускают более агрессивное кэширование, но повышают риск использования устаревших данных, если какой-то другой клиент тем временем обновил файл.