A ordem das reinicializações é importante. Reiniciar o servidor após os clientes pode resultar nessa situação. O identificador antigo do NFS indica que o cliente tem um arquivo aberto, mas o servidor não reconhece mais o identificador do arquivo. Em alguns casos, o NFS limpará suas estruturas de dados após um tempo limite. Em outros casos, você precisará limpar as estruturas de dados do NFS e reiniciar o NFS posteriormente. Onde essas estruturas estão localizadas depende um pouco do sistema operacional.
Tente reiniciar o NFS primeiro no servidor e depois nos clientes. Isso pode limpar os identificadores de arquivo.
Não é recomendável reiniciar servidores NFS com arquivos abertos de outros servidores. Isso é especialmente problemático se o arquivo aberto foi excluído no servidor. O servidor pode manter o arquivo aberto até ser reinicializado, mas a reinicialização removerá o identificador de arquivo na memória do lado do servidor. Em seguida, o cliente não poderá mais abrir o arquivo.
Determinar quais montagens foram usadas no servidor é difícil e não é confiável. A showmount -a
opção pode mostrar algumas montagens ativas, mas pode não reportar todas elas. Os arquivos bloqueados são mais fáceis de identificar, mas exigem que o bloqueio seja ativado e depende do software do cliente para bloquear os arquivos.
Você pode usar lsof
nos clientes para identificar os processos que têm arquivos abertos nas montagens.
Eu uso as opções hard
e intr
mount nas minhas montagens NFS. A hard
opção faz com que o IO seja repetido indefinidamente. A intr
opção permite que os processos sejam eliminados se eles estiverem aguardando a conclusão do NFS IO.
hard, intr
é um bom conselho. No entanto, observe que o NFS duplica os tempos limite a cada tentativa. Então é melhor você definirtimeo=1
e maisretrans=5
ou menos. Note que este irá colocar forte pressão sobre o seu servidor NFS após o reinício NFS. Tente não reiniciar o serviço NFS tantas vezes;)