• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Verbindung Samba Server - Client langsamer als NFS

mairo

Hacker
Hallöchen,

ich habe mal eine allgemeine Frage: Warum ist die Verbindung von Samba-Server zu Samba-Client (beides Linux-PC) so viel langsamer als von NFS-Server zu NFS-Client?
Der Zugriff zwischen Samba-Server und Windows 8 (selber PC wie Linux-client (zwei Systeme installiert, Dualboot)) ist übrigens sehr flott!
Nur der Zugriff Samba Server - Client ist langsam. Woran liegt das?
Bei NFS fehlt mir irgendwie die Möglichkeit shares zu "beschränken" (Benutzer usw.).

Danke für eure Erfahrungen / Meinungen.

mairo
 

spoensche

Moderator
Teammitglied
mairo schrieb:
ich habe mal eine allgemeine Frage: Warum ist die Verbindung von Samba-Server zu Samba-Client (beides Linux-PC) so viel langsamer als von NFS-Server zu NFS-Client?
Der Zugriff zwischen Samba-Server und Windows 8 (selber PC wie Linux-client (zwei Systeme installiert, Dualboot)) ist übrigens sehr flott!
Nur der Zugriff Samba Server - Client ist langsam. Woran liegt das?

Das die Verbindung zwischen zwei Linux Rechnern per Samba langsamer sind als NFS hat folgenden Grund:

Die UserID und GruppenID ist unter Linux anders als unter Windows. Samba muss die UID also mappen. Das Mapping erfolgt bei den Dateifreigaben, wenn der Server gestartet wird und liegt somit im RAM. Wenn ein Windows Client dann auf die Dateifreigabe zugreift, muss kein zusätzliches bzw. erneutes Mapping durchgeführt werden.

Wenn jetzt ein Linux Client auf die Dateifreigabe zugreift, dann passiert folgendes:

1. Die Linux UIDS werden gemappt, damit Samba damit etwas anfangen kann. Samba muss danach allerdings ein erneutes Mapping durchführen und dann die Zugriffsrechte vergleichen und das kostet Zeit.


Bei NFS und zwei Linux Clients müssen die UIDS nicht zwangsläufig gemappt werden, weil die Linux UIDS direkt verwendet werden können. Allerdings gibts es kleinere Fallstricke bezüglich der Zugriffsrechte auf die Dateifreigaben. Wenn der User xyz auf dem Server die UID 1001 hat, aber auf dem Client hat der User xyz die UID 1002 und kann dann nicht auf die Dateifreigabe schreiben, weil die UIDS unterschiedlich und für den Server somit verschiedene User sind.

mairo schrieb:
Bei NFS fehlt mir irgendwie die Möglichkeit shares zu "beschränken" (Benutzer usw.).

Da irrst du dich. Da für die Zugriffsrechte die auf dem System vorhandenen User verwendet werden, greift der Zugriffsmechanismus als wenn es ein lokaler User wäre. Auf beiden Systemen muss der User xyz existieren und die UID muss auf beiden Systemen gleich sein. Wenn die UIDS nicht identisch sind, dann bist du auf den ID-Mapper angewiesen.
 

drcux

Hacker
spoensche schrieb:
Das die Verbindung zwischen zwei Linux Rechnern per Samba langsamer sind als NFS hat folgenden Grund:
[...]

Kann ich hier nicht nachvollziehen:
Code:
$ time cp nfsmount/testfile /home/detlef/Temp/
real	0m12.363s
user	0m0.000s
sys	0m0.557s

$ time cp smbmount/testfile /home/detlef/Temp/
real	0m12.608s
user	0m0.007s
sys	0m0.763s

Auch bei vielen kleinen Dateien ist der Unterschied minimal, man kann also nicht von "so viel langsamer" sprechen.

Könnte an schlechter Konfiguration von samba, an einem besch....nen Netzwerkkartentreiber oder was auch immer liegen. Mehr Infos...
 
OP
M

mairo

