Ответ 1
<суб > Это решение относится к Категория B: exit_code или код возврата функции записи
... только
open()
иfopen()
должны гарантировать, что они получат согласованный дескриптор определенного файла для чтения и записи.stat
и друзья не обязаны извлекать свежие атрибуты. Таким образом, для когерентности с близким к открытому кэшу толькоopen()
иfopen()
считаются "открытым событием", в котором свежие атрибуты должны быть получены сразу с сервера [1].
суб > <Суб > Следующие решения относятся к настройкам Категория A: NFS
т.е. если вы НЕ ожидаете, что кэшированные записи файла /dir будут обслуживаться клиентом, отключите кеширование.
Суб >
Настройка общего кэша
Если файл в монтировании NFS (чье существование проверяется) создается другим приложением на одном клиенте (возможно, с использованием другой точки монтирования для одного и того же экспорта NFS), рассмотрите возможность использования одного общего кэша NFS на клиенте.
Используйте параметр sharecache
для настройки монтирования NFS на клиенте.
Этот параметр определяет, как общий доступ к кешу данных клиента и кэш-атрибутов используется при одновременном монтировании одного и того же экспорта. Использование одного и того же кеша уменьшает требования к памяти на клиенте и представляет идентичное содержимое файла для приложений, когда к одному и тому же удаленному файлу обращаются через различные точки монтирования.
Настройка NFS-mount без кеширования
Отключить кэширование атрибутов.
Смонтируйте общий ресурс NFS на клиенте с опцией noac
.
В качестве альтернативы отключите кешированные атрибуты каталога от обслуживания.
Используйте acdirmin=0,acdirmax=0
, чтобы установить тайм-ауты кеша в 0 (эффективно отключить кеширование).
Настройка NFS-mount для игнорирования кэшей поиска
Используйте
lookupcache=positive
ИЛИlookupcache=none
(доступные опции: all
, positive
и none
)
При попытке получить доступ к записи каталога над монтированием NFS,
если запрошенная запись каталога существует на сервере, результат называется positive
.
если запрошенная запись каталога не существует на сервере, результат называется negative
.
Если параметр lookupcache
не указан или если указан all
, клиент предполагает, что оба типа записей кэша каталога действительны до истечения срока действия кэшированных атрибутов родительского каталога.
Если указано pos
или positive
, клиент предполагает, что положительные записи действительны до истечения срока их кэширования атрибутов родительского каталога, но всегда переоценивает отрицательные значения перед тем, как приложение может их использовать.
Если указано none
, клиент проверяет оба типа записей кэша каталога, прежде чем приложение сможет их использовать. Это позволяет быстро обнаруживать файлы, которые были созданы или удалены другими клиентами, но может влиять на производительность приложений и серверов.
<суб > Ссылки:
1. Согласование непрерывности кэша с открытым коннектором в Linux NFS-клиенте
2. NFS - программно обнаружение удаленных файлов?
3. Кэш NFS: содержимое файла не обновляется на клиенте при его изменении на сервере
4. Персональная страница NFS. Особенно рекомендуется "Согласование данных и метаданных" .
Суб >