Что вызывает повторное обновление учетных данных RPC на стороне клиента Linux NFS?

10

Используя nfsstat -c, я вижу высокий счет «authrefrsh» (известный как «newcred» в некоторых системах) на моем клиентском ПК NFS для таких операций, как lsи findдля каталогов, содержащих ~ 1000 файлов. Это коррелирует с очень низкой производительностью (20 + минутные списки каталогов). Кэшированные операции NFS не демонстрируют это поведение (authrefrsh или замедление).

authrefrsh = звонит каждый раз, когда я проверяю nfsstat:

$ nfsstat -c

Client rpc stats:
calls      retrans    authrefrsh
280462     0          280462

Client nfs v3:
null         getattr      setattr      lookup       access       readlink
0         0% 126990   45% 0         0% 10062     3% 58592    20% 0         0%
read         write        create       mkdir        symlink      mknod
25030     8% 0         0% 65        0% 0         0% 2         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus
0         0% 0         0% 0         0% 0         0% 0         0% 59654    21%
fsstat       fsinfo       pathconf     commit
0         0% 20        0% 10        0% 0         0%

Детали подключения:

$ mount.nfs -v nfshost:/share/dir /somedir
mount.nfs: timeout set for Tue Feb 21 18:12:18 2012
mount.nfs: trying text-based options 'vers=4,addr=192.168.xx.xx,clientaddr=192.168.xx.xx'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=192.168.xx.xx'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.xx.xx prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.xx.xx prog 100005 vers 3 prot UDP port 1011
nfshost:/share/dir on /somedir type nfs

Среда nfshost RPC:

$ rpcinfo -T udp nfshost nfs
program 100003 version 2 ready and waiting
program 100003 version 3 ready and waiting
program 100003 version 4 ready and waiting

$ rpcinfo -T udp nfshost mountd
program 100005 version 1 ready and waiting
program 100005 version 2 ready and waiting
program 100005 version 3 ready and waiting

$ rpcinfo -T udp nfshost nlockmgr
program 100021 version 1 ready and waiting
rpcinfo: RPC: Program/version mismatch; low version = 1, high version = 4
program 100021 version 2 is not available
program 100021 version 3 ready and waiting
program 100021 version 4 ready and waiting

$ rpcinfo -T udp nfshost llockmgr
rpcinfo: RPC: Program not registered

$ rpcinfo nfshost
program version netid     address                service    owner
100000    2    tcp       0.0.0.0.0.111          portmapper unknown
100000    2    udp       0.0.0.0.0.111          portmapper unknown
100024    1    udp       0.0.0.0.2.212          status     unknown
100024    1    tcp       0.0.0.0.2.215          status     unknown
100021    1    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    3    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    4    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    1    tcp       0.0.0.0.134.55         nlockmgr   unknown
100021    3    tcp       0.0.0.0.134.55         nlockmgr   unknown
100021    4    tcp       0.0.0.0.134.55         nlockmgr   unknown
100011    1    udp       0.0.0.0.3.230          rquotad    unknown
100011    2    udp       0.0.0.0.3.230          rquotad    unknown
100011    1    tcp       0.0.0.0.3.233          rquotad    unknown
100011    2    tcp       0.0.0.0.3.233          rquotad    unknown
100003    2    udp       0.0.0.0.8.1            nfs        unknown
100003    3    udp       0.0.0.0.8.1            nfs        unknown
100003    4    udp       0.0.0.0.8.1            nfs        unknown
100003    2    tcp       0.0.0.0.8.1            nfs        unknown
100003    3    tcp       0.0.0.0.8.1            nfs        unknown
100003    4    tcp       0.0.0.0.8.1            nfs        unknown
100005    1    udp       0.0.0.0.3.243          mountd     unknown
100005    1    tcp       0.0.0.0.3.246          mountd     unknown
100005    2    udp       0.0.0.0.3.243          mountd     unknown
100005    2    tcp       0.0.0.0.3.246          mountd     unknown
100005    3    udp       0.0.0.0.3.243          mountd     unknown
100005    3    tcp       0.0.0.0.3.246          mountd     unknown

Окружающая среда:

$ uname -a
Linux whiteheat 3.0.0-15-generic #26-Ubuntu SMP Fri Jan 20 17:23:00 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

$ mount.nfs a b -V
mount.nfs: (linux nfs-utils 1.2.4)
Крис Бетти
источник
любые обновления? Я заметил более низкую производительность клиентов nfs с более новыми ядрами, например, SLES 11 SP2 и CentOS 6.4 против SLES 9 SP4. Единственное отличие, которое я вижу в статистике, состоит в том, что authrefrsh очень высок. Я предполагаю, что это дополнительные издержки, которые приводят к снижению производительности.
Банджер
Нет обновлений, извините. Я отошел от NFS для своего приложения, потому что SSH + SCP был вариант. Проблема была утомительной :)
Крис Бетти
Вы уверены, что это не проблема NFS v3 против v4?
Кофеманн
К вашему сведению этот вопрос Unix SE имеет больше потенциальных клиентов по этому вопросу: unix.stackexchange.com/questions/13557/…
Banjer
1
Подробнее об истории ошибки: bugzilla.redhat.com/show_bug.cgi?id=785931
Охотник на оленей

Ответы:

1

Я столкнулся с этой проблемой с NFS. Проблема в моем случае была вызвана слишком низким значением actimeo . Хотя вы можете не использовать этот точный параметр, существует целый ряд параметров, которые могут вызвать хаос: acregmin, acregmax, acdirmin и acdirmax. По сути, происходит то, что система кэширует атрибуты файлов из NFS. Эти параметры влияют на то, как долго сохраняются атрибуты файла до обновления из NFS. В системах с интенсивным использованием эти обновления становятся до боли очевидными.

Другой проблемный параметр - noac . Если вы используете это, вы гарантируете, что любые записи будут немедленно доступны всем другим клиентам. Тем не менее, запись будет ждать до завершения записи на удаленный, а не использовать обратную запись. Это может поставить систему на колени, если она часто пишет в NFS.

Это интересная статья в блоге, где они рассказывают о различных параметрах и их влиянии на производительность NFS. Вы также можете посмотреть на человека странице для NFS для получения дополнительных указаний. К сожалению, authrefrsh может быть чем-то вроде красной сельди, и моя проблема может быть совершенно не связана, хотя и с похожими симптомами.

Foosh
источник
iirc noac также касается только кэширования учетных данных, поэтому запись в метаданные разрешений выполняется немедленно, никаких «записей» нет. Не редактировал, так как я не совсем уверен сейчас.
Флориан Хейгл
Я просто вижу проблему с производительностью, связанную с noac, так что это действительно так, если работать с NFS-серверами не-предприятия.
Флориан Хейгл