解决umount.nfs: /data: device is busy 问题

一、umount.nfs: /data: device is busy

umount某个挂载目录时会遇到如下问题:

[root@localhost /]# umount /data/
umount.nfs: /data: device is busy

查看占用的进程:

[root@localhost /]# fuser -m -v /data/
                     用户     进程号 权限   命令
/data/:              root       2798 ..c.. bash
                     root       2996 ..c.. su

-v 表示 verbose 模式。进程以 ps 的方式显示,包括 PID、USER、COMMAND、ACCESS 字段

-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。

如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。

[root@localhost /]# kill -9 2798
[root@localhost /]# kill -9 2996
[root@localhost /]# umount /data/
[root@localhost /]#

二、fuser 概述

fuser命令是用来显示所有正在使用着指定的file, file system 或者 sockets的进程信息。

[root@gc-statis2 ]# fuser -m -v tests/
                     用户     进程号 权限   命令
tests/:              root       7300 F.ce. php-fpm
                     www        7301 ..ce. php-fpm
                     www        7302 ..ce. php-fpm
                     www        7303 ..ce. php-fpm
                     www        7304 ..ce. php-fpm
                     www        7305 ..ce. php-fpm
                     www        7306 ..ce. php-fpm
                     www        7307 ..ce. php-fpm
                     www        7308 ..ce. php-fpm
                     www        7309 ..ce. php-fpm              
                     root      18891 ..c.. bash

同时fuser 可以用来查找哪些进程正在使用指定的端口(network port).

[root@gc-statis2 ]# fuser -v -n tcp 80
                     用户     进程号 权限   命令
80/tcp:              root       7975 F.... nginx
                     www        7976 F.... nginx

fuser 常用场景
fuser通常被用在诊断系统的“resource busy”问题,通常是在你希望umount指定的挂载点得时候遇到。 如果你希望kill所有正在使用某一指定的file, file system or sockets的进程的时候,你可以使用-k option。

fuser –k  /path/to/your/filename  

这时fuser会向所以正在使用/path/to/your/filename的进程发送SIGKILL。如果你希望在发送之前得到提示,可以使用-i 选项。

fuser –k –i /path/to/your/filename
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 当你尝试卸载一个文件系统时,如果该文件系统上还有进程在使用文件或目录,那么就会出现"device is busy"的错误信息。为了解决这个问题,你需要找到哪个进程在使用该文件系统,然后停止这些进程。可以使用以下命令来查找哪些进程在使用该文件系统: ``` sudo lsof /data/webapp/tools ``` 该命令会列出所有正在使用`/data/webapp/tools`的进程及其PID。然后,你可以使用`kill`命令停止这些进程。例如: ``` sudo kill -9 PID ``` 其中,`PID`是你想要停止的进程的ID。一旦没有任何进程在使用该文件系统,你就可以成功卸载它了。 ### 回答2: 当我们取消挂载NFS文件系统时,如果该文件系统当前被使用,系统会显示"umount.nfs4: /data/webapp/tools: device is busy"的错误信息。这意味着有进程或服务正在使用该文件系统,因此无法取消挂载。 为了成功取消挂载NFS文件系统,我们需要找到正在使用的进程,并停止它们。有几种方法可以实现这一点。 首先,我们可以使用"lsof"命令查找正在使用挂载点的进程。在终端中运行以下命令: lsof /data/webapp/tools 该命令会列出使用该挂载点的所有进程和服务。我们可以根据输出的信息确定哪些进程需要被停止。 其次,我们可以使用"fuser"命令来查找并结束使用挂载点的进程。在终端中运行以下命令: fuser -km /data/webapp/tools 该命令会结束使用该挂载点的所有进程。 一旦没有进程或服务在使用该文件系统,我们就可以成功取消挂载。在终端中运行以下命令: umount /data/webapp/tools 这样,我们就能够取消挂载NFS文件系统,并且不再出现"device is busy"的错误信息。 请注意,在取消挂载之前,请确保没有正在使用该文件系统的重要进程或服务。手动结束这些进程可能会导致系统不稳定或数据丢失。 ### 回答3: 当我们尝试使用命令`umount`取消挂载NFS目录时,有时候会遇到`umount.nfs4: /data/webapp/tools: device is busy`的错误消息。这个错误通常表示我们正在尝试取消挂载的设备或目录仍然处于活动状态。 有几种常见的原因导致此错误发生。首先,该目录可能仍然被其他进程使用,例如当前工作目录位于被挂载的目录下,或者有文件正在被读取或写入。 解决这个问题的一种简单方法是通过查找并终止占用该目录或设备的进程来解决。我们可以使用命令`lsof | grep /data/webapp/tools`来查找正在使用目录的进程。然后,可以使用`kill`命令终止这些进程。当进程终止后,我们可以再次尝试使用`umount`命令取消挂载。 如果这种方法不起作用,可能是因为该设备仍然处于某些打开的文件或进程的依赖下。在这种情况下,我们可以尝试强制取消挂载,使用`umount -f /data/webapp/tools`命令。但是需要注意的是,这可能会导致数据损失或其他问题,因此在使用强制取消挂载之前应该谨慎考虑。 除此之外,也有一些其他方法可以解决该错误,例如使用`fuser`命令或重启计算机等。但是,这些方法可能会带来其他问题或不适合所有情况,因此在采取行动之前最好先了解更多相关信息并谨慎操作。 总结起来,当遇到`umount.nfs4: /data/webapp/tools: device is busy`的错误时,我们可以通过查找并终止占用该设备或目录的进程来解决问题,或者尝试使用强制取消挂载的方法。但是在处理此问题时应谨慎行事,以免引起其他问题或数据丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhipengit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值