Os arquivos abertos podem ser desvinculados dos volumes montados pelo NFS enquanto os aplicativos ainda os abrem para leitura / gravação?

7

O NFS permite que eu desvincule / exclua arquivos abertos, como posso fazer com sistemas de arquivos locais?

O motivo pelo qual eu pergunto é que estou desenvolvendo algo que é executado em vários servidores e pode acessar o NFS como um back-end. Ele simplifica um pouco as coisas se eu puder fazer um link em um arquivo que está aberto.

Este é um bom recurso dos sistemas de arquivos linux (unix?) que você pode desvincular de um arquivo que está 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 é válida para arquivos abertos em montagens NFS?

    
por Matt 09.05.2011 / 07:12

1 resposta

8

A resposta curta é sim com ressalvas.

Como o NFSv3 é sem estado, o driver cliente NFS faz isso com algo chamado "renomear bobo", em que o arquivo excluído é renomeado para algo como .nfsXXXXXXXXXX. Isso geralmente funciona, mas existem algumas advertências em comparação com um sistema de arquivos local. Por exemplo, se o cliente falhar, os arquivos .nfsXXXX não serão excluídos e você terá que limpá-los manualmente.

Acho que a partir do NFSv4.1 o protocolo tem os recursos necessários para implementar delete-on-last-close sem renomear bobo, mas não sei se algum cliente / servidor ainda implementa isso.

    
por 09.05.2011 / 07:39

Tags