Samba - Die Konfigurationsdatei im Schulalltag

Seite: 2/4
(3458 Worte insgesamt im Text)
(25875 mal aufgerufen)  Druckerfreundliche Ansicht

Die [global]-Sektion

Der "include"-Parameter

Weitere Konfigurationsdateien können durch die Anweisung include eingebunden werden. In älteren Samba-Versionen sollten die include-Befehle aber am Ende der [global]-Sektion stehen, da sonst u.U. darunter stehende Einstellungen ignoriert werden. Bei neueren Versionen (so ab 2.2) ist dies nicht mehr der Fall.

Die Auslagerung von Konfigurationsdateien ist hilfreich, wenn z.B. später einmal Upgedatet wird und die eigenen Einstellungen in einer separaten Datei liegen, die im neuen System nur noch über eine einzelne Zeile eingefügt werden müssen.

Zudem können sich so z.B. zwei gleichzeitig laufende Samba-Server die Konfiguration für ein "Share" teilen, indem Sie beide dieselbe Datei einbinden. Zudem können Sie für verschiedene Nutzer oder Maschinen oder ... andere Files verwenden.

Ein Beispiel gefällig?

include = /etc/smb.conf.%a

Hier bekommt jeder Client mit einem anderen Betriebssystem auch eine andere Datei serviert. So könnte man also hier einem Windows NT-Rechner andere Shares zur Verfügung stellen als einem Windows 9x-Rechner.

Die "socket options"

Mit diesem Parameter in der [global]-Sektion beeinflussen Sie die Performance von Samba im Netzwerk. Sie können Samba damit unheimlich schnell - aber leider auch unheimlich langsam machen. Ausprobieren ist hier meist der einzige Weg zur richtigen Einstellung für das eigene Netzwerk.

Grundsätzlich passen die Optionen die Protokolle der unteren Schichten (nach OSI-Modell) an. Sie ergänzen oder entfernen bestimmte Parameter dieser Protokolle und ändern so die Form des Datenaustauschs zwischen Server und Client. Sie sollten also zunächst zumindest von einem Client aus vernünftigen Zugriff auf den Server haben und Benchmarktests nach jeder Änderung durchführen. Übertragen Sie dazu jedes Mal eine mehrere MB große Datei vom Server zum Client und umgekehrt und messen Sie die dazu benötigte Zeit. Nehmen Sie aber immer eine andere Datei - sonst könnte Ihnen der Cache einen Strich durch die Rechnung machen.

Mehrere Optionen werden durch Leerzeichen voneinander getrennt.

Wird hinter einer Optionen die Angabe eines Wertes erwartet, sind Leerzeichen vor oder nach dem Gleichheitszeichen aber nicht erlaubt.

Folgende Optionen können Sie setzen:

