延迟卸载实际上是如何工作的?

延迟卸载实际上是如何工作的?

在最近的测试中,在删除 NFS 服务器或使用 iptables 在 PREROUTING raw 上阻止服务器的 IP 地址后,我无法卸载 NFS 挂载。

--force没有用。运行mount打印所有安装后显示它仍然存在。

--lazy确实如此。

有很多结果告诉人们这样做。并且手册页--force特别描述了不会挂断的 NFS 服务器。

但背后的算法到底是什么--lazy?系统如何知道设备不再忙碌?

它说它已被卸载,但我如何知道操作是否仍在后台进行?

我最不想要的是一个声称已卸载但仍在打开我看不到的连接的系统。

我该如何验证该挂载点是否真的消失了?或者了解如何验证这一点?

答案1

惰性是通过引用特定 mount_id 的计数器来管理的。

所有引用正在使用的路径的打开的文件句柄都必须关闭或完成。

当文件树从文件系统层次结构中分离出来时,计数器只能向下计数。当计数器达到 0 时,文件系统将被正确关闭并清理。

然而值得注意的是,如果你使用hardmount 选项挂载并且正在执行读取,NFS 读取任务可能永远无法完成并且无限期延迟,因此一些延迟卸载可能永远无法完成。

答案2

延迟卸载是一种常规卸载,在后台进行。此外,它隐藏了挂载条目,这使得卸载看起来已经成功(或者Detach the filesystem from the file hierarchy,手册页上说的那样)。实际上,卸载将在文件系统不再使用时发生。

因此,对于真正的卸载,应该使用--force并等待......

相关内容