Вот мои настройки: одна машина NFS Server (v4), несколько клиентских машин NFS.
Когда клиентский компьютер записывает файлы в монтирование NFS, другие клиенты мгновенно видят новый контент: нет проблем.
Но, когда серверный компьютер изменяет содержимое файла, это новое содержимое не отображается на клиенте, пока я не выполню ls
каталог из клиента.
Я абсолютно озадачен этим несоответствием ... любая помощь будет принята с благодарностью!
Информация:
- NFS 1.2.3-R1 на клиенте и сервере
- acregmin, acregmax, acdirmin, acdirmax, lookupcache: значения по умолчанию
ls -i
на клиенте перед редактированием файла на сервере, а затем снова после. Посмотрите, изменится ли число. Если они это делают, потому что сервер заменяет файл, а клиент не замечает этого, пока не выполнит повторную проверку каталога. Если это так, попробуйте установить параметр монтированияlookupcache=none
и посмотрите, не изменится ли поведение.Ответы:
Добавление в качестве ответа на основе вашего комментария.
Решение состоит в том, чтобы добавить
lookupcache=none
в ваши параметры монтирования nfs.Что происходит, так это то, что в первый раз, когда ваш клиент читает файл, он выполняет поиск NFS, чтобы получить NID fileid. Затем он кэширует fileid NFS, и когда вы возвращаетесь, чтобы открыть файл, он использует кеш. Обычно это не проблема, так как при обновлении файла его fileid остается неизменным. Но по какой-то причине старый файл удаляется, а новый создается (или переименовывается, или что-то, где его не совпадает с файлом).
Теперь обычно это не проблема, либо когда ваш клиент пытается открыть fileid, которого там нет, он получит сообщение об ошибке от сервера и выполнит другой поиск, чтобы получить новый fileid. Но по какой-то причине NFS-сервер позволяет клиенту открыть этот старый fileid. Возможно, другой клиент имеет открытый файл, и поэтому он еще не удаляется, я не знаю.
В любом случае, способ решить эту проблему - сказать клиенту всегда делать nfslookup перед открытием файла с помощью опции монтирования nfs
lookupcache=none
. Недостатком является то, что это может быть дорого, если вы часто открываете файлы, так как это добавляет больше трафика на сервер NFS.источник
Измените параметр монтирования на
hard,intr
. я думаю, что по умолчанию может быть мягким в вашей системе. это поможет.источник
Вы также можете вручную обновить кэш NFS с помощью
... если вы не хотите добавлять какие-либо опции монтирования, снижающие производительность.
источник