
Nach meinem Verständnis sollten NFSv4-Clients sofort eine Verbindung zum NFSv4-Dienst auf dem Server herstellen und die Interaktionen mit dem rpcbind-Portmapper und dem Mountd-Dienst vollständig überspringen. Ich sehe jedoch, dass mein RHEL6-Client immer zuerst den rpcbind-Dienst kontaktiert, um den Mountd-Port abzurufen, die Liste der Exporte von Mountd abzurufen und sich dann schließlich mit dem NFSv4-Dienst zu verbinden. Beobachtet mit tcpdump.
Allem Anschein nach (Ausgabe des Mount-Befehls und Prüfung von TCP) verwenden Client und Server NFSv4, wenn der Mount-Vorgang abgeschlossen ist.
Dies passiert sogar, wenn ich alles Mögliche versuche, um auf dem Client nur NFSv4 zu erzwingen. Beispiele:
- Festlegen von Nfsvers=4 in /etc/nfsmount.conf
- Explizites Mounten mit der Option vers=4
- Legen Sie den NFS-Port explizit fest. (über den Mount-Befehl und in nfsmount.conf)
Liege ich völlig auf dem Holzweg oder stimmt etwas nicht? Das ist für mich ein Problem, weil der NFS-Client darauf besteht, rpcbind auf dem Server per UDP erreichen zu können, bevor er NFSv4-Exporte mountet, und ich erlebe einen mysteriösen UDP-Paketverlust (ja, ich arbeite diesbezüglich mit dem Netzwerkexperten zusammen), der dazu führt, dass die Mounts von Zeit zu Zeit vollständig fehlschlagen oder einfach sehr lange dauern.
Ich habe mir die libtirpc-Quelle angesehen und etwas darüber gelesen, dass für die Verbindung mit dem RPC-Portmapper immer UDP verwendet wird, ich möchte den Portmapper und den Mountd-Dienst jedoch vollständig aus der Gleichung herausnehmen.
Ich habe versucht, den UDP-Portmapper-Dienst auf dem NFS-Server mit „rpcinfo -d“ abzumelden, aber das führt dazu, dass alle NFS-Mounts, die auf diesen Server abzielen, fehlschlagen (Clients bestehen erneut darauf, dass der Server rpcbind auf UDP-Port 111 lauscht). Ich habe auch versucht, mit /etc/netconfig herumzuspielen, aber ohne Erfolg.
Ist jemandem dieses Verhalten schon einmal begegnet oder weiß jemand genug über NFSv4, um mir sagen zu können, dass ich unrealistische Erwartungen habe?
Antwort1
Ich habe dies auf autofs zurückgeführt. Es war so eingerichtet, dass /etc/auto.net verwendet wurde, um mit dem Befehl showmount eine Liste der Exporte abzurufen. Der Befehl showmount war für die Zugriffe auf rpcbind und mountd verantwortlich, bevor die NFS-Mount-Operation überhaupt stattfand, daher hatten Versuche, die Mount-Optionen zu ändern, keine Wirkung.
Ich habe /etc/auto.net überarbeitet und mein Problem ist behoben.
Randbemerkung: Die Verwendung der Option „-hosts“ in auto.master, wie ich an verschiedenen Stellen gesehen habe, führte auch zu den Zugriffen von rpcbind und mountd. Ich habe am Ende einfach auto.net die Root aller NFSv4-Server mounten lassen, was meines Wissens nach in Ordnung ist, vorausgesetzt, alle meine Hosts sind NFSv4.