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
비어 있습니다. 삼바 로깅을 설정하는 방법은 무엇입니까?
폴더를 계속 나열하면 삭제되지 않습니다.
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 Update에서 제공하는 패치와 관련이 있다고 추측합니다. 이로 인해 공유 폴더를 보유하는 서버가 CIFS V1 요청을 거부하게 됩니다. 기본적으로 마운트에는 CIFS V1이 사용됩니다. vers=2.0
설치 명령 끝에 추가하여 시도해 보세요. 나는 같은 문제에 직면했고 이 방법으로 문제를 해결할 수 있었습니다. 추신/참고: 내 명령은 다음과 같습니다
//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입니다.