温馨提示×

为什么linux mount繁忙

小樊
36
2026-09-29 11:16:42
栏目: 智能运维

在 Linux 中执行 mount(或 umount)时提示**“设备忙 / busy”**(如 device is busy、target is busy),本质原因是:某个进程正在访问该文件系统或其挂载点,内核不允许在仍有访问时进行挂载/卸载,以保证数据一致性。

下面按常见原因 → 排查方法 → 解决办法来说明。


一、常见原因

1. 有进程正在使用挂载点目录

例如:

  • cd 进入了挂载目录
  • 有程序在读写该目录
  • shell 当前工作目录在挂载点内

2. 有文件被打开

  • 日志文件
  • 数据库文件
  • 被删除但仍被进程占用的文件

3. 挂载点被作为其他挂载的父目录

  • 在 /mnt/usb 下又挂载了别的设备
  • 绑定挂载(bind mount)

4 NFS / 网络文件系统异常

  • NFS 客户端卡死
  • 服务端无响应

5 系统服务占用

  • Docker
  • containerd
  • kubelet
  • rsync / backup 任务

二、如何排查“谁在忙”

1️⃣ 查看谁在使用挂载点(最常用)

lsof +D /mnt/usb

或

lsof /mnt/usb

2️⃣ 查看挂载点被哪些进程占用

fuser -m /mnt/usb

杀掉占用进程:

fuser -km /mnt/usb

3️⃣ 查看当前 shell 是否在挂载点

pwd

如果在,先:

cd /

4️⃣ 查看挂载关系

mount | grep usb

或

findmnt /mnt/usb

三、常见解决方案

✅ 方案 1:退出目录 / 关闭程序

cd /

关闭相关程序(编辑器、终端、服务)


✅ 方案 2:强制卸载(谨慎)

umount -l /mnt/usb   # 懒卸载(推荐)

或

umount -f /mnt/usb   # 强制(NFS 常用)

⚠️ -f 可能导致数据不一致,不建议对本地磁盘使用


✅ 方案 3:杀掉占用进程

fuser -km /mnt/usb
umount /mnt/usb

✅ 方案 4:Docker / 容器占用

docker ps
docker stop <container>

四、为什么 mount 也会“繁忙”?

有时你不是 umount,而是 mount 报繁忙,可能原因:

  • 挂载点目录本身已被占用
  • 挂载点是一个已挂载文件系统的子目录
  • 之前挂载未完全清理(内核仍认为 busy)

可尝试:

mount --bind / /tmp/root

或重启相关服务。


五、一句话总结

Linux 提示 busy,是因为“还有东西在用”
用 lsof / fuser 找进程 → 退出或杀掉 → 再 mount / umount

如果你愿意,可以贴出完整报错命令和输出,我可以帮你精确定位。

0 踩