暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux系统无法卸载文件系统该怎么办

落叶说Mysql数据库运维 2021-01-03
1252

简介

前些日子,有个开发找我,说他的一个Linux环境,想卸载其中的一个文件系统,可是执行umount命令,一直显示文件系统忙,无法卸载,问我怎么办。

问题复盘

1.先创建测试文件系统/fstest

[root@192 ~]# df -ThFilesystem              Type      Size  Used Avail Use% Mounted ondevtmpfs                devtmpfs  475M     0  475M   0% devtmpfs                   tmpfs     487M     0  487M   0% dev/shmtmpfs                   tmpfs     487M   45M  442M  10% runtmpfs                   tmpfs     487M     0  487M   0% sys/fs/cgroup/dev/mapper/centos-root xfs        39G   23G   16G  59% /dev/sda1               xfs      1014M  160M  855M  16% boot/dev/mapper/centos-home xfs        19G  3.3G   16G  18% hometmpfs                   tmpfs      98M     0   98M   0% run/user/1000overlay                 overlay    39G   23G   16G  59% var/lib/docker/overlay2/d228823ce6403d522417b3e69eda58a89e36db8f3dde5e1be623040becbc3682/merged/dev/mapper/vg1-lv01    xfs      1014M   33M  982M   4% fstest
复制

2.创建测试目录和业务脚本

[root@192 log]# mkdir -p fstest/log[root@192 fstest]# cat test.sh#!/bin/bashwhile truedoecho `date` >> fstest/log/test.logsleep 10done
复制

3.将脚本放在后台运行

[root@192 fstest]# nohup ./test.sh > test.sh.log &[1] 54652[root@192 fstest]# nohup: ignoring input and redirecting stderr to stdout[root@192 fstest]# lltotal 4drwxr-xr-x 2 root root 22 Sep  5 10:03 log-rwxr-xr-x 1 root root 77 Sep  5 10:04 test.sh-rw-r--r-- 1 root root  0 Sep  5 10:12 test.sh.log
复制

4.模拟卸载/fstest文件系统

[root@192 ~]# umount fstestumount: fstest: target is busy.        (In some cases useful info about processes that use         the device is found by lsof(8) or fuser(1))
复制

卸载文件系统报错了,文件系统繁忙,无法卸载,这是因为有应用程序在读写/fstest文件的文件,所以在这里必须要找出是谁在访问/fstest文件

5.找出访问指定文件系统的应用进程

[root@192 ~]# fuser -u -m fstest/fstest:             54652c(root) 54913c(root)
复制

在这里使用fuser已经找出正在使用/fstest的用户进程ID了,剩下的就是可以通过ps -ef找出什么进程了。

[root@192 ~]# ps -ef|egrep -i "54652|55159"root      54652  52239  0 10:12 pts/1    00:00:00 bin/bash ./test.shroot      55216  54652  0 10:20 pts/1    00:00:00 sleep 10root      55226  52239  0 10:20 pts/1    00:00:00 grep -E --color=auto -i 54652|55159
复制

在杀掉进程之前,需要看看此进程是否会影响业务,如果不影响业务,就可以直接杀掉

[root@192 ~]# kill -9 54652[root@192 ~]# ps -ef|egrep -i "54652|55159"root      55377  52239  0 10:22 pts/1    00:00:00 grep -E --color=auto -i 54652|55159
[1]+ Killed nohup ./test.sh > test.sh.log (wd: /fstest)
(wd now: ~)

复制

杀掉进程之后,就可以正常的卸载文件了

[root@192 ~]# umount /fstest/
[root@192 ~]#
[root@192 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 45M 442M 10% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 39G 23G 16G 59% /
/dev/sda1 xfs 1014M 160M 855M 16% /boot
/dev/mapper/centos-home xfs 19G 3.3G 16G 18% /home
tmpfs tmpfs 98M 0 98M 0% /run/user/1000
overlay overlay 39G 23G 16G 59% /var/lib/docker/overlay2/d228823ce6403d522417b3e69eda58a89e36db8f3dde5e1be623040becbc3682/merged

复制

文件系统已经正常卸载了。

文章转载自落叶说Mysql数据库运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论