![延迟卸载实际上是如何工作的?](https://linux22.com/image/777351/%E5%BB%B6%E8%BF%9F%E5%8D%B8%E8%BD%BD%E5%AE%9E%E9%99%85%E4%B8%8A%E6%98%AF%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%E7%9A%84%EF%BC%9F.png)
在最近的测试中,在删除 NFS 服务器或使用 iptables 在 PREROUTING raw 上阻止服务器的 IP 地址后,我无法卸载 NFS 挂载。
--force
没有用。运行mount
打印所有安装后显示它仍然存在。
但--lazy
确实如此。
有很多结果告诉人们这样做。并且手册页--force
特别描述了不会挂断的 NFS 服务器。
但背后的算法到底是什么--lazy
?系统如何知道设备不再忙碌?
它说它已被卸载,但我如何知道操作是否仍在后台进行?
我最不想要的是一个声称已卸载但仍在打开我看不到的连接的系统。
我该如何验证该挂载点是否真的消失了?或者了解如何验证这一点?
答案1
惰性是通过引用特定 mount_id 的计数器来管理的。
所有引用正在使用的路径的打开的文件句柄都必须关闭或完成。
当文件树从文件系统层次结构中分离出来时,计数器只能向下计数。当计数器达到 0 时,文件系统将被正确关闭并清理。
然而值得注意的是,如果你使用hard
mount 选项挂载并且正在执行读取,NFS 读取任务可能永远无法完成并且无限期延迟,因此一些延迟卸载可能永远无法完成。
答案2
延迟卸载是一种常规卸载,在后台进行。此外,它隐藏了挂载条目,这使得卸载看起来已经成功(或者Detach the filesystem from the file hierarchy
,手册页上说的那样)。实际上,卸载将在文件系统不再使用时发生。
因此,对于真正的卸载,应该使用--force
并等待......