Назад | Перейти на главную страницу

NFS: клиент не видит новые файлы, созданные на сервере (кеширование?)

Сервер NFS - это SLES11SP3, вот инструкция экспорта:

/media/data *domain.com(rw,sync,no_root_squash,fsid=1)

Я подозреваю, что это проблема кеширования на клиенте (RHEL6), однако я считаю, что отключил все кеширование, но проблема остается.

Как показывает проблема:

На сервере делаю touch /media/data/test. Файл не отображается на клиенте, даже если я подожду несколько минут.

Если я touch /media/data (каталог) на сервере, то он показывает. Это также появляется, когда я touch /data/test2 от клиента.

Что пробовал на клиенте:

# original
server:/media/data   /data  nfs   rw,soft,vers=3,rsize=1048576,wsize=1048576,mountvers=3,sync,lookupcache=none
# mod 1 (remove parameters which have defaults: size, mountvers; add noac)
server:/media/data   /data  nfs   rw,soft,vers=3,sync,lookupcache=none,noac 0 0

Я также пробовал монтировать с помощью hard и указать actimeo=1, нет эффекта.

Я видел этот и этот. И никакой помощи.


Обновление # 1

Кажется, что основная файловая система особенная.

Базовая файловая система на сервере - это том Novell NSS.

NSS имеет определенные уникальные свойства, такие как отображение создание время файла в ctime в Linux (который изначально является изменение время там).

Значение: при изменении содержимого каталога обновляется только mtime, а не ctime. Очевидно, клиент NFS RHEL не считает это достаточной причиной для обновления своего кеша, в то время как клиенты SuSE NFS, похоже, исправлены для этого.

Какие есть варианты?

Это произошло из-за «функции» NSS (Novell Storage Services) под названием noCtimeIsMetadataModTime, которая отображает время создания NSS на Linux ctime.

Когда мы изменяем файл на сервере, обновляется время изменения родительского каталога, но не время «изменения», как это обычно бывает. Таким образом, для обновления кэша клиента NFS кажется, что оба измененных и время изменения необходимо обновить, по крайней мере, это то, что мы видим, когда экспортируем ext3 FS вместо NSS.

Это относится к более старым клиентам NFS. Новые клиенты будут в порядке, но мы должны быть осторожны, поскольку кажется, что они работают случайно (из-за оптимизации).

Один из способов решения проблемы - прикоснуться к родительскому каталогу на сервере после того, как вы захотите сделать свои изменения видимыми для внешнего мира ...