Hier habe ich einen Samba-Server (Debian 5.0), der zum Hosten von Windows XP-Profilen konfiguriert ist.
Clients stellen eine Verbindung zu diesem Server her und bearbeiten ihre Profile direkt auf der Samba-Freigabe (das Profil wird nicht lokal kopiert).
Hin und wieder wird ein Client möglicherweise nicht ordnungsgemäß heruntergefahren, sodass Windows die Dateisperren nicht aufhebt. Wenn wir uns die Samba-Sperrtabelle ansehen, sehen wir, dass viele Dateien immer noch gesperrt sind, obwohl der Client nicht mehr verbunden ist. In unserem Fall scheint dies bei von Mozilla Thunderbird und Firefox erstellten Sperrdateien der Fall zu sein. Hier ist ein Beispiel für die Samba-Sperrtabelle:
# smbstatus -L | grep DENY_ALL | head -n5
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
15494 10345 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user1 app.profile/user1.thunderbird/parent.lock Mon Nov 22 07:12:45 2010
18040 10454 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user2 app.profile/user2.thunderbird/parent.lock Mon Nov 22 11:20:45 2010
26466 10056 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user3 app.profile/user3.firefox/parent.lock Mon Nov 22 08:48:23 2010
Wir können sehen, dass die Dateien von Windows geöffnet wurden und eine DENY_ALL-Sperre auferlegt haben.
Wenn sich ein Client erneut mit dieser Freigabe verbindet und versucht, diese Dateien zu öffnen, gibt Samba an, dass sie gesperrt sind, und verweigert den Zugriff.
Gibt es eine Möglichkeit, diese Situation zu umgehen, oder fehlt mir etwas?
Edit: Wir möchten , dass Dateisperren zu deaktivieren auf dem Samba - Server vermeiden , weil es gibt gute Gründe , diejenigen zu aktivieren.
quelle
Schauen Sie sich an:
und sehen Sie, ob dies Ihr Problem beheben wird oder nicht.
Von der
smb.conf
Manpage:Edit :
Ich habe gerade über eine andere mögliche Lösung nachgedacht. Sie könnten so etwas für die betreffende Aktie tun.
Dies würde nur Oplocks für .lock-Dateien verhindern.
quelle
Einige sehr kluge Leute bei Samba haben beschlossen, diese Option zu entfernen, und es gibt keinen Ersatz dafür.
Bisher für die SMB-Kompatibilität, da dies in der Tat das Standard-Gewinnverhalten ist.
Sofern ein Benutzer nicht mit der Linux-Befehlszeile vertraut ist und nicht weiß, wie geöffnete Dateien / Prozesse beendet werden, müssen Sie SMBD oder den Server selbst neu starten, um dies zu löschen.
Wunderbar gemacht, Samba.org.
quelle
reset on zero vc
Option in Debian 9 - Samba 4.5.12 weiterhin im Handbuch aufgeführt und wird auch von angezeigttestparm
. Entweder ist es zurück oder es wurde wirklich nicht entfernt.Ich hatte ein ähnliches Problem, ein Client stürzte beim Kopieren einer großen Datei ab und die Datei wurde nach dem Neustart gesperrt. Glücklicherweise passiert dies nicht sehr oft, aber es ist trotzdem ziemlich ärgerlich, den Samba-Prozess abbrechen zu müssen.
reset on zero vc
schien nur die Lösung zu sein, aber es wurde angeblich aus Samba4 entfernt, obwohl Version 4.7.6 auf Fedora (27) es noch hat (möglicherweise von RH gepatcht). Es wird sowieso nicht viel helfen, wie die Manpage jetzt sagt, dass es nur mit SMB1 funktioniert (das nicht mehr verwendet werden sollte) und nichts mit SMB2- und SMB3-Verbindungen tut. Die einzige Möglichkeit, dies zu handhaben, wird in erwähnt der von Micheal verlinkte Thread . Ich kenne die Gründe für die Entfernung nicht und weiß nicht, woran es so schlimm istreset on zero vc
Ich würde die Verwendung von TCP-Timeout für diesen Zweck eher als Hack betrachten. Jedenfalls könnte etwas Vernünftiges zB seinDadurch wird die Verbindung etwa 40 Sekunden (30 + 3 * 3) nach der letzten Kommunikation beendet. Dies ist normalerweise mehr als ausreichend, um einen Absturz und einen Neustart zu bemerken (vorausgesetzt, der TCP-Stack des Servers ist intelligent genug, um die Verbindung zu schließen, wenn der Client lehnt seine Keepalive-Pakete nach dem Neustart ab).
Beachten Sie, dass dies die Belastung Ihres Netzwerks erhöht, aber ich bezweifle, dass dies selbst bei vielen Clients spürbar ist.
quelle
deadtime = 10
oder so es löschen, aber da die Dateisperren für SMB3_11-Verbindungen für immer bestehen bleiben, hat dies keine Auswirkung, da die Totzeit nicht überprüft wird, solange noch Dateisperren für eine PID vorhanden sind. Extrem frustrierend.deadtime
tut nichts, wenn Ihre Clients Dateien geöffnet haben, daher wäre die Frage, welche Dateien sie offen halten. Aber das ist wahrscheinlich ein ganz anderes Thema als das hier diskutierte. Sie sollten daher eine neue Frage dazu stellen. Meinsocket options
Vorschlag hilft nur bei Verbindungen, die nicht ordnungsgemäß geschlossen sind (weil die Clients abstürzen, ein Netzwerkausfall usw.), aber wahrscheinlich nicht, wenn Ihre WX-Clients nur ohne weitere Maßnahmen oder mithilfe einer anonymen Sitzung eine Verbindung zum Server herstellen (wasnobody.nogroup
darauf hindeutet) ).12345 someuser somegroup...
auf einem Eintrag 80012345 nobody nogroup ...
Einträge, aber nur eine Handvoll Dateisperren (nicht 800). Sehr merkwürdig. Betrifft jetzt 3 meiner Kundenstandorte.Sie können Oplocks pro Aktie folgendermaßen deaktivieren:
Der Standard-Oplock-Typ ist Level1. Level2-Oplocks werden pro Aktie in der Datei smb.conf aktiviert. Alternativ können Sie Oplocks pro Datei innerhalb der Freigabe deaktivieren:
Wenn Sie Probleme mit Oplocks haben, wie aus Sambas Protokolleinträgen hervorgeht, sollten Sie auf Nummer sicher gehen und Oplocks und Level2-Oplocks deaktivieren.
Deaktivieren von Kernel-Oplocks Kernel-Oplocks ist ein Parameter von smb.conf, der Samba benachrichtigt (wenn der UNIX-Kernel einem Windows-Client eine Oplock-Unterbrechung senden kann), wenn ein UNIX-Prozess versucht, die zwischengespeicherte Datei zu öffnen. Dieser Parameter befasst sich mit der Freigabe von Dateien zwischen UNIX und Windows mit aktivierten Oplocks auf dem Samba-Server: Der UNIX-Prozess kann die vom Windows-Client Oplocked (zwischengespeicherte) Datei öffnen, und der smbd-Prozess sendet keine Oplock-Unterbrechung, für die die Datei verfügbar gemacht wird das Risiko der Datenkorruption. Wenn der UNIX-Kernel die Möglichkeit hat, eine Oplock-Unterbrechung zu senden, ermöglicht der Parameter Kernel-Oplocks Samba, die Oplock-Unterbrechung zu senden. Kernel-Oplocks werden pro Server in der Datei smb.conf aktiviert.
Der Standardwert ist nein.
Quelle
quelle