IPTOS_LOWDELAY Hierbei handelt es sich um ein "Flag", welches innerhalb eines IP-Paketes gesetzt wird: der Type of Service (TOS) bekommt also den Wert "wenig Verzögerung". Dieser Parameter wird nicht von allen Betriebssystemen und Routern ausgewertet - kann aber ebenfalls die Performance erhöhen und sollte immer zusammen mit TCP_NODELAY eingesetzt werden.
IPTOS_THROUGHPUT Auch hierbei handelt es sich wieder um ein Flag innerhalb eines IP-Pakets. Hier wird bei einem Router um die Strecke mit "Maximalen Durchsatz" gebeten. Auch dieser Parameter wird nicht von allen Betriebssystemen und Routern ausgewertet.
TCP_NODELAY Dies veranlasst Samba, gleich mehrere TCP-Pakete bei einer Übertragung zum Client zu verwenden und nicht erst auf eine Bestätigung für den korrekten Empfang jedes einzelnen Pakets zu warten. Ab Samba 2.0.4 sollte diese Option voreingestellt sein - das setzen dieses Flags stört aber nicht.
SO_KEEPALIVE Samba prüft alle vier Stunden nach, ob ein Client noch reagiert. Wenn nicht, beendet Samba die Verbindung und spart so Ressourcen.
SO_REUSEADDR Aktiviert die Wiederverwendung von lokalen Adressen. Diese Option sollte nicht benötigt werden, da Sie von Linux standardmäßig gesetzt wird.
SO_BROADCAST Soll Samba Rundruf-Pakete verwenden? Normalerweise sollte diese Option nicht benötigt werden - wenn Samba aber Probleme mit der Namensauflösung der Clients hat oder den Master-Browser nicht findet, können Sie sie aktivieren. Beachten Sie, dass Sie dann aber auch einen zusätzlichen "Wins-Server" und einen "PDC" im Netzwerk haben sollten. Ansonsten macht die Aktivierung keinen Sinn.
SO_SNDBUF= Legt den Sendepuffer für ausgehende Pakete fest. Nehmen Sie immer Vielfache von 1024. In einem 10MBps-BNC-Netzwerk hat sich z.B. SO_SNDBUF=8192 bewährt.
SO_RCVBUF= Hier legen Sie im Gegensatz zu SO_SNDBUF den Empfangspuffer fest. Auch hier ein in der Praxis erprobtes Beispiel: SO_RCVBUF=8192
SO_SNDLOWAT= Dieser Parameter ist für Linux irrelevant. Insbesondere, da der Parameter TCP_NODELAY ihn eigentlich aufhebt. Normalerweise würde erst dann ein TCP-Paket gesendet, wenn n Byte an Daten zusammengekommen sind. Also etwa bei SO-SNDLOWAT=1460
SO_RCVLOWAT= Auch dieser Parameter sollte bei einem Linux-Server nicht gesetzt werden. Er beeinflusst, wann ein Paket an eine höhere Schicht weitergegeben wird.

Zum Abschluss ein erprobtes Beispiel in einem 10MBps-BNC-Netzwerk:

socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192 IPTOS_THROUGHPUT IPTOS_LOWDELAY SO_KEEPALIVE

"read raw" und "write raw"

Diese Parameter erlauben es Samba, SMB/CIFS-Pakete bis zu 64KByte Größe zu senden und zu empfangen. Ist der jeweilige Wert auf No gesetzt, so wird Samba gezwungen kleinere Pakete zu bilden, was die Performance beeinträchtigt. Man sollte hier also die voreingestellten Werte belassen bzw. explizit mit:

read raw = yes
write raw = yes

setzen. Wenn ein Client anschließend Probleme machen sollte, hat man halt Pech gehabt und muss auf diese Option verzichten. Hier - mit Windows 95-Clients - kam dies nicht vor. Bei neueren Windows-Versionen sollte es eigentlich auch nicht mehr passieren.

Der Wert "max xmit"

Beim Verbindungsaufbau verhandeln Client und Server einen Wert namens maximum transmit size, der die Größe nahezu aller SMB-Befehle beschränkt. Normalerweise ist der Wert auf 65535 gesetzt, was in allen Netzwerken eine optimale Performance bewirkt. Manchmal kann aber auch ein kleinerer Wert bessere Resultate bringen. Werte unter 2048 führen aber nachprüfbar zu Problemen.

max xmit = 5535

Tote Clients: "deadtime" und "keepalive"

Ab und an sollen Windows-Clients ja abstürzen. Damit Samba dies nicht erst nach 4 Stunden bemerkt und solange die Verbindung und damit Ressourcen reserviert, gibt es diese beiden globalen Parameter.

Mit
deadtime = 5

wird Samba veranlasst, 5 Minuten auf einen Client zu warten, der derzeit inaktiv ist. Im Schulalltag mit seinen 45 Minuten-Zeiten hat sich dieser Wert schon recht gut bewährt. Evtl. sind auch Zeit bis eben 45 Minuten sinnvoll - je nach Anwendungen, die auf den Clients gefahren werden.

keepalive = 150

keepalive-Pakete werden versendet um zu prüfen, ob ein Client noch "am Leben" ist. Die Angabe erfolgt in Sekunden - im Beispiel wird also alle zweieinhalb Minuten überprüft, ob der Client noch lebt.

