Heute gibt es von mir mal einen Master Tipp zum Thema NFS und Performance. Ich sage jetzt mal so, NFS hat sich als das Protokoll im Datacenter durchgesetzt. Zumindest wenn mich jemand fragt was man nutzen sollte, dann antworte ich sehr gerne mit der Antwort NFS.

Aber auch NFS kocht nur mit Wasser und kann an vielen Stellen optimiert werden. Und eben genau darum geht es heute in diesem Blogbeitrag.

NFS Performance – Und das TCP Problem.

NFS selber nutzt 2 Ports und zwar zunächst den Port 111 (entweder TCP oder UDP) und den Port 2049. Soweit alles gut, aber das Problem besteht darin, dass bei einem Mount eines Dateisystems über NFS nur eine Verbindung hergestellt wird. Darüber bekommt man schon ordentlich Performance durch, aber der Bremser wird immer die einzelne Verbindung sein. Man wartet immer auf ein TCP Acknowledge bevor die nächsten Daten transferiert werden. Und eben genau dieses warten bremst ordentlich aus.

Die Lösung liegt quasi auf der Hand, wir stellen einfach mehrere Verbindungen her. Ahhh – der will uns nun “pNFS” verkaufen.. Nein, will ich nicht. 🙂

Was ich euch eigentlich verkaufen will, ist eine NFS Mount Option. “NCONNECT” wird unser Performance Boost sein. Nur mit dieser kleinen Mount-Option stellt man direkt über NFS mehrere Multiple Verbindungen her, die gleichzeitig von den Applikationen verwenden werden. Es können bis zu 16 Verbindungen gleichzeitig hergestellt werden.

Der Vorteil von diesem Vorgehen ist, dass wir nicht mehr auf das Acknowledge auf dem einzelnen TCP-Stream warten müssen und merzen damit doofe Latenzprobleme aus. Größere Dateien werden somit über mehrere Streams verteilt und können deutlich effizienter übertragen werden. Die vorhandene Bandbreite kann deutlich besser ausgenutzt werden.

Wie wird NCONNECT eingerichtet?

Wie oben bereits erwähnt, NCONNECT ist eine NFS-Option und wird beim Mount-Befehl mit angegeben.

mount -o nconnect=8 nfs-server:/export/path /mnt/nfs

Hiermit werden jetzt 8 Verbindungen gleichzeitig zum NFS Ziel aufgebaut.

# Vorschau Produkt Bewertung Preis
1 Synology DiskStation DS224+ 2 Bay Dekstop NAS Synology DiskStation DS224+ 2 Bay Dekstop NAS Aktuell keine Bewertungen 337,90 EURAmazon Prime
2 Synology DS923+ 4 Bay Desktop NAS Ryzen R1600 Dual-Core Synology DS923+ 4 Bay Desktop NAS Ryzen R1600 Dual-Core Aktuell keine Bewertungen 589,00 EURAmazon Prime

Anforderungen um NCONNECT nutzen zu können

  • NFS-Version: NFS v4.1 oder höher.
  • Storage: Jeder NFSv4.1-kompatible Storage kann nconnect nutzen.
  • Client: Ab Linux-Kernel 5.3 oder höher ist nconnect möglich.

Wie kann ich sehen ob NCONNECT funktioniert?

Das Tool ss (Socket Statistics) kann dafür perfekt benutzt werden und ist in aktuellen Linux Distributionen automatisch vorhanden. Es muss natürlich eine Verbindung mit “nconnect” vorhanden sein.

ss -tan | grep <NFS-Server-IP>

-t: Zeigt nur TCP-Verbindungen an.
-a: Zeigt alle Sockets (auch inaktive).
-n: Verwendet keine Namensauflösung, zeigt IP-Adressen an.