1. 程式人生 > >NFS server down機或重啟導致的NFS系統錯誤

NFS server down機或重啟導致的NFS系統錯誤

今天由於公司的NFS server重啟,從而導致掛載了NFS檔案目錄的server裡出現了大量的hung住的程序,因為當希望將出錯的掛載點umount時候, 出現了一些問題。 目前問題已經解決,在這裡做下總結。

問題:當NFS Server重新啟動後,重新對相應的掛載點從新進行掛載(也就是 umount/mount)

當執行umount /mnt/ 命令的時候,系統提示:

Umount: /mnt/: device is busy

Umount:/mnt/: device is busy

原因: 因為NFS Server重啟或者掛機,導致當前server中的nfs掛載點掛載了一個die的地址, 從而導致kernel bug,導致使用了這些掛載點的程序被hung住。由於這些被hung住的程序還在使用這些出錯的掛載點, 進而導致umount不能成功,並且給出了上述的錯誤提示。通過ps aux 你可以檢視到這些程序,這些程序的state 為D(non-interruptable sleep),表示他們正在等待IO操作的結束。此外,因為mount預設模式是hard option並且nointr option,所以這些程序會一直等待,並且隨後的umount操作由於不能interrupt,從而引起device is busy error.

參考解決步驟:

你需要手動kill(9)所以state 為D的程序(ps aux | grep D)。然後你需要kill(9) rpciod 程序。當這些操作完成以後,所以的sleeping程序被殺死,這時候,你就可以成功執行umount操作了.

其他可能有幫助的命令:

lsof 命令來檢查哪些程序使用了nfs的掛載點上的目錄和檔案。這樣可以更加有針對性的選擇kill哪些程序。