Hacker
Also, mein derzeitiger Server ist mit einer Hardware aus der Steinzeit bestückt:
- Athlon XP1700
- 512MB RAM (PC133)
- IDE-HDD als Systemplatte
- PCI-SATA-Controller (SIL-Chipsatz); daran hängen zwei SATA HDD (je 1TB) im RAID1 Verbund (Softwareraid)
- PCI GLAN Netzwerkkarte von Realtek.

System: Opensuse 13.1 ohne Grafische Oberfläche natürlich.

Unter Windows kann ich mit ca 30 MB/sek Daten lesen und schreiben (über Samba). OK! (In Anbetracht des Systems)
Greife ich jedoch mit Opensuse auf den Samba-Server zu, so sinkt die Rate auf ca. 15-18 MB/sek. Mit NFS Sind es, wie mit Samba und Windows, ebenfalls etwa 30 MB/sek.

Ich werde in den nächsten Wochen meinen Server aufrüsten (bzw. es gibt einen komplett neuen): Geplant: Intel G3220 oder ein kleiner i3. Werden dann wohl die Schreib-/Leseraten mit NFS und SMB etwa ähnlich sein unter Linux?

Zu dem Thema "Benutzerrechte und NFS" werde ich ein neues Thema eröffnen.

Gruß
mairo
 

spoensche

Moderator
Teammitglied
@drcux:

Naja aus deinem Test geht schon hervor das Samba langsamer ist. Allerdings minimal.

@mairo:

Dein Server ist ja schon älter und das hat ebenfalls Auswirkung auf die Geschwindigkeit.
 
OP
M

mairo

Hacker
@drcux:

Was hast du denn wie gemessen? Kannst du das mal näher erläutern, damit ich (wir) das einordnen können?

Danke!

@spoensche:

Das mit der alten Hardware ist mir bewusse. Nur: Wird ein Zweigern-Pentium ausreichen und annähernd gleich Netzwerkdurchsätze bei NFS und Samba zu bewerkstelligen? Bei der Konstellation Sambaserver(Linux)-Windows werden, laut Foren, Werte um 100 MB/sek (und darüber) erreicht, also nah dran am Maximum. DAs wäre für mich auch ein super Wert. Bitte versteh mich nicht falsch: ich möchte hier nicht darüber "streiten" ob nun die volle mögliche Leistung, die die Hardware hergibt, erreicht wird, sondern eher ob es einen LEistungsabfall con 30-50% mit der Konstellation Sambaserver-Sambaclient gibt, denn dies wäre schon ärgerlich. Das das Mapping Zeit kostet habe ich verstanden und kann es nachvollziehen. Aber wieviel "Rechenpower" ist notwendig, damit das kaum noch auffällt? Was meint ihr? 2x3Ghz genug?

Gruß
mairo
 

TomcatMJ

Guru
Kommt wohl drauf an ob du ne SSD oder ne normale Festplatte dann reinbaust,denn die Transferrate der festplatte ist der eigentliche Flaschenhals da Samba mehr zugriffe auf eine Datei macht bevor es sie ausliefert als NFS da ja noch die Mappings geprüft werden müssen bevopr der Server die Datei rausgeben darf ;) Abgesehen davon ist der Protokolloverhead bei Samba gegenüber NFS auch nicht zu verachten als mögliche Bremse beim Datenztransfer...Brutto können beide nahezu identische Transferraten schaffen aber Netto kommt eben bei Samba weniger "Nutzlastspeed" raus als bei NFS....und zwar hauptsächlich wegen den Zusatzdaten die dabei transferiert werden auf TCP/IP Ebene...
HAbe hier einen Notebook mit einem Turion 3200 MHz und da ist eigentlich primär die Festplatte die Bremse,ansonsten ist der Geschwindigkeitsunterschied bei Samba gegenüber NFS c.a. 5-8% wenn auf Gastfreigaben durch Samba und Dateien die alle lesen dürfen bei NFS zugegriffen wird. Ich nutze ja beide Varianten im MosNis,da ist durchaus ein Vergleich beim Installationsspeed über Samba und über NFS zu merken ;) Am nächsten dran am NFS ist immer noch FTP solangs nicht um Clustersysteme geht sondern um einzelne Server....
 

