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