Zusammen mit der Socket-Option SO_KEEPALIVE werden hier also letztendlich restriktiv Ressourcen am Server freigemacht, sobald sich ein Client nicht mehr meldet.

Datei-Locking mit "oplocks"

Ist diese Option gesetzt, dürfen Clients die angeforderten Dateien auf ihrem eigenen System zwischenspeichern und Schreibzugriffe auf geänderte Dateien werden erst dann ausgeführt, wenn ein weiterer Zugriff auf diese Dateien (z.B. durch einen anderen Client) erfolgt. Dies sollte die Performance in der Größenordnung von 30 Prozent steigern - ist jedoch die Standard-Einstellung und sollte nur geändert werden, wenn es Probleme mit Clients gibt oder bestimmte Dateien (z.B. Datenbanken) ein anderes Vorgehen verlangen. Bei einzelnen Dateien kann hier aber noch der Parameter veto op#LOCK files helfen. Zudem kann man den Parameter auch in einzelnen Shares verwenden.

oplocks = yes

Verzeichnis merken: "getwd cache"

Dieser Parameter bewirkt, dass sich Samba den Pfad zum aktuellen Verzeichnis merkt. Wird er auf yes gesetzt, kann dies die Performance leicht anheben.

getwd cache = yes

Sofort senden: "read size"

Normalerweise wartet Samba, bis die angeforderten Datenpakete komplett von der Festplatte gelesen wurden, bevor Sie über das Netzwerk übertragen werden. Dieser Parameter veranlasst die Datenübertragung nach einer bestimmten Anzahl an Bytes noch bevor das Lesen von der Platte abgeschlossen ist. Erlaubte Werte liegen zwischen 1024 und 65536, wobei der optimale Wert stark von der Geschwindigkeit des Netzwerks und der Festplatte des Servers abhängt.

read size = 16384

Logfiles schreiben: "log level"

Samba schreibt normalerweise unterhalb von >/var/log/ ein Logbuch über verschiedene Vorkommnisse. Die Ausführlichkeit der festgehaltenen Meldungen wird durch den Loglevel beeinflusst.

Wird dieser "log level" auf Werte größer als 2 gesetzt, muss Samba sehr viel protokollieren und beansprucht die Festplatte zusätzlich. Dies resultiert meist in einem starken Performance-Einbruch.

Sie sollten für den "normalen" Betrieb den "log level" also höchstens auf den Wert 2 setzen. Wenn Sie allerdings nach Fehlern suchen machen log level kleiner als 12 keinen Sinn.

log level = 2

Speicherverbrauch: "shared mem size"

Dieser Parameter erlaubt das Festlegen der Speichergröße (in Bytes), die von den smbd-Prozessen verwendet werden darf. Normalerweise verwendet Samba nur 1 MB an RAM. Für große Server kann dies aber zu wenig sein. Mit

shared mem size = 2097152

setzen Sie diesen Wert auf 2 MB herauf.

Die Bosse: "admin users"

Mit dem Parameter:
admin users = admin
erklärt man den Nutzer admin, der sich unter Windows anmeldet, zum Nutzer root auf dem System. D.h. dieser Nutzer führt - auch wenn er unter Windows angemeldet ist - alle Zugriffe auf die Dateien des Servers mit der Nutzerkennung von root, also den höchsten Rechten aus. Damit kann er dann z.B. Dateien und Verzeichnisse löschen die ihm nicht gehören oder anderen Leuten Dateien und Verzeichnisse ins Homeverzeichnis legen, die diese nicht mehr löschen können. Seien Sie also vorsichtig mit der Vergabe dieser Rechte!


Kommentare

Einen Kommentar hinzufügen



 Suchen:


 Umfrage

(Nur für angemeldete Benutzer)

Was wird hier am meisten vermisst?

[ Ergebnis | Umfragen ]

Stimmen: 621
Kommentare: 0

 Zitate

Es gibt zwei Dinge im Leben, die du nicht zurücknehmen kannst: Den Pfeil den du verschossen und das Wort, das du gesprochen.

-- altes indianisches Sprichwort