插件窝 干货文章 umount卸载磁盘提示target is busy

umount卸载磁盘提示target is busy

磁盘 卸载 挂载 进程 449    来源:    2025-05-11

当使用 umount 命令卸载磁盘时遇到 "target is busy" 错误,通常表示有进程正在占用该磁盘或其中的文件。以下是系统化的解决方案:


1. 查找占用进程

使用 lsoffuser 命令定位正在访问磁盘的进程:

sudo lsof +f -- /mount/point   # 替换为你的挂载点
# 或
sudo fuser -vm /mount/point

输出会显示进程ID(PID)和命令名称。


2. 终止占用进程

根据上一步的PID,手动终止进程:

sudo kill -9 <PID>   # 强制终止单个进程

或批量终止所有占用进程:

sudo fuser -km /mount/point   # 发送SIGKILL信号

3. 延迟卸载(Lazy Unmount)

如果无法立即终止进程,强制内核延迟卸载(当磁盘不再繁忙时自动卸载):

sudo umount -l /mount/point

注意:此操作后程序仍可能访问已卸载的文件,可能导致数据损坏,慎用。


4. 检查挂载状态

确认卸载是否成功:

mount | grep /mount/point   # 检查是否仍在挂载列表中
df -h                       # 查看磁盘挂载状态

5. 常见占用场景

  • 终端会话:用户当前位于挂载点目录内。退出目录再卸载: bash cd / # 切换到根目录 umount /mount/point
  • 打开的文件:编辑器、日志文件等被进程占用。
  • 服务/容器:NFS、Docker容器等可能隐式占用。

6. 高级排查

若问题持续,检查系统服务或内核模块:

sudo systemctl list-units --type=mount   # 检查系统挂载单元
sudo lsmod | grep fuse                  # 检查FUSE相关模块

预防措施

  • 卸载前关闭所有可能访问磁盘的程序。
  • 使用 sync 命令确保数据写入磁盘: bash sync && sudo umount /mount/point

通过以上步骤,可精准定位并解决磁盘占用问题。如仍失败,需考虑重启系统或检查磁盘错误(fsck)。