Меня интересует влияние кеша чтения диска на доступ к файлу через NFS. Допустим, у меня есть файл по NFS. Я получаю к нему доступ (выполняю "cat myfile") с хоста Linux "A". Если ОЗУ достаточно, файл окажется в кеше диска. Теперь я изменяю этот файл с хоста «B». Как ОС на хосте «А» знает, что она должна аннулировать эту часть кеша? Есть ли обратный вызов от NFS? Или дисковый кеш быстро истекает?
Ответ A8 из Linux NFS FAQ есть объяснение.
Резюме: клиент должен опросить сервер, чтобы запросить изменения (путем проверки атрибутов файла, чтобы увидеть, изменились ли они с момента последней проверки клиентом). Клиенты обычно делают это через определенные промежутки времени, но также и каждый раз, когда открывают файл. Они также сбрасывают все записи при закрытии. Это означает, что вы получите ожидаемые результаты, если убедитесь, что ни один другой клиент не открывает файл, пока один клиент держит его открытым для записи.
Это поведение обычно настраивается с помощью параметров монтирования, например, если вы предпочитаете более высокую согласованность кеша в ущерб производительности. См., Например, "man nfs" на клиенте Linux.