Ich habe zwei Maschinen mit 10 Gbit Ethernet verbunden. Einer von ihnen sei der NFS-Server und ein anderer der NFs-Client.
Das Testen der Netzwerkgeschwindigkeit über TCP mit einem iperf
Durchsatz von ~ 9,8 Gbit / s in beide Richtungen zeigt, dass das Netzwerk in Ordnung ist.
Testen der Festplattenleistung des NFS-Servers:
dd if=/dev/zero of=/mnt/test/rnd2 count=1000000
Das Ergebnis ist ~ 150 MByte / s, sodass die Festplatte zum Schreiben einwandfrei funktioniert.
Server /etc/exports
ist:
/mnt/test 192.168.1.0/24(rw,no_root_squash,insecure,sync,no_subtree_check)
Der Client stellt diese Freigabe lokal /mnt/test
mit folgenden Optionen bereit:
node02:~ # mount | grep nfs
192.168.1.101:/mnt/test on /mnt/test type nfs4 (rw,relatime,sync,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.101)
Wenn ich versuche, eine große Datei (~ 5 GB) von der NFS-Freigabe auf den Client-Computer herunterzuladen, erhalte ich eine Leistung von ~ 130-140 MB / s, was der Leistung der lokalen Festplatte des Servers nahekommt.
Wenn ich jedoch versuche, eine große Datei auf die NFS-Freigabe hochzuladen, beginnt der Upload bei ~ 1,5 MB / s, steigt langsam auf 18-20 MB / s an und hört auf zuzunehmen. Manchmal "hängt" die Freigabe für ein paar Minuten, bevor der Upload tatsächlich beginnt, dh der Datenverkehr zwischen den Hosts nähert sich Null, und wenn ich ihn ausführe ls /mnt/test
, kehrt er innerhalb von ein oder zwei Minuten nicht zurück. Dann ls
kehrt der Befehl zurück und der Upload beginnt mit der anfänglichen Geschwindigkeit von 1,5 Mbit / s.
Wenn die Upload-Geschwindigkeit das Maximum erreicht (18-20 Mbytes / s), starte ich iptraf-ng
und es zeigt ~ 190 Mbit / s Verkehr auf der Netzwerkschnittstelle, so dass das Netzwerk hier kein Engpass ist, ebenso wie die Festplatte des Servers.
Was ich versucht habe:
1.
Richten Sie einen NFS-Server auf einem dritten Host ein, der nur mit einer 100-Mbit-Ethernet-Netzwerkkarte verbunden war. Die Ergebnisse sind analog: DL zeigt eine gute Leistung und eine fast vollständige 100-Mbit-Netzwerkauslastung. Der Upload erfolgt nicht schneller als Hunderte von Kilobyte pro Sekunde, sodass die Netzwerkauslastung sehr niedrig ist (laut Angaben 2,5 Mbit / s iptraf-ng
).
2. Ich habe versucht, einige NFS-Parameter zu optimieren:
sync
oderasync
noatime
Nein
hard
rsize
undwsize
sind in meinen Beispielen maximal, deshalb habe ich versucht, sie in mehreren Schritten auf 8192 zu verringern
3. Ich habe versucht, zwischen Client- und Servermaschinen zu wechseln (NFS-Server auf dem früheren Client einrichten und umgekehrt). Darüber hinaus gibt es sechs weitere Server mit derselben Konfiguration. Daher habe ich versucht, sie in verschiedenen Variationen aneinander zu montieren. Gleiches Ergebnis.
4. MTU = 9000, MTU = 9000 und 802.3ad Link Aggregation, Link Aggregation mit MTU = 1500.
5. System-Tuning:
node01:~ # cat /etc/sysctl.conf
net.core.wmem_max=16777216
net.core.rmem_max=16777216
net.ipv4.tcp_rmem= 10240 873800 16777216
net.ipv4.tcp_wmem= 10240 873800 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.core.netdev_max_backlog = 5000
Gleiches Ergebnis.
6. Mount von localhost:
node01:~ # cat /etc/exports
/mnt/test *(rw,no_root_squash,insecure,sync,no_subtree_check)
node01:~ # mount -t nfs -o sync localhost:/mnt/test /mnt/testmount/
Und hier erhalte ich das gleiche Ergebnis: Download von /mnt/testmount/
ist schnell, Upload nach /mnt/testmount/
ist sehr langsam, nicht schneller als 22 MByte / s und es gibt eine kleine Verzögerung, bevor die Übertragung tatsächlich beginnt. Bedeutet dies, dass der Netzwerkstapel fehlerfrei funktioniert und das Problem in NFS liegt?
All dies hat nicht geholfen, die Ergebnisse unterschieden sich nicht wesentlich von der Standardkonfiguration. echo 3 > /proc/sys/vm/drop_caches
wurde vor allen Tests ausgeführt.
Die MTU aller NICS auf allen 3 Hosts beträgt 1500, es wird keine nicht standardmäßige Netzwerkoptimierung durchgeführt. Der Ethernet-Switch ist Dell MXL 10 / 40Gbe.
Betriebssystem ist CentOS 7.
node01:/mnt/test # uname -a
Linux node01 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Welche Einstellungen fehle ich? Wie kann man NFS schnell und ohne Hänge schreiben lassen?
Operation not permitted
versuche, eine Verbindung zum NFS-Prozess herzustellen.