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

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

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

我之所以问这个问题,是因为我正在开发一个可以在多台服务器上运行并可能以后端方式访问 NFS 的东西。如果我可以对打开的文件执行取消链接,事情就会变得简单一些。

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

对于在 NFS 挂载上打开的文件是否具有相同的功能?

答案1

简短的回答是是的但有警告。

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

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

相关内容