NFSv4 non è in grado di impostare alcun socket per nfsd senza eseguire rpcbind


8

Secondo i documenti di Red Hat 'rpcbind' non è più necessario:

Poiché il supporto del protocollo è stato incorporato nel protocollo v4, NFSv4 non ha alcuna interazione con i demoni portmap, rpc.lockd e rpc.statd. NFSv4 è in ascolto sulla nota porta TCP 2049, che elimina la necessità di interazione con portmap. I protocolli di montaggio e blocco sono stati incorporati nel protocollo V4 che elimina la necessità di interazione con rpc.lockd e rpc.statd. Il demone rpc.mountd è ancora richiesto sul server, ma non è coinvolto in alcuna operazione over-the-wire.

tuttavia non sono in grado di avviare il demone NFS quando il servizio 'rpcbind' non è in esecuzione:

# 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]

Ho disabilitato NFS v2 e v3:

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

Potresti confermare quali servizi sono richiesti / essenziali su server e client tra questi elencati di seguito (sostanzialmente vorrei disabilitare i servizi che non sono necessari):

# 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

Hai configurato il firewall per consentire nfs?
user9517

Sì, posso montare le esportazioni NFS sul client ma mi chiedo perché devo ancora utilizzare rpcbindcon v4
HTF

3
NFSv4 non richiede rpcbind. Ma ci sono client e strumenti attorno ai quali dipendono ancora da tali informazioni, ad esempio "showmount". Inoltre, nfsd Linux utilizza il file / proc / fs / nfsd / portlist per comunicare il numero di porta a rpcbind, e questo file dipende in qualche modo dall'esecuzione del processo rpcbind.
Kofemann,

Posso verificare questo problema su Debian 7 con kernel 3.3.2 aggiungendo -N 2 -N 3alla rpc.nfsdnello script di avvio e ottenere lo stesso errore "incapace di impostare eventuali prese per nfsd"
Tankman六四

Risposte:


10

Questo era un bug nel modulo kernel del server NFS. È stato rattoppato a dicembre 2013.

A partire dal kernel 3.14, rpcbindnon è più necessario eseguire il server NFS nel kernel.

(presupponendo che il server sia configurato per utilizzare solo NFSv4 e versioni successive)

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

Puoi trovare ulteriori informazioni su tale modifica in questa discussione:

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

Pertanto, la tua configurazione:

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

ora dovrebbe funzionare senza rpcbind.

Quando si utilizza solo NFSv4, nessuno di questi servizi è richiesto:

/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

rpc.idmapdè richiesto solo per NFSv4. GSS è richiesto anche per la sicurezza Kerberos. Sebbene entrambi siano opzionali.
Irfan Latif,

0

La documentazione citata da RedHat era errata e corretta dal bug 521215 : rpc.mountddeve ancora essere utilizzata per configurare NFSv4, ma a rigor di termini non è necessario che sia in esecuzione dopo.

  • nfs: Server per tutte le versioni di NFS: v2, v3, v4, v4.1
  • rpcbind/ portmapper: Server , rigorosamente solo per NFS <= v3. Ma anche per NFS v4 poiché il server NFS del kernel Linux tenta di registrarsi e non si avvia se rpcbindnon è in esecuzione.
  • rpc.mountd: Server , rigorosamente solo per NFS <= 3. Ma anche per NFS v4 poiché il kernel Linux lo utilizza per verificare se il client di connessione è autorizzato a connettersi.
  • nfslock: Server solo per NFS <= v3
  • rpc.idmapd: Server opzionale (e client precedenti ) per NFS v4
  • rpc.quotad: Server per l'utilizzo della quota del disco
  • rpc.statd: Server solo per NFS <= v3

Quando si utilizza Kerberos ( sec=krb/ krb5i/ krb5p) sono richiesti i seguenti servizi:

  • rpc.gssd: Cliente
  • rpc.svcgssd: Server

Nota che anche se portano il rpc.loro nome, usano il meccanismo interno del kernel Linux rpc_pipefper la comunicazione tra il kernel Linux e l'helper dello spazio utente; quindi rpcbindAKA portmappernon è necessario per loro.


-3

Controlla il servizio rpcbind. Se ha smesso di funzionare, avviare e provare ad avviare il servizio nfs.

service rpcbind start
service nfs start

Questa risposta è di qualità molto bassa. OP ha dichiarato che rpcbind non era richiesto da nfsv4. Alla domanda è già stata data una risposta: era un bug del kernel.
bgtvfr,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.