Die Verbindung zum gemounteten CIFS-Ordner wird ständig getrennt (Ubuntu-Server)

Die Verbindung zum gemounteten CIFS-Ordner wird ständig getrennt (Ubuntu-Server)

Ich habe diesen fstab-Eintrag, um einer Tomcat-App das Lesen/Schreiben in einem freigegebenen Windows Samba-Ordner zu ermöglichen:

//dc/docs    /media/docs      cifs       credentials=...,rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm,uid=tomcat7,gid=tomcat7,dir_mode=0770,file_mode=0770 0 0

Das Problem ist, dass es nach einer bestimmten Zeit immer wieder ausgehängt wird - kein Windows-Fehler, ich kann von woanders auf die Freigabe zugreifen

$ sudo ls /media/docs
finance  postsale  repository

#after e.g. 10 minutes...
$ sudo ls /media/docs
[sudo] password for user:
ls: cannot access '/media/docs': Connection reset by peer

#this takes ages to complete
$ sudo umount /media/docs

#this fails immediately after, succedes after about 5/10 seconds
$ sudo mount /media/docs
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
$ sudo mount /media/docs
mount error(104): Connection reset by peer
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
$ sudo mount /media/docs
$ sudo ls /media/docs
finance  postsale  repository

Wie kann ich das debuggen oder ein Löschen verhindern?

Benutzer der Tomcat-App haben keine Berechtigung zum erneuten Mounten und müssen daher jedes Mal ein Ticket an die IT senden.

Bitte beachten Sie, dass diese Einbindung auf derselben Freigabe nicht gelöscht wird (der einzige Unterschied, den ich sehe, ist, dass es sich um usereinen Sudoer handelt, während tomcat7dies oben nicht der Fall ist):

//dc/share       /media/share     cifs       credentials=....credentials,rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm,uid=user,gid=user,dir_mode=0770,file_mode=0770 0 0

AKTUALISIEREN:

Ordner /var/log/sambaist leer – wie stelle ich die Protokollierung für Samba ein?

Wenn ich den Ordner weiter aufliste, wird Folgendes nicht gelöscht:

while true; do date; ls /media/docs; sleep 5; done

UPDATE 2:

Hier die mountAusgabe:

//fs-mxp/ZZZshare on /media/share type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1000,forceuid,gid=1000,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ftp on /media/ftp type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1000,forceuid,gid=1000,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//sql-mxp/C$ on /media/sql type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=administrator,domain=YYY-it,uid=1000,forceuid,gid=1000,forcegid,addr=10.39.52.11,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ZZZdocs on /media/docs type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=YYYdoc,domain=YYY-it,uid=113,forceuid,gid=123,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ZZZshare/ASTE on /home/esales/aste type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1001,forceuid,gid=1002,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ftp/YYYvendor on /home/esales/YYYvendor type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1001,forceuid,gid=1002,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)

Antwort1

Ich vermute, dass dies etwas mit Patches zu tun hat, die von Windows-Updates bereitgestellt werden, um Ransomware-Angriffe zu verhindern. Es scheint, dass der Server, auf dem sich der freigegebene Ordner befindet, CIFS V1-Anfragen ablehnt. Standardmäßig verwendet Mount CIFS V1. Probieren Sie es aus, indem Sie vers=2.0am Ende Ihres Mount-Befehls hinzufügen. Ich hatte das gleiche Problem und konnte es auf diese Weise beheben. PS / FYI: Mein Befehl sieht wie folgt aus

//192.168.1.10/public/mount /media/windowsshare cifs credentials=/home/MY_USERNAME/.smbcredentials,iocharset=utf8,sec=ntlm,vers=2.0 0 0

Antwort2

Aus der Mount-Ausgabe, die Sie Ihrer Frage hinzugefügt haben, können wir ersehen, dass Sie immer noch CIFS 1.0 verwenden.

Ich würde empfehlen, die Halterung als CIFS 2.1 zu montieren, wenn die Server dies unterstützen, da das Protokoll ab CIFS v2.0 oder 2.1 eine bessere Wiederherstellung nach Verbindungsruhe/-unterbrechungen unterstützt. Die Option hierfür ist vers=2.1.

Dauerhafte Handles (2.02, 2.1) – ermöglichen eine transparente Wiederherstellung der Verbindung zum Server, wenn eine vorübergehende Unterbrechung vorliegt

Ich empfehle außerdem, die Option anstelle einer While-Schleife hinzuzufügen echo_interval=60, da der SMB-Clientcode auf diese Weise jede Minute ein Keepalive-Beacon an den Server sendet.

Beachten Sie, dass, wie ich in der Antwort von @Thillina gewarnt und korrigiert habe, alle Optionen im 3. Feld stehen und durch ein Komma getrennt sind.

Weitere Einzelheiten finden Sie unterCIFS verliert zufällig die Verbindung zur Windows-Freigabe

Lesen Sie die Artikel, die ich in meinem Beitrag zitiere:

3.0 – Das SMBv3.0-Protokoll, das in Microsoft Windows 8 und Windows Server 2012 eingeführt wurde.

Wenn Sie also Windows Server 2012 haben, bedeutet das, dass zumindest die Windows-Seite CIFSv3.0 und niedriger unterstützt.

Um zu überprüfen, ob und mit welcher Version es neu ausgehandelt wurde, ändern Sie die Optionen in Ihrer fstabDatei und führen Sie Folgendes aus:

#mount -o remount /media/docs

und führen Sie dann einen mountBefehl aus, um zu überprüfen, mit welcher Version die Bereitstellung durchgeführt/ausgehandelt wurde.

Antwort3

Ich bin schließlich bei einem Cron-Job gelandet, der alle 3 Minuten eine Datei auf jeder cifsFreigabe berührt mount, um die Verbindung aufrechtzuerhalten.

Bisher sind die Aktien wieder im normalen Verfügbarkeitszustand:

cifs_keepalive:

#!/bin/bash

while read spot; do
   touch --no-create "${spot}/.cifs_keepalive"
done <<< "$(mount | awk '/cifs/{ print $3; }')"

/etc/cron.d/cifs_keepalive:

*/3 *   *   *   *   root    /home/bcait/bca_util/bin/cifs_keepalive >/dev/null 2>&1

Credits: Die Idee stammt vondieser Blog-Beitrag.

Antwort4

In meinem Fall hatte ich andere Netzwerkschnittstellen, die getrennt waren. DHCP-Lease-Abläufe auf diesen Schnittstellen führten dazu, dass die Mounts abfielen. Lauthttp://ubuntuforums.org/showthread.php?t=1140094Samba wird neu geladen.

Ich habe diese Schnittstellen deaktiviert. Eine andere mögliche Lösung wäre Autofs mit 0 Timeout.

verwandte Informationen