stka

Guru
ich will mal versuchen etwas Licht ins Dunkel zu bringen:
Bei der Verwendung von CIFS bzw SMB (so heißt es jetzt wieder bei MS) ist die Transferrate sehr stark abhänging von der verwendeten SMB-Version. Da Samba in den verschiedensten Versionen unterschiedliche SMB-Versionen an default verwendet. Wäre es est einmal sehr wichtig zu wissen, welche Version der Frgende einsetzt. Bis Samba 3.5 war IMMER SMB1 die verwendete Version. Ab Version 3.5 stand smb2 als experimental zur Verfügung. Ab samba 3.6 war dann SMB2 die Standardversion und mit Samba 4 ist es jetzt SMB3. SMB3 ist auf Grund der überarbeiteten Kommandos und Strukturen erheblich schneller als NFS und der Datenverkehr ist grundsätzlich verschlüsselt. Samba 4 unterstütz noch nicht alle Funktionen von SMB3 aber schon die wichtigsten.
Dann noch was zum Thema mounten und UIDs und GIDs. Bei der Verwendung von cifs-mount, am besten geht das über pam-mount, werden keine UIDs verwendet, sondern die Benutzernamen, deshalb spielt das ID-Mapping dabei keine Rolle. Das schöne ist, dass dann auch solche Paramter wie "hide unreadable = yes" aus den Samba-Freigaben auf den Linux-Clients verwendet werden. NFS ist, wenn es in der Version 4 verwendet wird und nur dann, ein schnelle Protokoll. Wenn es denn RICHTIG konfiguriert wurde. Aber seit SMB3 in heterogenen Netzen nicht mehr notwendig. Durch den Verzicht auf NFS wird der Darendurchsatz sogar noch höher, da der Traffic um ein Protokoll reduziert wird.
Also ein gut konfigurierter Samba 4 Server im Netz ersetzt jeden NFS-Server. Der schöne Nebeneffekt ist der, dass Samba 4 dann auch noch als Authentifizierungsquelle mit Kerberos verwendet werden kann und das sowohl für Windows- als auch für Linux-Clients.
 

TomcatMJ

Guru
Hmmm...wird wohl Zeit meinen MosNis bald mal auf Samba 4 umzustellen (sofern ANI und unattended das mitmachen) wenn ich das hier so lese ;)
 

drcux

Hacker
spoensche schrieb:
@drcux:
Naja aus deinem Test geht schon hervor das Samba langsamer ist. Allerdings minimal.

Das war eine 700MB Datei, da sind 0.24 Sekunden Unterschied nicht langsamer. Das Mappen der UIDs ist bestimmt auch kein Grund dafür, das die Übertragungsrate bei ihm um fast 50% zusammenbricht, auch der größere Overhead von smb/cifs kann es nicht sein, da er die gleichen guten Übertragungsraten auch mit Windows als Client erreicht.

Interessant wäre also auch die Clientseite, wie mountest du die Freigabe? Sind die verwendeten Sambaversionen gleich? Hardware? Systemauslastung beim kopieren? etc.
 
OP
M

mairo

Hacker
Also, ich versuche mal auf alles hier einzugehen:

Ich benutze die von Opensuse 13.1 verwendeten Samba-Versionen (4.1.x soweit ich weiß). Das max.Protokol habe ich auf SMB2 stehen. Sollte dann vielleicht mal auf SMB3 umstellen.

Die Client-Version ist die selbe wie die Server-Version von Samba.
Der Client Rechner ist ein recht aktueller AMD 4-Kerner und 8GB RAM.
Gemounted wird per fstab-Eintrag mit Angabe des users und passwortes (ich weiß, sollte man nicht tun!).

Wie funktioniert denn pam-mount??? Habe mich damit noch nie befasst....

