Nfs
可以在 NFS 掛載卷上取消連結打開的文件,而仍然讓它們打開讀/寫的應用程序?
NFS 是否允許我像使用本地文件系統一樣取消連結/刪除打開的文件?
我問的原因是我正在開發可以在多台伺服器上執行並且可以作為後端訪問 NFS 的東西。如果我可以對打開的文件進行取消連結,它會稍微簡化一些事情。
這是 linux(unix?)文件系統的一個很好的功能,您可以取消連結打開的文件。它只是刪除目錄條目。只要文件處於打開狀態,該文件仍可供保持打開狀態的程序使用。一旦關閉,inode 就會被銷毀。
同樣的功能是否適用於在 NFS 掛載上打開的文件?
簡短的回答是肯定的,但需要注意。
由於 NFSv3 是無狀態的,NFS 客戶端驅動程序通過稱為“愚蠢的重命名”的方式來完成此操作,其中刪除的文件被重命名為類似 .nfsXXXXXXXXXX 的內容。這通常有效,但與本地文件系統相比有一些注意事項。例如,如果客戶端崩潰,那麼那些 .nfsXXXX 文件將不會被刪除,您必須手動清理它們。
我認為從 NFSv4.1 開始,該協議具有實現 delete-on-last-close 所需的功能而無需愚蠢的重命名,但我不知道是否有任何客戶端/伺服器實現了這一點。