当前位置:   article > 正文

执行umount 的时候却提示:device is busy 的处理方法_umount device is busy

umount device is busy

hadoop集群运维过程中经常会遇到计算节点磁盘损坏的情况,这个时候我们就需要更换硬盘,但是有时候出现硬盘无法umount的现象,我们就需要用法哦fuser这个命令了。

  1. umount /data/disk16
  2. umount: /data/disk16: target is busy.
  3. (In some cases useful info about processes that use
  4. the device is found by lsof(8) or fuser(1))

强制卸载也不行

  1. umount /data/disk16 -f
  2. umount: /data/disk16: target is busy.
  3. (In some cases useful info about processes that use
  4. the device is found by lsof(8) or fuser(1))

这个时候我们要找出是哪个进程正在占用这个目录

  1. fuser -mv /data/disk12
  2. USER PID ACCESS COMMAND
  3. /data/disk12: root kernel mount /data/disk12
  4. hdfs 44545 F.... java

关闭并卸载kill -9 44545

fuser -m /data/disk12

umount /data/disk12

这样我们卸载硬盘就很顺利了,然后我们在换盘

二、出现另外一种情况,我们也无法看到是什么程序正在占用磁盘

  1. [root@cdh181 ~]# umount /data/disk20
  2. umount: /data/disk20: target is busy.
  3. (In some cases useful info about processes that use
  4. the device is found by lsof(8) or fuser(1))
  5. [root@cdh181 ~]# fuser -mv /data/disk20
  6. USER PID ACCESS COMMAND
  7. /data/disk20: root kernel mount /data/disk20

这是我们用

umount -l /data/disk20 加给-l参数强制卸载

小提示:

出现device busy之类的错误,这里我们可以用lazy umount 技术

请注意,该方法并不是完全安全的,lazy umount主要完成如下操作:

立即从目录结构中实现卸载,即新进程将无法通过/data/disk20访问/dev/sds

正在访问该文件系统的程序不受影响。即正在操作/data/disk20的进程不会被打断,且仍可以读写/dev/sds中的所有文件。

如果所有进程对/data/disk20的操作都执行完,那么才真正地umount

由此可知,lazy umount并没有真正实现umount,仅用于特殊需要的情况

三.扩展知识

一,为什么要使用fuser?先说 fuser的作用,fuser能识别出正在对某个文件或端口访问的进程大家想一下,还有哪个命令具备这个功能? 没错,是lsof,我们前面讲过, lsof能够找出正在对指定文件访问的进程

那么它们两者之间有何区别?

fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程。

二,如何使用fuser?

1,如何用fuser得到正在使用指定文件的进程?用法: fuser 文件说明:它会把正在使用当前文件的进程id列出

三、还有一种情况是占用这个硬盘的父进程是1,这样我们无法正常杀掉这个子进程,当时的处理办法就是重启机器,让这个进程释放掉。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/459206
推荐阅读
相关标签
  

闽ICP备14008679号