卸载活动分区

卸载活动分区

是否可以卸载其文件/目录正在使用的分区?

底层文件和目录位于内存中,因此卸载分区在技术上是安全的(我猜)。

umount不允许我卸载它。

(谁在拒绝这个操作:umount 还是内核?)

答案1

您可以执行“延迟卸载”。

延迟卸载使文件系统对任何启动的新进程都不可用,但当前正在使用它的任何进程将能够继续使用它。然后,一旦当前正在使用它的进程完成,文件系统将卸载。

要做到这一点,很简单:

umount -l /mount/point

答案2

您可以尝试强制卸载。使用它时我会很谨慎,因为当文件在特定分区中使用时它可能不好。该-f选项告诉 Linux 强制执行卸载操作,否则可能会失败。执行此操作的命令是:

umount -f <partition name>

答案3

底层文件和目录位于内存中,因此卸载分区在技术上是安全的(我猜)。

相反,如果文件系统中的文件已打开,则无法卸载该分区。当进程打开文件时,进程打开的文件实际上并未加载到内存中(这会效率低下,甚至会导致完全无法处理大于可用内存的文件)。相反,当文件打开时,其内容会根据需要加载到 RAM 中,并在内核发现 RAM 的更好用途时从 RAM 中删除。

只要文件打开,该文件的内容就无法从存储它的文件系统中删除。如果您删除该文件(例如使用命令rm),这实际上是删除该文件的目录条目;但数据仍保留在磁盘上,直到文件关闭。 (您可以通过观察已用磁盘空间来观察这一点:它仅在文件关闭时下降,而在删除打开的文件时不会下降。)

同样,如果文件已打开,则无法卸载其文件系统,因为这将导致无法在需要时检索文件的内容。

Linux 提供了“延迟卸载”选项。文件系统的惰性卸载类似于调用rm文件:文件系统的附加点(挂载点)消失,但文件系统保持挂载状态,直到其上的最后一个文件关闭(就像删除文件将其分离一样)从包含它的目录但将数据保留在磁盘上)。

这一切都发生在内核中。除了解析以让您指定设备或安装点之外,该umount命令没有做太多事情。/etc/mtab

如果要列出在文件系统上打开文件的进程,请使用定影器或者拉索夫。要终止在文件系统上打开文件的所有进程,请运行fuser -k /path/to/mount/point

相关内容