Ein Unterschied von ca. 1/4 Sekunde bei 700MB ist wirklich zu vernachlässigen, dass fällt eher in die Messtolleranz, wie ich finde.
Schätzungsweise ist mein alter Server heillos mit dem ganzen überfordert, oder? Die Systemauslastung müsste ich mal mit TOP überprüfen, bin mir aber sicher, dass Samba und Raid einiges schlucken werden und da es eine alte CPU mit nur einem Kern ist...

Gruß
mairo
 

stka

Guru
Ja eine Umstellung auf SMB3 solltest du machen und zu pam-mount gibt es viele Howtos im Netz so wie dieses:
https://sit.auckland.ac.nz/How_to_automount_CIFS/NFS_share_on_Linux_upon_logon%3F
nur die ganzen PAM-Dateien in /etc/pam.d musst du nicht mehr anpssen. Wenn du pam-mount installierst ist schon alles für PAM vorbereitet. Du musst lediglich die Konfigurationsdatei für deine Umgebung anpssen. Die /etc/fstab brauchst du nicht. Die Mountpoints musst du auch nicht anlegen, das macht alles pam-mount für dich
 
OP
M

mairo

Hacker
Danke für den Link!!!!
Muss ich keinen Benutzer/Passwort für den SAmba-Nutzer angeben?
Wann wird gemounted? Beim Systemstart? Bein Anmelden? Beim ersten Zugriff?

GRuß
mairo
 

stka

Guru
Wenn du Samba 4 als AD-Controller eigerichtet hast, geht das über Kerberos (sec=krb5) als Option. Gemountet wird bei der Anmledung automatisch. Steht alles in der xml-Conf-Datei.
 
OP
M

mairo

Hacker
Samba ist bei mir nur als "USER"-Freigabe eingerichtet, da ich keine Domäne habe. Kerberos habe ich auch nicht... Wie richte ich das alles ein????? Bitte entschuldige meine Unwissenheit :-(
 
OP
M

mairo

Hacker
Danke,

leider sind die verlinkten Dropbox-Dateien nicht mehr aufrufbar :-(

Gibt es die Dokumentation noch an einer anderen Stelle?
 
OP
M

mairo

Hacker
OK, danke! Ist ja doch schon alles sehr komplex.
Würde für meine Zwecke nich pam-mount reichen? soweit ich das verstanden habe, werden da die Freigaben mit dem gerade angemeldeten Benutzer gemounted. Das Problem könnte nur bei meinem Laptop sein: Die WLAN-Verbindung wird ja erst bei der Anmeldung hergestellt (KDE). Danach dürften ja erst die "Mounts" stattfinden, da sie ansonsten ins Leere greifen....

Ich habe im Ubuntu Wiki was gefunden zum Thema Autofs:

Samba-Freigabe

Zum Einbinden der Samba-Freigabe "Musik" auf dem Server mit der IP "192.168.1.101" eignet sich z.B. folgende Zeile in der Map-Datei /etc/auto.cifs-shares:

Code:
Musik -fstype=cifs,uid=1000,credentials=/home/Simon/.smbcredentials ://192.168.1.101/Musik

Mit folgendem Eintrag in /etc/auto.master

Code:
/media/cifs /etc/auto.cifs-shares --ghost

wird die Freigabe dann nach /media/cifs/Musik gemountet. Näheres zum Einbinden mittels cifs-vfs siehe Samba Client cifs.

Könnte man nicht

Code:
Musik -fstype=cifs,uid=1000,credentials=/home/Simon/.smbcredentials ://192.168.1.101/Musik


ersetzen durch ein

Code:
Musik -fstype=cifs,uid=1000,credentials=/%USER/.smbcredentials ://192.168.1.101/Musik

???

Gruß
mairo
 
OP
M

mairo

Hacker
Also, ich habe nun mal folgenden Test gemacht:

Samba-Server <-> Windows 7 = ca. 100MB/Sek
Dieser Wert ist ok!

Samba-Server <-> Opensuse (cifs) = ca 30MB/Sek

Woran liegt das?
Übrigens: Ich habe den Server von der Hardware her aktualisiert, ist nun ein Intel Haswell, also daran wird es nicht liegen...

Gruß
mairo
 
Oben