Linux: montagem CIFS / Samba trava por vários minutos

23

Eu tenho uma pequena rede local que tem uma caixa do Gentoo e uma caixa do Windows. Eu montei um compartilhamento originado na caixa do Windows na caixa do Gentoo com um comando como:

mount -t cifs -o username=WindowsUsername,password=thepassword,uid=pistos //192.168.0.103/Users /mnt/windowsbox

Na maioria das vezes, tudo simplesmente funciona e eu posso ler e escrever sem problemas. No entanto, a cada duas semanas, a conexão ou o ponto de montagem parece estar inativo ou travar, de forma que qualquer processo que tente acessar o ponto de montagem fique preso no estado D (disco ou espera de E / S). Esses processos tornam-se impermeáveis aos sinais TERM e KILL. Desconectar e reconectar a caixa do Windows da rede não ajuda. O estado congelado dura 5+ minutos. É realmente frustrante e atrapalha o trabalho normal, porque congela os diálogos Salvar como, ls , etc. Se eu emitir um umount no ponto de montagem, ele também trava ou relata que o ponto de montagem é em uso. Eventualmente, o estado morto se resolve e o ponto de montagem é desmontado, ou torna-se possível umount sem atraso.

Meu palpite é que isso acontece quando a conexão / montagem ficou inativa ou quando a máquina Windows ficou inativa. Eu não tenho tanta certeza.

Por que isso está acontecendo e o que posso fazer para evitar isso? Ou como posso matar com sucesso esses processos do estado D à vontade?

Possivelmente relacionado: as montagens do CIFS aguardam a leitura

    
por Pistos 18.08.2014 / 18:52

4 respostas

9

Não sei por que o problema está acontecendo, mas como solução alternativa, você tentou colocar algo como touch /mnt/windowsbox/keepalive.txt ou echo "I am still alive." >/mnt/windowsbox/keepalive.txt para ser executado via cron a cada minuto? Dessa forma, a conexão deve permanecer ativa.

    
por 25.08.2014 / 07:32
4

Eu também encontro isso a cada poucos meses. sudo umount -l é minha solução alternativa. link

    
por 21.08.2015 / 22:38
1

Se você está com problemas de rede e a caixa do Windows é executada por sete ou mais, leia

Temporizador de Recuperação Aberto Resiliente [MS-SMB2] (padrão 300 segundos)

link

mais informações sobre tempos limite de cifs

link

Se o problema tiver um comportamento de recuperação automática, procure tempos limite ...

    
por 21.08.2014 / 16:49
0

Outra possível resposta sugeriu escrever em um arquivo no mount em um intervalo regular via cron. Em vez disso, sugiro usar o programa smbclient para se conectar ao compartilhamento e desconectar.

Eu escrevi um script bash como este para realizar isso:

#!/bin/bash

su usernamehere -c "smbclient \\\\\\\\servernamehere\\\\sharenamehere passwordhere -c exit" >/dev/null 2>&1

Esse comando faz uma nova conexão com o compartilhamento e, em seguida, executa o comando exit, encerrando imediatamente a conexão que acaba de estabelecer na linha de comando. Deve haver 8 barras antes do nome do servidor e 4 antes do nome do compartilhamento, pois as barras invertidas precisam ser escapadas e as fugas precisam ser escapadas quando estiverem dentro de uma cadeia entre aspas duplas. Talvez exista uma maneira mais inteligente de fazer isso, mas isso parece funcionar.

Talvez haja uma maneira de tornar isso ainda mais confiável, mantendo a conexão aberta por vários minutos de cada vez, mas isso é um pouco fora do meu alcance.

    
por 05.06.2015 / 20:00