卸载磁盘时报错:'Umount Target is Busy'

系统 Linux
我们介绍的三种方法中,我更倾向于使用第一种方法,即直接杀掉占用磁盘的进程。当然大家可以根据各自实际情况选择合适的方法。

在 Linux 命令行中卸载磁盘并不复杂,只需要执行 umount 命令即可:

umount target

但有时候可能会遇到报错信息,比如:umount: target is busy

图片

那么该怎样解决这个问题呢?

在介绍如何解决问题之前,我们先来了解一下产生这个问题的原因。

Umount target is busy 错误产生的原因

原因很简单,要卸载的目标设备还仍在使用中。

如果有足够的权限,任何进程都可能正在使用你即将要卸载的驱动器。为了防止数据丢失,所以系统内核不允许你将其卸载。

那么怎么解决这个问题呢?

提示:如果后台正在进行数据传输,可能会因为强制卸载驱动器而造成数据丢失。

基于某种原因,有时候我们需要强制卸载驱动器。比如因某种原因造成的驱动器没有相应。强制卸载驱动器有多种方法,比如:

  • 杀掉进程;
  • 使用强制卸载(force unmount)
  • 使用延迟卸载(lazy unmount)

我们先来看看第一种方法。

方法1:通过杀掉进程来强制卸载驱动器

这应该是强制卸载磁盘驱动器的最佳方式,因为不管怎样,你都会杀掉这个进程。

首先第一步是要找到造成该问题的进程的 PID。可以使用 lsof 命令,如下所示:

sudo lsof /Path/to/target

图片

找到 pid 后,要终止这个进程就很简单了:

sudo kill -9 [PID]

终止进程后,再次执行磁盘驱动器 umount 命令就可以了:

图片

方法2:强制卸载(适用于网络文件系统 Network file systems)

当处理网路文件系统的时候,强制卸载是遇到 'umount: target is busy' 问题时首选的方法。但是对于本地文件系统,其结果可能会不一样。

强制卸载磁盘,可以使用 umount 命令的 -f 选项,如下所示:

sudo umount -f /Path/to/target

图片

方法3:使用延迟卸载(lazy unmount)

该方法不会立刻卸载目标,而只是将其从命名空间中删除掉。当目标驱动器不被使用的时候,再将其卸载掉。使用这个方法,你可能无法确定目标是否已经被卸载掉,这就像薛定谔的卸载。我们之所以介绍这种方法,是因为它是最柔和(无害)的一种方法。

使用延迟卸载,可以在 umount 命令中添加 -l 选项,如下所示:

sudo umount -l /Path/to/target

图片

上述我们介绍的三种方法中,我更倾向于使用第一种方法,即直接杀掉占用磁盘的进程。当然大家可以根据各自实际情况选择合适的方法。

责任编辑:庞桂玉 来源: TIAP
相关推荐

2009-06-17 14:23:01

开启Eclipse时报Windows XP

2011-08-23 17:18:44

umount中文man

2011-08-16 09:03:18

umount中文man

2020-12-30 08:35:59

Linux运维Linux系统

2010-04-23 14:20:15

Aix操作系统

2010-01-27 15:43:06

Android tar

2010-02-04 10:11:05

Linux mount

2014-07-28 09:22:46

Linux运维磁盘

2014-03-18 10:08:35

2014-09-10 11:32:48

2012-07-26 09:49:44

创业程序员

2009-08-10 08:51:11

双系统卸载Windows 7

2013-08-01 09:10:29

2017-03-27 15:10:16

软件卸载智能卸载

2011-07-19 15:44:18

Xcode 卸载

2023-11-27 09:40:58

Arch Linux

2014-04-02 09:21:52

2011-08-23 16:41:48

smbumount中文man

2011-01-18 10:25:19

Linux磁盘分区

2009-03-31 09:15:42

点赞
收藏

51CTO技术栈公众号