問題現象:AIX環境,作為NFS客戶端,有一個/backup目錄,作為Oracle異地備份使用。 網絡安全,將NFS客戶端與服務端的網絡斷開后,Oracle生產環境主機hang住,新的連接報錯,數據庫監控軟件告警,DB無法連接。
排查檢查問題現象:
grid$crsctl stat res -t NFS Server ip_addr not responding still trying 無法連接NFS機器 oracle$sqlplus / as sysdba NFS Server ip_addr not responding still trying 無法連接NFS機器
解決:
讓網絡工程師最塊速度恢復網絡連接。
疑問? 為什么NFS 服務端與客戶端斷開網絡? 讓主機hang???
http://www.voidcn.com/article/p-aoeeuhzi-cr.html mount nfs的其它可選參數: HARD mount和SOFT MOUNT:HARD: NFS CLIENT會不斷的嘗試與SERVER的連接(在后台,不會給出任何提示信息,在LINUX下有的版本仍然會給出一些提示),
直到MOUNT上。 例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
對於到底是使用hard還是soft的問題,這主要取決於你訪問什么信息有關。例如你是想通過NFS來運行X PROGRAM的話,你絕對不會希望由於一些意外的情況(如網絡速度一下子變的很慢,
插拔了一下網卡插頭等)而使系統輸出大量的錯誤信息,如果此時你用的是HARD方式的話,系統就會等待,直到能夠重新與NFS SERVER建立連接傳輸信息。另外如果是非關鍵數據的話也可以使用SOFT方式,
如FTP數據等,這樣在遠程機器暫時連接不上或關閉時就不會掛起你的會話過程。 本次節選的信息非AIX官網信息,但是可以借鑒參考。 https://www.talkwithtrend.com/Question/31767
Linux測試
nfs,客戶端與服務器端網絡斷開后。 客戶端主機測試: #for ((i=1;i<100000;i++));do (df -h &);done 讓大量的進程執行df -h在后台執行,此時同時執行df -h的進程數量遠遠超出邏輯cpu數量,此時系統非常卡,但是並未出現 NFS xxx報錯,與生產環境的報錯。 但是也導致了主機非常卡,因為此時CPU 忙不過來了。
#pkill -9 df
#ps -ef|grep df
生產環境遇到這個問題可以
#tail -200f /var/log/messsage 讀取NFS 服務端
Mar 24 20:40:11 test02 kernel: nfs: server 192.168.16.98 not responding, still trying
#umount -f /nfstest 如果知道路徑,可以強力卸載
總結:1.建議NFS配置特別是AIX主機環境,使用soft 屬性,無法連接報錯,而非無限期進程hang住連接,直到連接成功(默認).
soft If an NFS file operation has a major timeout then report an I/O error to the calling program. The default is to continue retrying NFS file operations indef- initely. hard If an NFS file operation has a major timeout then report "server not responding" on the console and continue retrying indefinitely. This is the default.
2.提前准備應急預案
AIX 未測試
# fuser -km /rsync_bk # umount /rsync_bk
Linux已測試
#umount -f /nfstest