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

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

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

强制卸载也不行

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

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

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

关闭并卸载kill -9 44545

fuser -m /data/disk12

umount /data/disk12

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

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

[root@cdh181 ~]# umount /data/disk20
umount: /data/disk20: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@cdh181 ~]# fuser -mv /data/disk20
                     USER        PID ACCESS COMMAND
/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,这样我们无法正常杀掉这个子进程,当时的处理办法就是重启机器,让这个进程释放掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值