Após a versão do kernel 2.6.25, a única maneira de parar processos pendurados em montagens NFS inacessíveis é SIGKILL, ou seja, kill -9
.
Antes dessa versão do kernel, ela dependia das opções de montagem usadas: com opções hard,nointr
os processos não poderiam ser interrompidos e com hard,intr
seria possível interromper um processo pendente do NFS com o SIGINT .
No kernel 2.6.25, foi reconhecido que os processos sendo totalmente impossíveis de matar são geralmente altamente indesejáveis, então todo o par de opções intr/nointr
mount foi tornado não operacional e intr
foi feito o modo de operação padrão. Ao mesmo tempo, o requisito de sinal foi reforçado para SIGKILL para tornar óbvio que matar um processo em tal estado só deveria ser feito após uma consideração cuidadosa.
Inerentemente, processos somente de leitura como ls
devem sempre ser seguros para matar, mas se o processo estiver gravando algo em um arquivo localizado em um sistema de arquivos NFS, é travado no servidor NFS inacessível, e você o mata, o destino O arquivo pode estar em um estado incoerente depois e pode precisar de algumas ações de recuperação específicas do aplicativo.
Com as opções soft,timeo=<number of seconds>
, a operação falharia automaticamente com um erro após o número especificado de segundos, mas isso poderia causar problemas de integridade de dados. Por exemplo, se um programa estava acessando um arquivo baseado em NFS com um mmap(2)
habilitado para gravação e uma operação de gravação falhava, não haveria nenhuma maneira de relatar o erro de volta ao programa, nem mesmo uma maneira determinística de evitar o programa prossiga em frente, a menos que / até o programa chamar munmap(2)
ou msync(2)
. Portanto, ou os dados na memória e os dados no disco estariam fora de sincronia, ou os dados mapeados na memória teriam que se reverter silenciosamente para o estado de pré-gravação por trás do programa ... nenhum desses é uma boa opção, e é o motivo pelo qual a opção de montagem do NFS soft
geralmente não é recomendada.