Os arquivos abertos podem ser desvinculados nos volumes montados pelo NFS, enquanto os aplicativos que ainda os têm abrem a leitura / gravação?


9

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?


Você pode reformular (para evitar votos negados), à primeira vista, parece que você está perguntando se pode excluir arquivos usando o NFS, o que me deixou perplexo com o motivo pelo qual você faria uma pergunta tão básica com o número de pontos que deseja. ter. :-)
Red Tux

Respostas:


9

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.


Deve-se notar que isso funciona apenas quando o arquivo é aberto no mesmo cliente que o desassocia, pois o NFS é sem estado.
Quentin Casasnovas
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.