cifs 마운트 폴더의 연결이 계속 끊어집니다(우분투 서버)

cifs 마운트 폴더의 연결이 계속 끊어집니다(우분투 서버)

Tomcat 앱이 Windows Samba 공유 폴더에서 읽기/쓰기를 허용하는 fstab 항목이 있습니다.

//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

문제는 일정 시간이 지난 후에도 계속 마운트 해제된다는 것입니다. Windows 오류가 아니라 다른 곳에서 공유에 액세스할 수 있습니다.

$ 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

이를 디버깅하거나 삭제를 방지하려면 어떻게 해야 합니까?

Tomcat 앱 사용자는 다시 마운트할 권한이 없으므로 IT에 티켓을 올려야 할 때마다.

동일한 공유에 있는 이 마운트는 삭제되지 않습니다. (제가 발견한 유일한 차이점은 usersudoer이고 tomcat7위는 그렇지 않다는 것입니다.)

//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

업데이트:

폴더가 /var/log/samba비어 있습니다. Samba에 대한 로깅을 어떻게 설정합니까?

폴더를 계속 나열하면 폴더가 삭제되지 않습니다.

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

업데이트 2:

출력 은 다음과 같습니다 mount.

//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)

답변1

랜섬웨어 공격을 방지하기 위해 Windows 업데이트에서 제공하는 패치와 관련이 있는 것 같습니다. 공유 폴더를 보유하고 있는 서버는 CIFS V1 요청을 거부합니다. 기본적으로 마운트는 CIFS V1을 사용합니다. vers=2.0mount 명령 끝에 추가하여 시도해 보십시오 . 나는 같은 문제가 있었고 이 방법으로 문제를 해결할 수 있었습니다. 추신/참고: 내 명령은 다음과 같습니다

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

답변2

질문에 추가된 마운트 출력을 보면 여전히 CIFS 1.0을 사용하고 있음을 알 수 있습니다.

서버가 지원하는 경우 CIFS 2.1로 마운트하는 것이 좋습니다. CIFS v2.0 또는 2.1에서는 프로토콜이 연결 절전/절단에서 더 나은 복구를 지원하기 때문입니다. 그렇게 하기 위한 옵션은 입니다 vers=2.1.

내구성 있는 핸들(2.02, 2.1) – 일시적으로 연결이 끊어진 경우 서버에 투명하게 다시 연결할 수 있도록 허용

또한 while 루프를 추가하는 대신 옵션을 추가하는 것이 좋습니다 echo_interval=60. 이렇게 하면 SMB 클라이언트 코드가 매분 서버에 연결 유지 비콘을 보냅니다.

@Thillina 답변에서 경고하고 수정했듯이 옵션은 모두 쉼표로 구분된 세 번째 필드에 있습니다.

자세한 내용은 다음을 참조하세요.CIFS가 Windows 공유에 대한 연결이 임의로 끊어짐

내 게시물에서 인용한 기사를 읽으면 다음과 같습니다.

3.0 - Microsoft Windows 8 및 Windows Server 2012에 도입된 SMBv3.0 프로토콜입니다.

따라서 Windows Server 2012를 사용한다는 것은 적어도 Windows 측에서 CIFSv3.0 이하를 지원한다는 의미입니다.

재협상되었는지, 어떤 버전인지 확인하려면 fstab파일의 옵션을 변경하고 다음을 수행하세요.

#mount -o remount /media/docs

그런 다음 mount명령을 실행하여 마운트가 완료/협상된 버전을 확인합니다.

답변3

나는 연결을 유지하기 위해 3분마다 각 cifs공유 의 파일을 터치하는 크론 작업을 수행했습니다 .mount

지금까지 공유는 정상 가용성으로 돌아왔습니다.

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

크레딧 : 나는 아이디어를 얻었습니다이 블로그 게시물.

답변4

제 경우에는 연결이 끊어진 다른 네트워크 인터페이스가 있었습니다. 해당 인터페이스의 DHCP 임대 만료로 인해 마운트가 삭제되었습니다.http://ubuntuforums.org/showthread.php?t=1140094삼바가 다시 로드됩니다.

나에게는 해당 인터페이스를 비활성화했습니다. 또 다른 가능한 해결책은 시간 초과가 0인 autofs일 수 있습니다.

관련 정보