練功房推薦書單

  • 猛虎出柙雙劍合璧版--最新 OCA / OCP Java SE 7 Programmer 專業認證 (電子書)
  • 流浪教師存零股存到3000萬(全新增修版)(書+DVD)
  • 開始在關西自助旅行(京都‧大阪‧神戶‧奈良)(全新增訂版)
  • 不敗教主的300張股票存股術

解決umount時Device is busy RSS feed
討論區首頁 » Linux
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
最近向廠商借測一部NAS設備,測試完畢後,廠商於約定時間來拆走設備。結果拆之前忘了將掛載上來的NFS網路磁碟機先卸載(umount),導致留下一堆process處於status D(所謂的uninterruptible sleep)的狀態,用kill -9 去砍,砍半天也砍不掉,網路上查,發現uninterruptible sleep必須reboot才能解。

後來,正巧我們採購的NAS設備送來了,把設備的IP設成跟原先一樣,分享也設成一樣,然後再去原先的主機下umount,就成功了。

結論:如果碰到這種因為把Storage抽走而造成的Device is busy現象,可以的話就是把設備再接回去,不然就是想辦法模擬出一個同樣IP及同樣分享名稱的目錄,再umount看看。如果真的不行,就只好reboot或reset了。


分享經驗 累積智慧
[WWW]
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
原本以為下了umout指令後,再用mount的結果去檢查或檢查/etc/mtab的內容,沒發現到那個被mount的目錄就解決了,可是後來發現,如果把新的NAS設備的IP改成新的IP,在原先那部主機(註:OS是Red Hat Linux 7.3)只要下了df指令,系統還是會整個block住。如果又把NAS改回舊的IP,則卡住的現象就消除了。
後來經過詢問廠商,我發現到雖然/etc/mtab是所有已掛載的檔案系統的資訊,但實際上/proc/mounts裡面才是目前系統還在使用中的mount的紀錄,使用cat /proc/mounts將其內容印出來:
[root@eip2 proc]# cat mounts

rootfs / rootfs rw 0 0
/dev/root / ext3 rw 0 0
/proc /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/cciss/c0d0p1 /boot ext3 rw 0 0
none /dev/pts devpts rw 0 0
/dev/cciss/c0d0p5 /home ext3 rw 0 0
none /dev/shm tmpfs rw 0 0
/dev/cciss/c0d1p1 /usr ext3 rw 0 0
/dev/cciss/c0d0p2 /var ext3 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
10.66.19.20:/data_web2/eip2 /data_web2/eip2 nfs rw,v3,rsize=4096,wsize=4096,hard,udp,lock,addr=10.66.19.20 0 0
172.16.36.100:/vol/vol3 /mnt/test nfs rw,v3,rsize=4096,wsize=4096,hard,udp,lock,addr=172.16.36.100 0 0
//10.66.19.80/repository /mnt/repository smbfs rw,file_mode=0755,dir_mode=0755 0 0

可以發現多了一行
172.16.36.100:/vol/vol3 /mnt/test nfs rw,v3,rsize=4096,wsize=4096,hard,udp,lock,addr=172.16.36.100 0 0

這就是為什麼下了df指令後會卡住的原因了,找到這個被忽略的mount目錄後,就很容易解決了。
一樣在新的NAS上建立一個vol3的分享目錄,然後再到主機上去下umount指令即可:
[root@eip2 proc]# umount /mnt/test

[root@eip2 proc]# mount
/dev/cciss/c0d0p7 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p5 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/cciss/c0d1p1 on /usr type ext3 (rw)
/dev/cciss/c0d0p2 on /var type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
10.66.19.20:/data_web2/eip2 on /data_web2/eip2 type nfs (rw,addr=10.66.19.20)
//10.66.19.80/repository on /mnt/repository type smbfs (0)
[root@eip2 proc]#


別忘了,還要將NAS上那個vol3刪除掉,這時再去下df指令,很快就可執行完畢了。

分享經驗 累積智慧
[WWW]
 
討論區首頁 » Linux
前往:   
行動版