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에 티켓을 올려야 할 때마다.
동일한 공유에 있는 이 마운트는 삭제되지 않습니다. (제가 발견한 유일한 차이점은 user
sudoer이고 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.0
mount 명령 끝에 추가하여 시도해 보십시오 . 나는 같은 문제가 있었고 이 방법으로 문제를 해결할 수 있었습니다. 추신/참고: 내 명령은 다음과 같습니다
//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일 수 있습니다.