Команда очистки кеша NFS? - PullRequest
20 голосов
/ 29 ноября 2011

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

Все серверы - Debian (lenny, 2.6.26-2-amd64 для Linux), и версии следующие.*

 % dpkg -l | grep nfs
ii  libnfsidmap2                        0.20-1                     An nfs idmapping library
ii  nfs-common                          1:1.1.2-6lenny1            NFS support files common to client and server
ii  nfs-kernel-server                   1:1.1.2-6lenny1            support for NFS kernel server

На сервере NFS файл / etc / exports записывается следующим образом:

/export-path   192.168.0.0/255.255.255.0(async,rw,no_subtree_check)

В клиентах NFS файл / etc / fstab записывается следующим образом:

server:/export-path     /mountpoint   nfs rw,hard,intr,rsize=8192,async 0 0

Как видите, опция «асинхронный» используется для повышения производительности доступа нескольких клиентов.Однако иногда это может привести к ошибочному кешированию.

Так как я поддерживаю много серверов (и у меня нет такого сильного разрешения изменять параметры монтирования), я не хочу изменять / etc / exports, ни/ и т.д. / Fstab.Я думаю, что достаточно, если у меня есть инструмент командной строки, который «очищает» кэш атрибутов на стороне клиента NFS с разрешения пользователя.

Пожалуйста, дайте мне знать, если есть такие команды.,


(добавлено)

Я имею в виду "ошибки ложного кэширования",

 % ls -l /data/1/kabe/foo                  
ls: cannot access /data/1/kabe/foo: No such file or directory
 % ssh another-server 'touch /data/1/kabe/foo' 
 % ls -l /data/1/kabe/foo
ls: cannot access /data/1/kabe/foo: No such file or directory

Иногда такие случаи случаются.Проблема заключается не в содержимом файла, а в атрибутах файла (= информация о зубных камнях), поскольку NFS заявляет, что гарантирует согласованность при закрытии.

Ответы [ 5 ]

21 голосов
/ 29 ноября 2011

В зависимости от того, что вы подразумеваете под «ошибками кеширования», запуск sync может дать вам то, что вам нужно. Это очистит все буферы файловой системы.

При необходимости вы также можете очистить кеш VM в ядре, используя /proc/sys/vm/drop_caches.

# To free pagecache
echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes
echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes
echo 3 > /proc/sys/vm/drop_caches
6 голосов
/ 04 июня 2015

Внутри данного процесса вызов opendir и closedir в родительском каталоге файла делает недействительным кэш NFS.Я использовал это при программировании планировщика заданий.Очень, очень полезно.Попробуй!

4 голосов
/ 26 августа 2013

AFAIK, параметры sync и async не являются источником кэширования атрибутов.Async позволяет серверу задерживать сохранение данных в файловой системе сервера, например, это влияет на долговечность записи в случае сбоев сервера NFS, но если сервер NFS стабилен, то async не влияет на клиентов NFS.

Существует опция монтирования lookupcache=positive NFS, которая может использоваться для предотвращения кэширования с отрицательным поиском, например, NFS возвращает «Нет такого файла или каталога», когда файл фактически существует на сервере.См Directory entry caching в man nfs.

1 голос
/ 12 января 2017

Вы видите эффекты кеша атрибутов NFS.См. man nfs и извлечение DATA AND METADATA COHERENCE.

NFS по умолчанию кэширует атрибуты в течение минимум 30 секунд (acregmin и acdirmin) и максимум 60 секунд (acregmax и *).1008 *).Вы можете переопределить все это вместе с actimeo или полностью отключить кэш атрибутов с помощью noac.С опцией монтирования noac поведение, описанное OP, исчезает, но снижает производительность.

lookupcache=positive полезно, если вы просто ищете внешний вид новых файлов, но удаления по-прежнему будут выполнятьсячерез кеш атрибутов.

1 голос
/ 01 апреля 2013

очистить / var / lib / nfs / rmtab файл на сервере nfs.

Приведенные ниже команды используются для устранения проблем, связанных с памятью. и это тоже очень опасно. время выхода из строя приложения, установленного на коробке

# sync

# To free pagecache
echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes
echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes
echo 3 > /proc/sys/vm/drop_caches
...