Как NFS работает с кешем в Debian?

12

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

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

Ztyx
источник

Ответы:

6

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

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

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

janneb
источник
Спасибо за ваш ответ. Итак, чтобы я правильно понял, клиентский «кэш атрибутов» содержит только кэш для атрибутов file / dir, т.е. кеш не содержит содержимого файла?
Ztyx
Да, клиент кэширует содержимое файла в кеше страницы, так же, как это делается для локальной файловой системы. Атрибуты используются для определения того, когда и когда содержимое кэшированного файла становится недействительным.
Янв
Ах. Большое вам спасибо за ответ на это. Хорошего дня.
Ztyx
Когда вы говорите «страница», это означает, что части файла могут быть кэшированы, а части файла - нет? Это не кеш файлов? Это подразделения файла, которые можно кэшировать.
CMCDragonkai
@CMCDragonkai: Ядро отслеживает содержимое кэшированного файла на уровне детализации страницы (обычно 4 КБ), поэтому да, оно может кэшировать часть файла. Я не уверен, как именно работает аннулирование кэша для NFS, я думаю, что после тайм-аута кэша атрибута, когда он обращается к серверу для повторной проверки, и если повторная проверка завершается неудачно, то он удаляет все кэшированные страницы, принадлежащие этому файлу.
Янв