NFSv4 tidak dapat mengatur soket untuk nfsd tanpa menjalankan rpcbind

8

Menurut Red Hat docs 'rpcbind' tidak diperlukan lagi:

Karena dukungan protokol telah dimasukkan ke dalam protokol v4, NFSv4 tidak memiliki interaksi dengan portmap, rpc.lockd, dan daemon rpc.statd. NFSv4 mendengarkan pada port TCP 2049 yang terkenal, yang menghilangkan kebutuhan untuk interaksi portmap. Protokol pemasangan dan penguncian telah dimasukkan ke dalam protokol V4 yang menghilangkan kebutuhan untuk berinteraksi dengan rpc.lockd dan rpc.statd. Daemon rpc.mountd masih diperlukan di server, tetapi tidak terlibat dalam operasi over-the-wire.

namun saya tidak dapat memulai iblis NFS ketika layanan 'rpcbind' tidak berjalan:

# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [FAILED]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
                                                           [FAILED]

Saya telah menonaktifkan NFS v2 dan v3:

# grep -v "^#" /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

Bisakah Anda mengonfirmasi layanan apa yang diperlukan / esensial di server dan klien dari yang tercantum di bawah ini (pada dasarnya saya ingin menonaktifkan layanan yang tidak diperlukan):

# rpm -ql nfs-utils | grep 'init.d'
/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd
HTF
sumber
Apakah Anda mengkonfigurasi firewall Anda untuk mengizinkan nfs?
user9517
Ya, saya dapat me-mount ekspor NFS pada klien tapi saya heran mengapa saya masih perlu menggunakan rpcbinddengan v4
HTF
3
NFSv4 tidak memerlukan rpcbind. Tetapi ada klien dan alat di sekitar yang masih bergantung pada informasi itu, misalnya 'showmount'. Selain itu, Linux nfsd menggunakan file / proc / fs / nfsd / portlist untuk mengkomunikasikan nomor port ke rpcbind, dan file ini entah bagaimana tergantung pada menjalankan proses rpcbind.
kofemann
Saya dapat memverifikasi masalah ini pada Debian 7 dengan kernel 3.3.2 dengan menambahkan -N 2 -N 3ke rpc.nfsddalam skrip mulai dan mendapatkan kesalahan yang sama "tidak dapat mengatur soket untuk nfsd"
Tankman 六四

Jawaban:

10

Ini adalah bug dalam modul kernel server NFS. Itu ditambal pada Desember 2013.

Dimulai dengan kernel 3.14, rpcbindtidak lagi diperlukan untuk menjalankan server NFS di-kernel.

(dengan asumsi server dikonfigurasi hanya menggunakan NFSv4 dan lebih tinggi)

http://lxr.free-electrons.com/source/net/sunrpc/svc.c?v=3.14#L966

Anda dapat menemukan informasi lebih lanjut tentang perubahan itu di utas ini:

http://www.spinics.net/lists/linux-nfs/msg41053.html

Karena itu, konfigurasi Anda:

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

seharusnya sekarang bekerja tanpa rpcbind.

Ketika Anda hanya menggunakan NFSv4, tidak satu pun dari layanan ini diperlukan:

/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd
Piotr Jurkiewicz
sumber
rpc.idmapdhanya diperlukan untuk NFSv4. GSS juga diperlukan untuk keamanan Kerberos. Meskipun keduanya opsional.
Irfan Latif
0

Dokumentasi yang dikutip dari RedHat salah dan diperbaiki oleh Bug 521215 : rpc.mountdmasih harus digunakan untuk mensetup NFSv4, tetapi sebenarnya tidak perlu menjalankannya setelah itu.

  • nfs: Server untuk semua versi NFS: v2, v3, v4, v4.1
  • rpcbind/ portmapper: Server , hanya untuk NFS <= v3. Tetapi juga untuk NFS v4 karena server Linux Kernel NFS mencoba mendaftar sendiri dan gagal memulai jika rpcbindtidak berjalan.
  • rpc.mountd: Server , hanya untuk NFS <= 3. Tetapi juga untuk NFS v4 karena Linux Kernel menggunakannya untuk memeriksa, jika klien yang terhubung diizinkan untuk terhubung.
  • nfslock: Server hanya untuk NFS <= v3
  • rpc.idmapd: Server Opsional (dan Klien yang lebih lama ) untuk NFS v4
  • rpc.quotad: Server untuk menggunakan kuota disk
  • rpc.statd: Server hanya untuk NFS <= v3

Saat menggunakan Kerberos ( sec=krb/ krb5i/ krb5p) layanan berikut ini diperlukan:

  • rpc.gssd: Klien
  • rpc.svcgssd: Server

Harap dicatat bahwa meskipun mereka membawa rpc.namanya, mereka menggunakan mekanisme internal kernel Linux rpc_pipefuntuk komunikasi antara kernel Linux dan ruang bantuan pengguna; jadi rpcbindAKA portmappertidak diperlukan untuk mereka.

pmhahn
sumber
-3

Periksa layanan rpcbind. Jika berhenti bekerja mulai dan kemudian coba mulai layanan nfs.

service rpcbind start
service nfs start
Kathirvel
sumber
Jawaban ini kualitasnya sangat rendah. OP telah menyatakan rpcbind tidak diperlukan sejak nfsv4. Pertanyaannya telah dijawab: itu adalah bug kernel.
bgtvfr