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
換個思路,執行懶人卸載(見 http://www.linuxidc.com/Linux/2013-07/87764.htm ),結果成功了。其實還不行的話,還可以執行強制卸載(-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掉
3)umount對應文件系統,使用的手段優先級參看本文前面內容