在 Linux 中延迟卸载或卸载繁忙的磁盘

在 Linux 中延迟卸载或卸载繁忙的磁盘

我读到过,可以使用“lazy”选项“卸载”原本繁忙的磁盘。手册页对此有如下说明:

umount—卸载文件系统

-l 延迟卸载。立即将文件系统从文件系统层次结构中分离出来,并在文件系统不再繁忙时立即清除对文件系统的所有引用。此选项允许卸载“繁忙”的文件系统。(需要内核 2.4.11 或更高版本。)

但这有什么意义呢?我考虑了一下为什么要卸载分区:

  1. 删除硬件
  2. 在文件系统上执行挂载时不安全的操作

在任何一种情况下,在我看来,“懒惰”卸载所做的一切就是让确定磁盘是否真的被卸载变得更加困难,并且您实际上可以继续执行这些操作。唯一的应用似乎umount -l是让没有经验的用户“感觉”他们已经完成了他们没有完成的事情。

为什么要使用延迟卸载?

答案1

假设您确实需要更改软件正在写入日志的卷,例如 Web 服务器,但其流量很大,无法关闭该操作,也无法更改日志记录路径。

使用延迟卸载,您可以在软件仍在运行时安全地卸载卷,将另一个卷安装到同一安装点并命令软件重新打开文件。

理想情况下,由于您不需要关闭软件,因此不会丢失任何请求,并且基本上也不会丢失任何日志条目,因为它们仍被写入旧的挂载,直到文件重新打开(软件如何处理重新打开文件取决于软件)。

解释手册页,这意味着如果卷在延迟卸载时有打开的文件,实际上它仍然处于挂载状态,但无法通过文件系统访问,并且只有在关闭最后一个打开的文件时才会真正卸载。

答案2

因为您很懒——您想在磁盘操作完成后卸载。

这是一个可能的情况:

您使用rsync它来执行备份,然后就可以离开了。您可以使用umount -l驱动器,一旦完成复制和同步,它就会卸载,这样当您休息一段时间后回来时(您知道这会比备份花费更长的时间),您可以拔下驱动器,而不必再次摆弄键盘。

答案3

这样做其实是为了在行政任务上获得更多的时间来完成后续工作。

如果与此任务无关的进一步任务正在管道中等待,那么您可以延迟卸载并继续批处理中的其他任务。

例子:任务 1 和任务 2 是两个连续安排的管理任务。

任务1每日备份

它将大量文件从项目分区复制到备份分区,例如 /mnt/backupProj,该分区将在运行中挂载,并在任务结束时卸载。复制过程需要花费大量时间。

任务 2更新 SQL 视图

在专用服务器上执行一系列数据库视图更新。

任务 2 显然完全独立于任务 1,因此我们可以延迟卸载 /mnt/backupProj,而无需等待备份任务完成。

答案4

考虑使用绑定挂载,正如您在使用时可能会看到的那样chroot

mount --rbind /proc /mnt/proc
# do stuff
umount /mnt/proc

如果你的系统上有一个守护进程不断询问/proc(我正在看着你ksysguardd),那么你将无法。在这种情况下,umount /mnt/procLazy 会让你。umount

相关内容