当应用程序仍然以读/写方式打开文件时,是否可以在 NFS 挂载卷上取消链接打开的文件?

hoo*_*enz 9 nfs

NFS 是否允许我像处理本地文件系统那样取消链接/删除打开的文件?

我问的原因是我正在开发一些可以在多个服务器上运行并且可以访问 NFS 作为后端的东西。如果我可以在打开的文件上取消链接,它会在一定程度上简化事情。

这是 linux (unix?) 文件系统的一个很好的功能,您可以取消链接打开的文件。它只是删除目录条目。只要文件处于打开状态,该文件仍可用于保持打开状态的进程。一旦关闭,inode 就会被销毁。

相同的功能是否适用于在 NFS 挂载上打开的文件?

jan*_*neb 9

简短的回答是肯定的,但有警告。

由于 NFSv3 是无状态的,NFS 客户端驱动程序通过称为“傻重命名”的方法来实现这一点,其中已删除的文件被重命名为类似 .nfsXXXXXXXXXX 的内容。这通常有效,但与本地文件系统相比,有一些注意事项。例如,如果客户端崩溃,则不会删除那些 .nfsXXXX 文件,您必须手动清理它们。

我认为从 NFSv4.1 开始,该协议具有实现上次关闭时删除而无需愚蠢重命名所需的功能,但我不知道是否有任何客户端/服务器还实现了这一点。