I file aperti possono essere scollegati su volumi montati su NFS mentre le applicazioni che li hanno ancora aperti leggono / scrivono?


9

NFS mi consente di scollegare / eliminare i file aperti come posso fare con i file system locali?

Il motivo per cui lo chiedo è che sto sviluppando qualcosa che funziona su più server e può accedere a NFS come back-end. Semplifica un po 'le cose se posso fare un unlink su un file che è aperto.

Questa è una bella caratteristica del filesystem linux (unix?) Che puoi scollegare un file aperto. Rimuove semplicemente la voce della directory. Il file è ancora disponibile per un processo che lo tiene aperto finché è aperto. Una volta chiuso l'inode viene distrutto.

La stessa funzionalità è valida per i file aperti su montaggi NFS?


Potresti voler riformulare (per evitare voti bassi), a prima vista sembra che ti stia chiedendo se puoi eliminare i file usando NFS, il che mi ha lasciato piuttosto perplesso sul motivo per cui dovresti porre una domanda così basilare con il numero di punti che avere. :-)
Red Tux,

Risposte:


9

La risposta breve è con avvertenze.

Poiché NFSv3 è senza stato, il driver client NFS esegue ciò con qualcosa chiamato "ridenominazione stupida", in cui il file eliminato viene rinominato in qualcosa come .nfsXXXXXXXXXX. Questo generalmente funziona, ma ci sono alcuni avvertimenti rispetto a un filesystem locale. Ad esempio, se il client si arresta in modo anomalo, i file .nfsXXXX non verranno eliminati e dovrai pulirli manualmente.

Penso che a partire da NFSv4.1 il protocollo abbia le funzionalità richieste per implementare il metodo di eliminazione all'ultima chiusura senza una ridicola ridenominazione, ma non so se qualche client / server lo abbia ancora implementato.


Va notato che questo funziona solo quando il file viene aperto sullo stesso client che lo scollega, poiché NFS è senza stato.
Quentin Casasnovas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.