man statd(rpc.statd中文手冊)

来源:http://www.cnblogs.com/f-ck-need-u/archive/2017/08/08/7302593.html
-Advertisement-
Play Games

rpc.statd程式主要實現NFS鎖相關內容,如普通的文件鎖(NLM、NSM)、文件委托、租約等,但註意,它和sm-notify組合起來才能實現整個NFS鎖機制,具體見下文翻譯文檔中的說明。 以下是NFS相關翻譯篇: 回到系列文章大綱:http://www.cnblogs.com/f-ck-nee ...


rpc.statd程式主要實現NFS鎖相關內容,如普通的文件鎖(NLM、NSM)、文件委托、租約等,但註意,它和sm-notify組合起來才能實現整個NFS鎖機制,具體見下文翻譯文檔中的說明。

RPC.STATD(8)                          System Manager's Manual                       RPC.STATD(8)

NAME
       rpc.statd - NSM服務守護進程

SYNOPSIS
       rpc.statd [-dh?FLNvV] [-H prog] [-n my-name] [-o outgoing-port]
                 [-p listener-port] [-P path]
                 [--nlm-port port] [--nlm-udp-port port]

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, --no-syslog
              若同時指定了"-F"選項,則表示讓rpc.statd不再向syslog中寫日誌,而是輸出的stderr中。

       -F, --foreground
              使得rpc.statd附在控制終端上以便NSM操作可以直接被監控到,主要是為了調試。如果不指
              定該選項,則rpc.statd啟動後立即進入後臺運行。

       -h, -?, --help
              輸出rpc.statd命令的使用說明並退出。

       -H, --ha-callout prog
              指定一個高可用callout程式。如果未指定該選項,則不執行任何callout程式。詳細說明見
              下麵的"High-availability callouts"段落。

       -L, --no-notify
              阻止rpc.statd在其啟動時運行sm-notify命令,以及阻止保留已存在的NSM狀態號碼和監控列
              表。

              註意:sm-notify命令包含了一次檢查以確保在每次系統重啟後它僅運行了一次。若rpc.statd
              以不帶"-L"選項重啟時,這可以防止虛假的重啟通知。

       -n, --name ipaddr | hostname
              指定RPC監聽套接字綁定的地址。如果未指定該選項,rpc.statd使用通配地址(即0.0.0.0)。
              
              該字元串也會被傳遞給sm-notify命令,用於作為發送重啟通知請求時的源地址。詳細內容見
              sm-notify(8)的man文檔。

       -N     讓rpc.statd執行sm-notify命令然後退出。由於sm-notify命令可直接運行,該選項已廢棄。

       -o, --outgoing-port port
              指定當sm-notify命令發送重啟通知時使用的源埠號。詳細內容見sm-notify(8)的man文檔。

       -p, --port port
              指定rpc監聽套接字監聽的埠號。如果未指定該選項,則rpc.statd會嘗試從/etc/services中
              獲取,如果獲取成功,則為所有監聽套接字都設置此埠號,否則將為每個監聽套接字都選擇
              一個隨機埠號。
              
              該選項在SM_NOTIFY需要穿越防火牆時可以用來調整埠號,防止被防火牆堵住。

       -T, --nlm-port port
              指定監聽NLM請求的埠號。除非使用了"-U"單獨指定了UDP埠號,否則將同時監聽TCP和UDP的
              埠號。

       -U, --nlm-udp-port port
              指定監聽NLM請求的UDP埠號。

       -P, --state-directory-path pathname
              指定NSM狀態信息保存路徑的父目錄。如果未指定該選項,則預設為/var/lib/nfs/statd。

              程式啟動之後,rpc.statd將嘗試為此目錄使用UID和GID設置它的所有者和所屬組。

       -v, -V, --version
              輸出rpc.statd的版本號並退出。

