溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

showmount -e 輸出不正確記錄,包含歷史掛載cli

發(fā)布時間:2020-06-18 11:40:58 來源:網(wǎng)絡(luò) 閱讀:2078 作者:rabbittony 欄目:系統(tǒng)運維

問題:

一臺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ù)




向AI問一下細(xì)節(jié)

免責(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)容。

AI