Apa yang menyebabkan penyegaran kembali kredensial sisi klien NFS linux NFS berulang?

10

Dengan menggunakan nfsstat -c, saya melihat "authrefrsh" tinggi (dikenal sebagai "newcred" pada beberapa sistem) mengandalkan PC klien NFS saya untuk operasi seperti lsdan findpada direktori yang berisi ~ 1000 file. Ini berkorelasi dengan kinerja yang sangat buruk (daftar direktori 20 menit lebih). Operasi NFS yang di-cache tidak menunjukkan perilaku ini (authrefrsh atau perlambatan).

authrefrsh = panggilan setiap kali saya memeriksa 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%

Detail koneksi:

$ 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

lingkungan RPC nfshost:

$ 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

Lingkungan Hidup:

$ 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)
Chris Betti
sumber
ada pembaruan? Saya perhatikan kinerja klien nfs yang lebih buruk dengan kernel yang lebih baru, misalnya SLES 11 SP2 dan CentOS 6.4 vs SLES 9 SP4. Satu-satunya perbedaan yang saya lihat dalam statistik adalah authrefrsh sangat tinggi. Saya berasumsi ini adalah overhead tambahan yang menyebabkan penurunan kinerja.
Banjer
Tidak ada pembaruan, maaf. Saya sudah pindah dari NFS untuk aplikasi saya, karena SSH + SCP adalah pilihan. Masalahnya melumpuhkan :)
Chris Betti
apakah Anda yakin itu bukan masalah nfs v3 vs v4?
kofemann
fyi pertanyaan Unix SE ini memiliki petunjuk lebih lanjut tentang masalah ini: unix.stackexchange.com/questions/13557/…
Banjer
1
Lebih lanjut tentang sejarah bug: bugzilla.redhat.com/show_bug.cgi?id=785931
Deer Hunter

Jawaban:

1

Saya mengalami masalah ini dengan NFS. Masalah dalam kasus saya disebabkan oleh actimeo yang disetel terlalu rendah. Meskipun Anda mungkin tidak menggunakan pengaturan persis ini, ada seluruh rangkaian pengaturan yang dapat menyebabkan kekacauan: acregmin, acregmax, acdirmin, dan acdirmax. Pada dasarnya apa yang terjadi adalah bahwa sistem melakukan caching atribut file dari NFS. Pengaturan ini mempengaruhi berapa lama atribut file disimpan sebelum menyegarkan dari NFS. Pada sistem dengan penggunaan yang berat, penyegaran ini menjadi sangat jelas.

Pengaturan bermasalah lainnya adalah noac . Jika Anda menggunakan ini, Anda menjamin bahwa setiap penulisan akan segera tersedia untuk semua klien lain. Namun, menulis akan menunggu sampai selesai menulis ke remote daripada menggunakan tulis-balik. Ini dapat membuat sistem bertekuk lutut jika sering menulis ke NFS.

Ini adalah artikel blog yang menarik di mana mereka berbicara tentang berbagai opsi dan pengaruhnya terhadap kinerja NFS. Anda juga bisa melihat halaman manual untuk NFS untuk panduan lebih lanjut. Sayangnya, authrefrsh bisa menjadi sedikit herring merah dan masalah saya mungkin sama sekali tidak terkait, walaupun dengan gejala yang sama.

Astaga
sumber
iirc noac juga hanya menyangkut caching kredensial, jadi menulis untuk izin metadata langsung, tidak ada "menulis". Tidak mengedit karena saya tidak yakin sekarang.
Florian Heigl
Saya hanya melihat masalah kinerja yang terkait dengan noac jadi ini adalah hal yang sebenarnya, jika bekerja dengan server NFS non-perusahaan.
Florian Heigl