SECURITY
       The rpc.statd daemon must be started as root to acquire privileges needed to create sockets with
       privileged source ports, and  to  access the state information database.  Because rpc.statd mai-
       ntains a long-running network service, however, it drops root privileges as soon as it starts up
       to reduce the risk of a privilege escalation attack.

       During normal operation, the effective user ID it chooses is the owner of the state directory.  
       This allows  it  to  continue  to  access files in that directory after it has dropped its root
       privileges.  To control which user ID rpc.statd chooses, simply use chown(1) to set the owner of 
       the state directory.

       You can also protect your rpc.statd listeners using the tcp_wrapper library or iptables(8).  To
       use  the  tcp_wrapper  library,  add  the hostnames  of peers that should be allowed access to 
       /etc/hosts.allow. Use the daemon name statd even if the rpc.statd binary has a different filename.

       For further information see the tcpd(8) and hosts_access(5) man pages.

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掛載點,因為它們處於空閑非活動狀態。

   High-availability callouts
       在rpc.statd成功處理SM_MON, SM_UNMOU和SM_UNMON_ALL請求時或接收到SM_NOTIFY時,rpc.statd可以
       執行一個特定的回調(callout)程式。這個程式在高可用NFS(HA-NFS)環境下可用來跟蹤鎖狀態,特別
       是某節點主機重啟後資源需要遷移時。

       callout程式的名稱由rpc.statd的"-H"選項指定。該程式運行時有4個參數:第一個參數是add-client
       或del-client或sm-notify,這取決於之所以要調用callout的原因。第二個參數是監控對端的mon_name。
       第三個參數是鎖管理器要add-client或del-client時的caller_name,否則則是發送SM_NOTIFY請求的IP
       地址。第四個參數是SM_NOTIFY請求中的state_value。

   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

       /var/run/run.statd.pid   pid file

       /etc/netconfig           network transport capability database

SEE ALSO
       sm-notify(8),nfs(5),rpc.nfsd(8),rpcbind(8),tcpd(8),hosts_access(5),iptables(8),netconfig(5)

       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
       Jeff Uphoff <[email protected]>
       Olaf Kirch <[email protected]>
       H.J. Lu <[email protected]>
       Lon Hohberger <[email protected]>
       Paul Clements <[email protected]>
       Chuck Lever <[email protected]>

                                  1 November 2009                                 RPC.STATD(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

 

回到系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7302593.html

註:若您覺得這篇文章還不錯請點擊下右下角的推薦,有了您的支持才能激發作者更大的寫作熱情,非常感謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.查看防火牆狀態 命令:firewall-cmd --state 結果: 2.防火牆是運行狀態,先關閉防火牆服務 命令:systemctl mask firewalld 3.關閉防火牆 命令:systemctl stop firewalld 4.檢查防火牆狀態 命令:firewall-cmd -- ...
  • 認識掛載 如下圖。 掛載 實踐:將分區/dev/sdb1掛載到/mnt上。 卸載 既然可以掛載,那當然也可以卸載。 實踐: 自動掛載 我們也可以做到在系統啟動的時候自動掛載,就像windows系統一樣。 實踐:先卸載/dev/sdb1的掛載,然後設置為自動掛載。 輸入命令:reboot重啟系統,然後 ...
  • 回到目錄 我們在進行docker swarm部署高可用集群時,在yml文件里可能要配置一些服務,而這些服務可能要使用一些公用的資料庫,這些資料庫可能已經運行在某個容器里,而這些容器有自己的網路,docker inspect 容器ID 來查看容器所使用的網路,使用docker network ls來查 ...
  • 本文目錄: 1.1 概述 1.2 RPC不可不知的原理 1.2.1 RPC原理 1.2.2 RCP工具介紹 1.3 啟動NFS 1.4 配置導出目錄和掛載使用 1.4.1 配置NFS導出目錄 1.4.2 掛載NFS文件系統 1.4.3 NFS偽文件系統 1.5 showmount命令 1.6 NFS ...
  • 曾經最喜歡Fedora 版本的Linux,但是因為現在Fedora的界面實在太花里胡哨了,所以最近開始搗鼓CenOS,本來 RedHat的EL版本也是一個不錯的選擇,最後想想還是用社區版的。 話說CentOS本身自帶的文檔閱讀器可以閱讀PDF文件,但是沒有手型工具,這個體驗實在是不好,因此自己打算安 ...
  • 原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。 expr 是一款表達式計算工具,使用它能完成表達式的求值操作。 例如,兩個數相加(註意使用的是反引號 ` 而不是單引號 '): #!/bin/bash val=`expr 2 + 2` ec ...
  • 我們可以在執行 Shell 腳本時,向腳本傳遞參數,腳本內獲取參數的格式為:$n。n 代表一個數字,1 為執行腳本的第一個參數,2 為執行腳本的第二個參數,以此類推…… 以下實例我們向腳本傳遞三個參數,並分別輸出,其中 $0 為執行的文件名: #!/bin/bash echo "Shell 傳遞參數 ...
  • sra文件轉換為fastq格式 fastq-dump -h --split-3 也就是說如果SRA文件中只有一個文件,那麼這個參數就會被忽略。如果原文件中有兩個文件,那麼它就會把成對的文件按*_1.fastq,*_2.fastq這樣分開。如果還出現了第三個文件,就意味著這個文件本身是未成配對的部分。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...