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

Как работает кеш чтения NFS в Debian?

Я планирую использовать NFS для обслуживания множества небольших файлов. Они будут читаться очень часто, поэтому кеширование на стороне клиента имеет решающее значение. Справляется ли с этим NFS? Есть ли способ каким-то образом увеличить кеширование на стороне клиента?

... или мне стоит поискать другое решение? Периодическая синхронизация с использованием rsync или unison невозможна, поскольку файлы время от времени изменяются на стороне клиента.

Во-первых, NFS не обеспечивает согласованности кеша, поэтому, если вам это нужно, вы должны поискать в другом месте.

NFS определяет более слабую модель, называемую согласованностью, близкой к открытой. Это означает, что при закрытии файла любые грязные данные сбрасываются на сервер. И наоборот, когда файл открывается, выполняется проверка атрибутов, что означает, что если у клиента есть кэшированные страницы из этого файла, он проверяет, действительны ли эти страницы.

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