Linux取消挂载硬盘

之前说在挂载硬盘时遇到了问题,取消挂载的时候也遇到了问题,其实我也不想.JPG😥

情况描述

先说一下情况:带着笔记本、硬盘、网线去机房挂载,笔记本接入到交换机,配置临时IP,通过SSH登录到目标服务器(Ubuntu)上进行mount。因为数据很大,写了shell脚本进行数据目录cp,nohup挂起后就直接拔笔记本网线(这就是给自己挖坑的地方😥),离开机房了。

插播一条命令,可以每隔1s查看dir目录所占空间大小:

1
$ watch -n 1 -d du -sh dir

处理问题

数据拷贝完毕之后,在工位登录服务器取消挂载时:

1
2
$ umount /mnt/usb
umount: /mnt/usb: target is busy.

出现问题后,首先想到通过lsof查看有哪些进程在使用/mnt/usb,但是列出的进程有很多,没有找到有什么有用的信息(当然也可能是我没分析出来)😥。

查找相关资料后,fuser可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、网络端口等,并给出程序进程的详细信息:

1
$ fuser -mv /mnt/

lsoffuser显示的信息我只能看出挂载进行都在root用户上。

继续查找资料时,看到一句Linux支持多用户登录,想起来之前直接拔网线的操作,查看当前登录的用户:

1
2
3
4
5
6
$ w
11:40:10 up 2 days, 10:20, 3 users, load average: 0.00, 0.00, 0.34
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.2 10:17 1:16m 0.13s 0.13s -bash
root pts/1 192.168.1.2 10:22 1:13m 0.17s 0.17s -bash
mmmm pts/2 192.168.2.2 10:30 2.00s 0.13s 0.04s sshd: mmmm [priv]

这时看到在机房配置的临时IP 192.168.1.2

每个用户登录都会占用一个TTY,可以理解成一个会话,强制踢某个用户下线,就是强制关闭这个会话。关于TTY,可以查看以下资料:
1、https://segmentfault.com/a/1190000009082089
2、http://www.linusakesson.net/programming/tty/index.php

找到原因后,需要将192.168.1.2这个IP上的TTY强制踢出。

1
2
$ pkill -kill -t pts/0
$ pkill -kill -t pts/1

再次查看当前登录用户:

1
2
3
4
$ w
11:40:33 up 2 days, 10:20, 1 user, load average: 0.00, 0.00, 0.33
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
mmmm pts/2 192.168.2.2 10:30 2.00s 0.13s 0.04s sshd: mmmm [priv]

再次执行umount,取消挂载成功:

1
$ umount /mnt/usb/

问题排查结束,真•自己挖坑自己填😭

0%