zoukankan      html  css  js  c++  java
  • Linux 环境下umount, 报 device is busy 的问题分析与解决方法

    在Linux环境中,有时候需要挂载外部目录或硬盘等,但当想umount时,却提示类似“umount:/home/oracle-server/backup:device is busy”这种提示。

    出现这种提示的原因可能是该文件系统处于busy状态,不能卸载。

    那么什么情况可能会导致文件系统处于“busy”状态呢,考虑一下三种情况:

       1) 文件系统上面有打开的文件

       2) 某个进程的工作目录在此文件系统上

       3) 文件系统上面的缓存文件正在被使用

    解决上述问题的方法是,可以使用fuser命令,fuser -km /home/oracle-server/backup(挂载文件系统)。关于fuser的使用,可以通过fuser --help查看详细参数。如下图

    我们常用到的参数有两个:

    -m  列出所有使用该文件系统的进程

    -k  杀掉访问该文件系统的进程

    所以对于我的环境来说,命令就是fuser -km /home/oracle-server/backup。这里要说明一下,执行这条命令时,要用正确的用户,那怎么知道正确的用户呢?可以查看所要umount目录的属性(使用ll命令查看)中的所属用户。

    正常情况下,通过fuser命令之后,就可以使用umount命令卸载掉挂载目录了。

    补充:

     新挂载目录后原有目录中文件消失?

    答案是原有文件并没有小时,只是隐藏了,看不到罢了。那这又是什么原因呢?

    这个原因是由于Linux的VFS(虚拟文件系统)机制导致的,正常登录以后,所看到的各个目录,文件都是内核在加载时候构造在内存中的VFS目录树,而不是直接看到硬盘上的实际目录树。当你挂载某个设备到一个VFS挂载点上时(比如/home),系统就把VFS中的这个挂载点/home指向你最后所挂载的那个设备上。那么你现在访问该挂载点时,就会看到你最后挂载在此处的设备。而之前所挂载的设备依然在那里,只不过挂载点/home已经不再指向之前的设备。所以之前的数据是被隐藏了,但并没有删除,若umount挂载后,数据又重新回来了。

    2 思考:为什么有时候会出现挂载某个光驱后umount会出现“umount: /mnt/cdrom: device is busy”

    这是由于直接将/dev/cdrom mount 到了/mnt目录造成的。

    正确挂载CD-ROM的方法应该如下:

    #cd /mnt

    # mkdir cdrom
    # mount /dev/cdrom /mnt/cdrom
    或者 

    # mount /dev/cdrom /media/cdrom

    直接挂载在/mnt,/media等系统目录下,在umount时会出现出错信息“umount: /mnt/cdrom: device is busy”的情况。

  • 相关阅读:
    Money-去哪了每日站立会议
    Money去哪了- 每日站立会议
    Money-去哪了每日站立会议
    Money去哪了- 每日站立会议
    Money去哪了- 每日站立会议
    Money去哪了 个人计划列表
    软件需求NABCD分析-Money去哪了
    满足小学生在线答题,记录错题及更正错题的四则运算
    11.21 个人总结
    11.20 个人总结
  • 原文地址:https://www.cnblogs.com/ray-bk/p/10443492.html
Copyright © 2011-2022 走看看