NFSv4 kann keine Sockets für nfsd festlegen, ohne rpcbind auszuführen

8

Laut Red Hat Docs wird 'rpcbind' nicht mehr benötigt:

Da die Protokollunterstützung in das v4-Protokoll integriert wurde, hat NFSv4 keine Interaktion mit den Dämonen portmap, rpc.lockd und rpc.statd. NFSv4 überwacht den bekannten TCP-Port 2049, wodurch keine Portmap-Interaktion erforderlich ist. Die Montage- und Sperrprotokolle wurden in das V4-Protokoll integriert, sodass keine Interaktion mit rpc.lockd und rpc.statd erforderlich ist. Der Daemon rpc.mountd wird weiterhin auf dem Server benötigt, ist jedoch nicht an drahtlosen Vorgängen beteiligt.

Ich kann NFS Demon jedoch nicht starten, wenn der Dienst 'rpcbind' nicht ausgeführt wird:

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

Ich habe NFS v2 und v3 deaktiviert:

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

Könnten Sie bitte anhand der unten aufgeführten Informationen bestätigen, welche Dienste auf Server und Client erforderlich / erforderlich sind (im Grunde möchte ich Dienste deaktivieren, die nicht benötigt werden):

# 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
quelle
Haben Sie Ihre Firewall so konfiguriert, dass NFS zulässig ist?
user9517
Ja, ich kann NFS-Exporte auf dem Client rpcbind
bereitstellen,
3
NFSv4 benötigt kein rpcbind. Es gibt jedoch Clients und Tools, die immer noch von diesen Informationen abhängen, z. B. "showmount". Darüber hinaus verwendet Linux nfsd die Datei / proc / fs / nfsd / portlist, um die Portnummer an rpcbind zu übermitteln, und diese Datei hängt irgendwie davon ab, ob der Prozess rpcbind ausgeführt wird.
Kofemann
Ich kann dieses Problem unter Debian 7 mit Kernel 3.3.2 überprüfen, indem ich -N 2 -N 3es rpc.nfsdim Startskript hinzufüge und den gleichen Fehler erhalte "keine Sockets für nfsd setzen können"
Tankman

Antworten:

10

Dies war ein Fehler im NFS-Server-Kernelmodul. Es wurde im Dezember 2013 gepatcht .

Ab Kernel 3.14 rpcbindist es nicht mehr erforderlich, den NFS-Server im Kernel auszuführen.

(vorausgesetzt, der Server ist so konfiguriert, dass nur NFSv4 und höher verwendet wird)

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

Weitere Informationen zu dieser Änderung finden Sie in diesem Thread:

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

Daher Ihre Konfiguration:

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

sollte jetzt ohne funktionieren rpcbind.

Wenn Sie nur NFSv4 verwenden, ist keiner dieser Dienste erforderlich:

/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
quelle
rpc.idmapdist nur für NFSv4 erforderlich. GSS ist auch für die Kerberos-Sicherheit erforderlich. Obwohl beide optional sind.
Irfan Latif
0

Die zitierte Dokumentation von RedHat war falsch und wurde durch Bug 521215 behoben : rpc.mountdMuss immer noch zum Einrichten von NFSv4 verwendet werden, aber genau genommen muss es danach nicht mehr ausgeführt werden.

  • nfs: Server für alle Versionen von NFS: v2, v3, v4, v4.1
  • rpcbind/ portmapper: Server , ausschließlich für NFS <= v3. Aber auch für NFS v4 als Linux-Kernel versucht der NFS-Server, sich selbst zu registrieren und startet nicht, wenn er rpcbindnicht ausgeführt wird.
  • rpc.mountd: Server , ausschließlich für NFS <= 3. Aber auch für NFS v4, da der Linux-Kernel damit prüft, ob der verbindende Client eine Verbindung herstellen darf.
  • nfslock: Server nur für NFS <= v3
  • rpc.idmapd: Optionaler Server (und ältere Clients ) für NFS v4
  • rpc.quotad: Server zur Verwendung des Festplattenkontingents
  • rpc.statd: Server nur für NFS <= v3

Bei Verwendung von Kerberos ( sec=krb/ krb5i/ krb5p) sind folgende Dienste erforderlich:

  • rpc.gssd: Client
  • rpc.svcgssd: Server

Bitte beachten Sie, dass sie, selbst wenn sie rpc.ihren Namen tragen, den internen Mechanismus des Linux-Kernels rpc_pipeffür die Kommunikation zwischen dem Linux-Kernel und dem User Space Helper verwenden. so rpcbindAKA portmapperist für sie nicht benötigt wird .

pmhahn
quelle
-3

Überprüfen Sie den rpcbind-Dienst. Wenn es nicht mehr funktioniert, starten Sie es und versuchen Sie dann, den nfs-Dienst zu starten.

service rpcbind start
service nfs start
Kathirvel
quelle
Diese Antwort ist von sehr geringer Qualität. OP hat angegeben, dass rpcbind seit nfsv4 nicht erforderlich war. Die Frage wurde bereits beantwortet: Es war ein Kernel-Fehler.
Bgtvfr