Probleme mit FreeBSD/amd64 und Samba 3.0.10

k3rn3lpanic

Unregistered User
Hallo Leute,

hab auf Arbeit ein Netzwerk laufen mit rund 40 Clients und FreeBSD/amd64 als Serversystem. Um die Windows-Clients zu bedienen habe ich auf dem Server Samba 3.0.10 installiert. Nun treten jedoch unschönerweise einige Probleme auf, die vorher (mit NT4 Server) nicht auftraten, dazu zählen:
  • Wenn ein Client eine Datei öffnet, wird diese seitens Samba nicht gelockt, d.h. das Dialogfeld von Word a la "Dieses Dokument ist bereits geöffnet von XYZ" bleibt aus und als Resultat ergibt sich meist ein Datenverlust (klar, wenn zwei Leute parallel an einer Datei arbeiten...). Das Problem tritt nicht nur bei Word auf, sondern auch bei anderen Programmen
  • Der Server geht nach einer Weile in die Knie, da viele (sehr viele!) smbd-Prozesse am laufen sind, welche in Summe etwa 99% der verfügbaren CPU-Leistung beanspruchen, dieses Problem tritt ebenfalls auf, wenn keiner am Netzwerk angemeldet ist. Es lässt sich temporär beheben, indem man Samba beenden und ein "killall -9 smbd" durchführt und Samba neu startet, kurz darauf ist diese... "Prozessmasse" allerdings wieder da.
  • Sporadisch treten beim Zugriff auf Freigaben auf dem Server "Zugriff verweigert"-Fehler auf, die Rechte auf die betreffenden Dateien sind jedoch so gesetzt, dass es eigentlich klappen sollte. Das Problem tritt aber wie gesagt nur sporadisch auf.
  • AutoCAD LT 2000 stürzt beim Speichern sporadisch ab

Bzgl. dieser Fehler bin ich mit meinem Latein etwas am Ende, auch Google konnte mir nicht weiterhelfen. Hier erstmal die smb.conf des betreffenden Gerätes:
Code:
[global]
   netbios name = SERVER1
   workgroup = SOMEWORKGROUP
   server string = LDAP PDC
   ldap passwd sync = yes
   passdb backend = ldapsam:ldap://127.0.0.1/
   ldap admin dn = cn=Manager,dc=some,dc=dc
   ldap suffix = dc=some,dc=dc
   ldap group suffix = ou=Groups
   ldap user suffix = ou=Users
   ldap machine suffix = ou=Computers
   ldap ssl = no
   syslog = no
   log file = /samba/log/samba.log
   os level = 65
   preferred master = yes
   domain master = yes
   local master = yes
   security = user
   encrypt passwords = yes
   domain logons = yes
   logon path = \\SERVER1\profiles\%U
   logon drive = H:
   logon home = \\SERVER1\homes\%U
   logon script = netlogon.bat

   add user script = /usr/local/sbin/smbldap-useradd -m "%u"
   ldap delete dn = yes
   add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
   add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
   add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
   delete user from group script = /usr/local/sbin/smbldap-groupmod -x "%u" "%g"
   set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"
   mangling method = hash
   admin users = Administrator
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=20480 SO_SNDBUF=20480
   printcap name = cups
   load printers = yes
   oplocks = no
   level2 oplocks = no
   strict locking = no
   
[printers]
   comment = Drucker
   printing = CUPS
   printable = yes
   create mask = 0600
   path = /shares/printers
   browseable = yes
   guest ok = yes

[netlogon]
   path = /shares/netlogon
   comment = Netzwerk-Logon
   read only = yes
   write list = @"Domain Admins"
   browseable = no
   guest ok = yes

[profiles]
   comment = Nutzerprofile
   path = /shares/profiles
   read only = no
   browseable = no
   create mask = 0664
   directory mask = 0775
   profile acls = Yes
   guest ok = yes
   force user = %U
   valid users = %U @"Domain Admins"

