SUSE Linux案例 文件系统只读,强制卸载
问题背景
早上来,发现昨天的备份全部失败,报错都是 /Oracle_bk文件系统只读。
处理过程
bi-db:~ # lsb_release -a
LSB Version: core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64:desktop-3.1-amd64:desktop-3.1-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch
Distributor ID: SUSE LINUX
Description: SUSE Linux Enterprise Server 10 (x86_64)
Release: 10
Codename: n/a
bi-db:~ # cat /etc/SuSE-release
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 2
bi-db:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p2 104G 94G 4.4G 96% /
udev 16G 1.4M 16G 1% /dev
/dev/mapper/biemcvg-biemclv
738G 698G 2.0G 100% /oracle
/dev/cciss/c0d1p5 1.4T 1.3T 58G 96% /oracle_bk
进入 /oracle_bk目录,touch一个文件果然报错,于是打算umount掉文件系统,再重新挂载。
bi-db:~ # umount /oracle_bk
umount: /oracle_bk: device is busy
umount: /oracle_bk: device is busy
设备忙的话,可以查一下谁在使用。
bi-db:~ # lsof | grep /oracle_bk
bi-db:~ # fuser -k -m -v /oracle_bk
奇怪了,没有人使用,没有任何进程。
再次执行,依然报错。
bi-db:~ # umount /oracle_bk
umount: /oracle_bk: device is busy
umount: /oracle_bk: device is busy
换个思路,执行懒人卸载(见 ),结果成功了。其实还不行的话,还可以执行强制卸载(-f 参数)
bi-db:~ # umount -l /oracle_bk
bi-db:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p2 104G 94G 4.4G 96% /
udev 16G 1.4M 16G 1% /dev
/dev/mapper/biemcvg-biemclv
738G 698G 2.0G 100% /oracle
bi-db:~ # mount /oracle_bk
bi-db:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p2 104G 94G 4.4G 96% /
udev 16G 1.4M 16G 1% /dev
/dev/mapper/biemcvg-biemclv
738G 698G 2.0G 100% /oracle
/dev/cciss/c0d1p5 1.4T 1.3T 58G 96% /oracle_bk
bi-db:~ # cd /oracle_bk
bi-db:/oracle_bk # touch aaa
bi-db:/oracle_bk # ls -al aaa*
-rw-r--r-- 1 root root 0 Jul 24 09:44 aaa
bi-db:/oracle_bk # rm aaa
umount相关重要参数:
-a 删除fstab中所有的文件系统
-f 强制umount,主要针对不可达的NFS,这个应该是有风险,大家慎用,毕竟强扭的瓜不甜的哦。
-l 懒惰模式,先删除文件系统层次。等文件系统不忙的时候清空所有连接。
参数使用顺序:
umount /aaa
umount -l/aaa
umount -f/aaa
总结问题处理思路
文件系统只读的问题还是比较常见的,作为一个老手,处理思路最好心中有数,才可以处变不惊。
1)确保所有用户都已经退出挂载点目录,退出占用该目录的应用程序,尤其是自己
2)fuser或lsof查看还有什么僵死进程占用,kill掉