Impedindo que a conexão NFS interrompida congele o sistema do cliente

21

Temos um compartilhamento NFS 4, compartilhando um volume entre vários servidores (servidor NFS e clientes, todos Debian 8). Recentemente, tivemos alguns problemas nos quais as interrupções na rede congelavam os sistemas do cliente.

Opções Nossa NFS eram mínimas, apenas rw(e assim os padrões hard, fgetc).

Agora estou experimentando essas opções, mas não estou obtendo o comportamento que espero: rw,soft,bg,retrans=6,timeo=150

(Aumentei os retrans para compensar parte do risco brando)

O procedimento que estou seguindo para testar é:

  • Máquina de inicialização
  • cd para /mnt/mountpoint
  • Verifique a conexão NFS ok
  • cd /
  • matar rede ifdown eth0
  • cd para /mnt/mountpoint
  • ls

Nesse ponto, a linha de comando congela e não posso interrompê-la. Depois de algum tempo, a mensagem 'nfs: server [servername] não está respondendo, expirou`, o que parece se repetir uma vez por minuto (indefinidamente).

O que eu gostaria / esperava que acontecesse para a operação falhar e retornasse o controle.

Por favor, alguém poderia me dizer onde estou errado com essas configurações?

(PS: Eu também tentei montar com autofs, mas vi um comportamento semelhante)

Obrigado

Até o riacho
fonte
3
Eu não recomendaria softsob nenhuma circunstância. Permite que os dados sejam descartados por erro . Em vez disso, eu sugiro hard,intr.
roaima 02/03
2
@roaima - Obrigado. Essa opinião parece ser muito prevalecente na web :) O problema é que a situação atual hardé tão ruim para nós (sistemas morrendo e permanecendo mortos até a reinicialização). intrnão é suportado no NFS4, de acordo com o homem.
UpTheCreek
2
(Correção, parece intrque é suportado pelo NFS4, mas não pelo kernels> 2.6.25)
UpTheCreek
Eu acho que o que difere das respostas 'padrão' é que você está alterando o diretório de trabalho atual para o ponto de montagem. Você tem o mesmo comportamento sem o cd, mas em vez disso ls /mnt/mountpoint? É possível que, após a lsfalha, seu shell esteja tentando operações do sistema de arquivos dependentes do PWD. (Pior ainda, se você fosse tolo o suficiente para colocar .em sua $PATH)
Toby Speight

Respostas:

4

intrdeve permitir o controle novamente quando você bate ^C, mas geralmente não imediatamente.

   intr           If an NFS file operation has a major timeout and it is hard mounted, then allow signals to interupt the
                  file  operation  and cause it to return EINTR to the calling program.  The default is to not allow file
                  operations to be interrupted.

Como você diz, as expectativas são o problema aqui. Os problemas de rede podem ser temporários, mas a falha em uma operação é permanente. Portanto, a maioria das operações assume como padrão o bloqueio simples até que a operação seja concluída.

Esta é a resposta padrão, mas, olhando para uma página de manual atual, vejo isso:

                  The  intr / nointr mount option is deprecated after ker-
                  nel 2.6.25.  Only SIGKILL can interrupt  a  pending  NFS
                  operation on these kernels, and if specified, this mount
                  option is ignored  to  provide  backwards  compatibility
                  with older kernels.

Portanto, não me parece ser um problema do NFS3 / NFS4, mas uma decisão sobre como intrfunciona. Portanto, você deve poder acompanhar KILLo processo, mas isso pode não lhe dar muita utilidade.

Não consegui encontrar a discussão sobre por que a opção foi removida. Você pode matar -KILL seu processo?

BowlOfRed
fonte
Obrigado, mas de acordo com o homem intré suportado pelo NFS 2/3, mas não 4.
UpTheCreek
@UpTheCreek, não entendo por que isso seria. Eu não tenho um sistema debian aqui, mas é mencionado explicitamente como disponível. Tentaste? "intr Isso permitirá que as operações NFS4 (em montagens rígidas) sejam interrompidas enquanto aguarda uma resposta do servidor."
precisa saber é o seguinte
2
Sim, eu tentei e não parecia ter nenhum efeito. O homem diz que é ignorado nas versões recentes do kernel.
UpTheCreek
Não é possível MATAR um processo porque todo o sistema congela. Nenhum comando pode ser emitido na minha experiência. (Embora possa ser possível SSH em uma máquina de tais congelado em alguns casos.)
MountainX para Monica Cellio
3

Parte da minha resposta é opinião, baseada na experiência. Onde eu tiver fatos, tentarei (lembre-se de) vincular a eles.

  1. O NFS 4 é considerado uma melhoria em relação às versões 2 e 3. No entanto, ainda não vi um forte caso de uso por precisar das melhorias. Talvez seja porque eu pretendo exportar sistemas de arquivos para clientes Windows com Samba e para clientes Unix / Linux com NFS.
  2. Eu não recomendaria softem quase nenhuma circunstância. Permite que os dados sejam descartados por erro . Em vez disso, eu sugiro hard,intr.
  3. Como você ressalta, intrnão é válido para o NFS 4, mas parece que essa é uma alteração do kernel em vez de uma alteração no NFS.
  4. O NFS Automounter ( autofs) funciona bem para meus casos de uso com as versões 2 e 3 do NFS e consegue ajudar a proteger meus sistemas clientes de falhas do servidor montando os sistemas de arquivos NFS apenas quando necessário.

Minha sugestão para você seria considerar a mudança do NFS 4 para o NFS 3 e ver se isso ajuda no seu caso de uso específico. Não pense nisso como um downgrade.

roaima
fonte
1
Obrigado, mas não consigo mudar para o NFS3, e mesmo se, como você diz, intrnão for suportado nas versões recentes do kernel.
UpTheCreek
2
Ah, sim, parece que intr é suportado no NFS4 (ele está listado nas opções somente 2/3 e 4 únicas no man, o que é um pouco confuso), mas não é suportado nas versões recentes do kernel.
UpTheCreek
1
"Eu não recomendaria soft em nenhuma circunstância" - sério? No meu caso, eu tenho um servidor web ocupado que monta um diretório de imagens. Se o host de imagens ficar inativo e o usarmos hard, o site inteiro ficará inoperante. Se usarmos soft, podemos obter algumas imagens corrompidas (embora nosso sistema de cache mitigue isso quase completamente). O risco de softpermitir a corrupção de arquivos realmente não é grande coisa. Prefiro ter um arquivo de imagem corrompido do que um site desativado!
Doug McLean
1
O @DougMcLean também passou por uma situação semelhante (web farm ocupado, servidores de imagem, NFS ...). Diria que é um caso um pouco especializado. Se meus servidores de imagem fossem tão pouco confiáveis, suspeito que poderia ter me escolhido softcomo uma solução aceitável. Resposta modificada de "nunca" para "quase nunca". Obrigado!
roaima
1
Se minha memória estiver correta, esse problema de congelamento do sistema também estava presente no NFS v3.
MountainX para Monica Cellio