[homes]
   comment = Dateien von %U (%u)
   read only = no
   create mask = 0644
   directory mask = 0775
   browseable = no

[Programme]
   path = /shares/programme
   comment = Programme
   read only = no
   create mask = 0644
   directory mask = 0775
   browseable = yes
   guest ok = yes

[Data]
   path = /shares/daten
   comment = Daten
   read only = no
   create mask = 0664
   directory mask = 0775
   browseable = yes
   guest ok = no
   valid users = %U @"Domain Users" @"Domain Admins"

[Restricted]
   path = /shares/restricted
   read only = no
   create mask = 0644
   directory mask = 0775
   browseable = yes
   guest ok = no
   valid users = %U @"restricted"
   force group = "restricted"

[Mail]
   path = /shares/mail
   browseable = yes
   directory mask = 0775
   create mask = 0644
   read only = no
   guest ok = no

[Cd]
   path = /shares/cd
   browseable = yes
   directory mask =0775
   create mask = 0644
   read only = no
   guest ok = no

Als "Benutzerdatenbank" fungiert OpenLDAP in aktueller Version (müsste 2.2.10 sein). Hardwareseitig handelt es sich um ein Tyan-Dualprozessorboard, welches aktuellerweise jedoch nur mit einem Prozesser (Opteron 246) bestückt ist, es wurden 1024 MByte Arbeitsspeicher verbaut und die Daten liegen auf drei U320-SCSI-HDDs welche an den sich auf dem Motherboard befindlichen Adaptec 7902-Controller angeschlossen sind (entspricht etwa dem Adaptec 39320 als PCI-X-Karte). System ist FreeBSD 5.3-RELEASE mit den aktuellen Patches.
Sofern noch weitere Informationen benötigt werden, bitte melden, ich jedenfalls bin mit meinem Latein ziemlich am Ende :(

Bin für jede Hilfe dankbar :)

mfg,

ulrik
 
Zuletzt bearbeitet:
Gut. Ein Problem ist schon einmal gelöst, nämlich das mit der viel zu hohen Prozessorauslastung. Es ließ sich durch ein "einfaches"
Code:
dead time = 60
in der smb.conf beheben, welches bestehende Client-Verbindungen nach 60 Minuten Inaktivität trennt (default ist 0, d.h. Verbindungen sind persistent).
Weiterhin besteht jedoch das Locking-Problem, welches ich oben bereits beschrieben habe. Mit NT4/W2k3 sah die "Befehlskette" so aus:

Code:
Client öffnet Datei "Dokument.doc" -> Server setzt Filelock so, dass nur lesender Zugriff möglich ist -> zweiter Client öffnet Datei -> Server sagt: Datei ist geöffnet -> Client bekommt Meldung: "Datei ist geöffnet, möchten Sie XYZ benachrichtigen"

Mit Samba sieht das ganze aktuellerweise wiefolgt aus:

Code:
Client öffnet Datei "Dokument.doc" -> Server setzt Filelock mit Flag DENY_NONE (d.h. "macht doch was ihr wollt") -> zweiter Client öffnet Datei -> Beide Clients haben Datei "Dokument.doc" geöffnet und arbeiten daran -> Client 1 speichert -> Client 2 speichert => ERGO: Datenverlust

Letzteres ist selbstverständlich alles andere als optimal. Kann jemand diesbezüglich einen Hinweis geben? BITTE!!!!
In der smb.conf sieht es momentan so aus, dass oplocks aktiviert sind, blocking locks sind deaktiviert und strict locking ist aktiviert.

Vielen herzlichen Dank im Voraus!
 
Bereits probiert, keine Veränderung des ganzen.
Mittlerweile habe ich fast den Verdacht, es könnte an der amd64-Version von FreeBSD liegen. Sollte ich evtl. mal einen zweiten Rechner aufziehen mit gleicher Konfiguration, nur eben mit FreeBSD/i386?

mfg,

ulrik
 
Zurück
Oben