Eu tenho esta entrada fstab para permitir que um aplicativo Tomcat leia/grave em uma pasta compartilhada do Windows Samba:
//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
O problema é que ele continua desmontando depois de um certo período de tempo - não é uma falha do Windows, posso acessar o compartilhamento em outro lugar
$ 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
Como faço para depurar isso ou evitar que caia?
Os usuários do aplicativo Tomcat não têm direito de remontar, portanto, sempre que precisarem enviar um ticket para a TI.
Observe que esta montagem no mesmo compartilhamento não cai (a única diferença que vejo é user
um sudoer, enquanto tomcat7
o acima não é):
//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
ATUALIZAR:
A pasta /var/log/samba
está vazia – como configuro o log para o samba?
Se eu continuar listando a pasta ela não cai:
while true; do date; ls /media/docs; sleep 5; done
ATUALIZAÇÃO 2:
Aqui a mount
saída:
//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)
Responder1
Acho que isso tem algo relacionado aos patches fornecidos pelas atualizações do Windows para evitar ataques de resgate. Parece que o servidor que contém a pasta compartilhada rejeita solicitações CIFS V1. Por padrão, a montagem usa CIFS V1. experimente adicionando vers=2.0
ao final do seu comando de montagem. Eu tive o mesmo problema e desta forma consegui consertar. PS/FYI: meu comando é o seguinte
//192.168.1.10/public/mount /media/windowsshare cifs credentials=/home/MY_USERNAME/.smbcredentials,iocharset=utf8,sec=ntlm,vers=2.0 0 0
Responder2
Pela saída de montagem adicionada à sua pergunta, podemos ver que você ainda está usando o CIFS 1.0.
Aconselho montar a montagem como CIFS 2.1 se os servidores suportarem, já que a partir do CIFS v2.0 ou 2.1 o protocolo suporta uma melhor recuperação de suspensão/cortes de conexão. Para fazer isso a opção é vers=2.1
.
Alças duráveis (2.02, 2.1) – permitem que a conexão se reconecte de forma transparente ao servidor se houver uma desconexão temporária
Também aconselho adicionar a opção echo_interval=60
em vez de adicionar um loop while, pois dessa forma o código do cliente SMB envia um beacon de manutenção de atividade a cada minuto para o servidor.
Cuidado, como avisei e corrigi na resposta do @Thillina, as opções estão todas no 3º campo separadas por vírgula.
Para mais detalhes, consulteCIFS perdendo aleatoriamente a conexão com o compartilhamento do Windows
Lendo os artigos que estou citando em minha postagem:
3.0 – O protocolo SMBv3.0 introduzido no Microsoft Windows 8 e no Windows Server 2012.
Então você tem o Windows server 2012 significa que pelo menos o lado do Windows suporta CIFSv3.0 e inferior.
Para verificar se foi renegociado e com qual versão, altere as opções do seu fstab
arquivo e faça:
#mount -o remount /media/docs
e depois execute um mount
comando para verificar com qual versão a montagem foi feita/negociada.
Responder3
Acabei com um cron job que a cada 3 minutos toca um arquivo em cada cifs
compartilhamento mount
para manter a conexão ativa.
Até agora as ações voltaram à disponibilidade normal:
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
Créditos: Tirei a ideia deesta postagem do blog.
Responder4
No meu caso, eu tinha outras interfaces de rede que estavam desconectadas. As expirações de concessão de DHCP nessas interfaces fizeram com que as montagens caíssem de acordo comhttp://ubuntuforums.org/showthread.php?t=1140094O Samba recarrega.
Para mim, desabilitei essas interfaces. Outra solução possível poderia ser autofs com tempo limite 0.