O NFS me permite desvincular / excluir arquivos abertos, como posso fazer com os sistemas de arquivos locais?
O motivo pelo qual pergunto é que estou desenvolvendo algo que roda em vários servidores e pode acessar o NFS como back-end. Isso simplifica um pouco as coisas se eu puder desvincular um arquivo que está aberto.
Esse é um recurso interessante dos sistemas de arquivos linux (unix?) Que você pode desvincular de um arquivo aberto. Ele simplesmente remove a entrada do diretório. O arquivo ainda está disponível para um processo que o mantém aberto enquanto estiver aberto. Uma vez fechado, o inode é destruído.
Essa mesma funcionalidade é verdadeira para arquivos abertos em montagens NFS?
Respostas:
A resposta curta é sim com ressalvas.
Como o NFSv3 é sem estado, o driver do cliente NFS realiza isso com algo chamado "renomeação boba", onde o arquivo excluído é renomeado para algo como .nfsXXXXXXXXXX. Isso geralmente funciona, mas existem algumas ressalvas em comparação com um sistema de arquivos local. Por exemplo, se o cliente travar, esses arquivos .nfsXXXX não serão excluídos e você terá que limpá-los manualmente.
Penso que, a partir do NFSv4.1, o protocolo possui os recursos necessários para implementar a exclusão no último fechamento sem renomear bobo, mas não sei se algum cliente / servidor ainda implementa isso.
fonte