您好,登錄后才能下訂單哦!
問題:
一臺Solaris 10主機(jī)用戶已經(jīng)不再使用,服務(wù)器關(guān)機(jī)前檢查NFS共享狀況,確保已經(jīng)沒有用戶連接到該主機(jī)。
通過命令"showmount -e"檢查客戶端服務(wù)器的連接,發(fā)現(xiàn)還有大量的連接列表。但是與用戶確認(rèn),用戶說已經(jīng)斷開了連接。
解決方法:
=======================================================
Solaris主機(jī)
/etc/rmtab文件中會記錄用戶連接的狀況。NFS Client異常中斷可能造成了umount nfs共享點失敗,導(dǎo)致/etc/rmtab中留存了不正確的記錄。
可以通過下列命令,重啟NFS服務(wù)并清空記錄。
svcadm disable svc:/network/nfs/server:default cat /dev/null > /etc/rmtab svcadm enable svcs:/network/nfs/server:default svcs|grep nfs 檢查服務(wù)啟動狀態(tài)
=======================================================
在Linux平臺也會發(fā)生類似的問題。
man rpc.mountd(8) says: The rmtab File ... Note, however, that there is little to guarantee that the contents of /var/lib/nfs/rmtab are accurate. A client may continue accessing an export even after invoking UMNT. If the client reboots without sending a UMNT request, stale entries remain for that client in /var/lib/nfs/rmtab.
可以通過下列命令解決。
# service nfs stop # cat /dev/null > /var/lib/nfs/rmtab # service nfs start
=======================================================
替代檢查方案:
因為nfs client的意外重啟,可能造成”showmount -a”命令的輸出不可信。
為了確保用戶已無連接,需要尋找其他命令進(jìn)行檢查。
NFS協(xié)議是通過RPC機(jī)制進(jìn)行文件傳輸?shù)模琑PC在文件傳輸發(fā)包階段還是會使用TCP/UDP進(jìn)行傳輸。
嘗試通過"netstat -an|grep IP"命令檢查所以網(wǎng)絡(luò)連接,檢查輸出列表,確定對端IP地址沒有用戶IP后再關(guān)閉服務(wù)器。
參考文檔2: https://blog.csdn.net/wangpeng138375/article/details/8169071 Sun的RPC服務(wù) ONC RPC(Open Network Computing Remote Procedure Call)是一個由Sun Microsystem公司開發(fā)的開源的RPC框架。它是用于UNIX系統(tǒng)的RPC事實標(biāo)準(zhǔn)。ONC RPC已經(jīng)被證明是一項高性能的技術(shù)。包括Solaris,AIX,HP UX,Linux等在內(nèi)的大多數(shù)UNIX平臺都支持RPC服務(wù)。 RPC其實也是種C/S的編程模式,其工作過程如圖2-3所示,大致包含以下幾個步驟: (0) 服務(wù)器啟動,它向所在主機(jī)上的端口映射器(port mapper)注冊自身??蛻羧缓髥?,它調(diào)用clnt_create,該函數(shù)則與服務(wù)器主機(jī)上的端口映射器聯(lián)系,以找到服務(wù)器的臨時端口。clnt_create函數(shù)還建立一個與服務(wù)器的TCP連接。 (1) 客戶調(diào)用一個稱為客戶端存根(Client stub)的本地過程(存根由rpcgen工具生成)。對于客戶來說,客戶程序存根看起來像是它想要調(diào)用的真正的服務(wù)器過程。存根的目的在于把待傳遞給遠(yuǎn)程過程的參數(shù)打包,可能的話把它們轉(zhuǎn)換成某種標(biāo)準(zhǔn)格式,然后構(gòu)造一個或多個網(wǎng)絡(luò)消息。把客戶提供的參數(shù)打包成一個網(wǎng)絡(luò)消息的過程稱為集結(jié)(marshaling)??蛻舫绦虻母鱾€例程和存根通常調(diào)用RPC運行時函數(shù)庫中的函數(shù)。 (2) 這些網(wǎng)絡(luò)消息由客戶程序存根發(fā)給遠(yuǎn)程系統(tǒng)。通常需要一次陷入本地內(nèi)核的系統(tǒng)調(diào)用(例如write或是sendto)。 (3) 這些消息傳送到遠(yuǎn)程系統(tǒng),通常使用TCP或UDP協(xié)議。 (4) 一個服務(wù)器存根(server stub)過程一直在遠(yuǎn)程系統(tǒng)上等待客戶的請求。它從這些網(wǎng)絡(luò)消息中解散(unmarshaling)出參數(shù)。 (5) 服務(wù)器程序存根執(zhí)行一個本地過程調(diào)用以激活真正的服務(wù)器函數(shù),傳遞給該函數(shù)的參數(shù)是它從來自客戶的網(wǎng)絡(luò)消息中解散出來的。 (6) 當(dāng)服務(wù)器過程完成時,它向服務(wù)器程序存根返回其返回值。 (7) 服務(wù)器存根在必要時對返回值作轉(zhuǎn)換,然后把它們集結(jié)到一個或多個網(wǎng)絡(luò)消息中,以便發(fā)送回客戶 (8) 這些消息通過網(wǎng)絡(luò)傳送回客戶。 (9) 客戶程序存根從本地內(nèi)核中讀出這些網(wǎng)絡(luò)消息(如read或recvfrom)。 (10)對返回值進(jìn)行可能的轉(zhuǎn)換后,客戶程序存根最終返回客戶函數(shù) |
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。