本人譯做集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.htmlhtml
sm-notify命令是用來發送重啓通知信息給NFS對端的,在鎖狀態恢復過程當中起着相當重要的做用。此命令的說明大多數和rpc.statd都相同。網絡
SM-NOTIFY(8) System Manager's Manual SM-NOTIFY(8) NAME sm-notify - 發送系統重啓通知給NFS對端的工具 SYNOPSIS /usr/sbin/sm-notify [-dfn] [-m minutes] [-v name] [-p notify-port] [-P path] DESCRIPTION 文件鎖不是持久文件系統狀態的一部分。所以當主機重啓時鎖的狀態會丟失。 當遠程主機重啓時,網絡文件系統必須可以探測到鎖狀態的丟失。當NFS客戶端重啓時,NFS服務 端必須釋放該客戶端所申請的全部文件鎖。在服務端重啓後,客戶端必須可以提醒服務端它所申 請的全部文件鎖。 對於NFSv2和NFSv3,使用網絡狀態監控器Network Status Monitor(NSM)協議來通知NFS對端關於重 啓的事情。在Linux上,NSM服務進程由兩個獨立的用戶空間程序組成: ● rpc.statd 該守護進程用於監聽其餘主機的重啓消息,並管理本地主機重啓時須要通知的主機列表。 ● sm-notify 一個輔助程序,用於在本地系統重啓時通知NFS對端。 (譯者注:也就是說rpc.statd是重啓信息的接收者,而sm-notify是信息的通知者) 本地NFS鎖管理器(NFS lock manager,NLM)會它本地的rpc.statd發出警告說列表中的每一個遠程對端 狀態都須要被監控。當本地系統重啓時,sm-notify命令會通知對端上的NSM服務關於本身重啓的 事。當遠程主機重啓時,遠程對端的sm-notify通知本地的rcp.statd,而後將此信息告訴本地NFS 鎖管理器,本地鎖管理器將維護與重啓端對應文件的鎖。 NSM OPERATION IN DETAIL NFS客戶端和服務端之間的第一個文件鎖交互行爲會使得兩端的NLM都去聯繫它們本地的NSM服務以 存儲它們對端的信息。在Linux上,也就是讓本地所管理器去聯繫rpc.statd守護進程。 rpc.statd會將NFS對端信息記錄在持久存儲上。該信息描述了若是本地系統重啓時如何去聯繫遠程 對端,如何識別對端報告它在重啓的信息,以及當對端說它已經重啓完成時如何通知NLM。 每一個客戶端在每一個文件鎖請求中都會發送一個稱爲客戶端caller_name的主機名。NFS服務端可使 用該主機名向客戶端發送異步GRANT調用,或者通知客戶端它已經重啓完成。 Linux NFS服務端能夠將客戶端的caller_name或客戶端的網絡地址提供給rpc.statd。爲了遵照NSM 協議,該名稱或地址被稱爲對端mon_name。另外,本地鎖管理器會告訴rpc.statd它本身的主機名, 爲了遵照NSM協議,該主機名被稱爲my_name。 在NFS中,NFS服務端沒有通知客戶端它的主機名的交互行爲。所以NFS客戶端實際上不知道服務端 的mon_name,儘管在SM_NOTIFY請求中會使用的它。Linux NFS客戶端是經過使用從掛載命令中獲取 到的服務端主機名或地址來識別正在啓動的NFS服務端的。 Reboot notification 當本地系統重啓時,本地的sm-notify命令從持久存儲中讀取監控對端列表,併發送SM_NOTIFY請求 給列表中每一個遠程對端的NSM服務進程,它使用mon_name字符串來指定發送目標。爲了識別哪一個主 機已經重啓完成,重啓後的主機會使用sm-notify命令發送my_name字符串。遠程rpc.statd將使用 該字符串與其監控列表中的對端相匹配以找出發送SM_NOTIFY請求的主機。 若是rpc.statd在它的監控列表中未找到能匹配接收到的SM_NOTIFY請求的對端,則通知不會被轉發 給本地鎖管理器。另外,每一個對端都獨有一個32位整數NSM狀態碼,在每次重啓以後,sm-notify命 令都會讓它碰撞重複。rpc.statd使用該號碼來區分是重啓仍是通知重放。 NFS鎖恢復的一部分是從新發現哪一個對端須要被再次監控。在每次重啓以後,sm-notify命令都會清 空持久存儲上的監控列表。 OPTIONS -d 將sm-notify附在它的控制終端上並前臺運行,使得通知程序能夠直接被監控。 -f 發送通知信息,即便自上次系統重啓後sm-notify已經運行過一次了。 -m retry-time 指定當接收不到響應時,在此時間段內重發通知,單位爲分鐘。若是未指定,則sm-notify嘗試 在15分鐘內一直髮送通知。指定爲0時,sm-notify將無限發送通知,直到它被手動kill掉。 在如下幾種狀況時會重發通知:發送失敗,遠程主機未響應,遠程NSM服務未註冊,遠程mon_name 解析爲IP地址時的DNS錯誤。 只有接收到了遠程主機的有效迴應時,纔會將此遠程主機從通知列表中移除。可是SM_NOTIFY中 還保留一個結果。sm-notify沒有任何辦法可讓遠程主機識別發送者以及是否已經正確地恢復 了鎖狀態。 -n 阻止sm-notify更新本地系統的NSM狀態號碼。 -p port 指定sm-notify發送系統重啓通知時的源端口號。若未指定,則使用隨機臨時端口號。 該選項在通知須要穿越防火牆時可能會用上。 -P, --state-directory-path pathname 指定NSM狀態信息保存路徑的父目錄。若未指定,則默認爲/var/lib/nfs/statd。 sm-notify啓動以後,sm-notify將嘗試使用UID/GID設置該目錄的全部者和所屬組。 -v ipaddr | hostname 指定發送系統重啓通知時要使用的源網絡地址,以及發送SM_NOTIFY請求時的mon_name參數的值。 若是未指定該選項,則sm-notify將使用通配地址作源地址,並使用my_name做爲發送SM_NOTIFY 請求時的mon_name。 若是指定了該選項,則sm-notify將轉換IPV4地址爲主機名,做爲發送SM_NOTIFY請求時的mon_name。 該選項比較適合用於多網卡接口的主機上,特別是遠程對端須要從指定地址接收通知時。 ADDITIONAL NOTES 主機重啓後的鎖恢復對於維護數據一致性和防止沒必要要的應用程序掛起相當重要。爲了能讓 rpc.statd更高效地匹配SM_NOTIFY請求,應該遵照一些最佳實踐,包括: 系統的UTS名稱須要和NFS對端用來作聯繫的DNS名稱相匹配。 (注:若不知何爲UTS名,能夠簡單地認爲UTS名稱就是主機名) 系統的UTS名稱應該老是fqdn格式的名稱。 系統的UTS名的正向和反向DNS映射最好要保持一致。 客戶端用來掛載的服務端的主機名最好能匹配它所發送的SM_NOTIFY請求中的mon_name。 卸載NFS文件系統時無需中止客戶端或服務端任意一端的狀態監控。兩端可能會繼續保持監控一段 時間,以防這兩端間後續再次出現新的掛載和額外的文件鎖的NFS流量出現。 在Linux上,若是沒有裝在內核鎖模塊,全部的遠程NFS對端都不會被監控。這可能會發生在NFS的 客戶端上,例如,自動掛載工具移除了全部NFS掛載點,由於它們處於空閒非活動狀態。 IPv6 and TI-RPC support TI-RPC is a pre-requisite for supporting NFS on IPv6. If TI-RPC support is built into rpc.statd, it attempts to start listeners on network transports marked 'visible' in /etc/netconfig. As long as at least one network transport listener starts successfully, rpc.statd will operate. FILES /var/lib/nfs/statd/sm directory containing monitor list /var/lib/nfs/statd/sm.bak directory containing notify list /var/lib/nfs/statd/state NSM state number for this host /proc/sys/fs/nfs/nsm_local_state kernel's copy of the NSM state number SEE ALSO rpc.statd(8), nfs(5), uname(2), hostname(7) RFC 1094 - "NFS: Network File System Protocol Specification" RFC 1813 - "NFS Version 3 Protocol Specification" OpenGroup Protocols for Interworking: XNFS, Version 3W - Chapter 11 AUTHORS Olaf Kirch <okir@suse.de> Chuck Lever <chuck.lever@oracle.com> 1 November 2009 SM-NOTIFY(8)
如下是NFS相關翻譯篇:併發
翻譯:man rpcbind(rpcbind中文手冊)
翻譯:man nfsd(rpc.nfsd中文手冊)
翻譯:man mountd(rpc.mountd中文手冊)
翻譯:man statd(rpc.statd中文手冊)
翻譯:man sm-notify(sm-notify命令中文手冊)
翻譯:man exportfs(exportfs命令中文手冊)
部分翻譯:man nfs oracle