本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

rpc.statd程序主要实现NFS锁相关内容,如普通的文件锁(NLM、NSM)、文件委托、租约等,但注意,它和sm-notify组合起来才能实现整个NFS锁机制,具体见下文翻译文档中的说明。

RPC.STATD(8)                          System Manager's Manual                       RPC.STATD(8)NAMErpc.statd - NSM服务守护进程SYNOPSISrpc.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 DETAILNFS客户端和服务端之间的第一个文件锁交互行为会使得两端的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的版本号并退出。SECURITYThe rpc.statd daemon must be started as root to acquire privileges needed to create sockets withprivileged 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 upto 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 rootprivileges.  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).  Touse  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 supportTI-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. Aslong 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.bakdirectory 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 databaseSEE ALSOsm-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 11AUTHORSJeff Uphoff <juphoff@users.sourceforge.net>Olaf Kirch <okir@monad.swb.de>H.J. Lu <hjl@gnu.org>Lon Hohberger <hohberger@missioncriticallinux.com>Paul Clements <paul.clements@steeleye.com>Chuck Lever <chuck.lever@oracle.com>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

man statd(rpc.statd中文手册)相关推荐

  1. man nfsd(rpc.nfsd中文手册)

    本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.nfsd(8) System Manager's Manual rpc.nfs ...

  2. linux rpc.statd服务 获取系统性能统计 简介

    大家在安装好RHEL/CentOS系统后,用netstat查看及端口情况,可能会发现有个rpc.statd服务,是不是不知道是哪个服务启动的啊?如何关掉RHEL/CentOS的rpc.statd服务呢 ...

  3. linux连接宏杉存储,Linux客户端挂载NFS共享报“rpc.statd is not running”

    一.组网图 不涉及. 二.问题描述 Linux客户端挂载NFS共享报错,具体错误如下. mount.nfs: rpc.statd is not running but is required for ...

  4. Nmap中文手册浅析

    索引目录: Nmap五大基本功能 Nmap -h(中文手册) 目标说明 主机发现 端口扫描技术 端口说明和扫描顺序 服务和版本检测 操作系统检测 时间和性能 防火墙/IDS躲避和欺骗 输出 其它选项 ...

  5. 中文手册_Etherscan API中文手册

    Etherscan API中文手册由汇智网翻译整理,访问地址: http://cw.hubwiz.com/card/c/etherscan-api/ Etherscan API Etherscan以太 ...

  6. uiautomator2 库中文手册

    uiautomator2 库中文手册 一.安装 1.安装uiautomator2: 2.安装设备守护进程: 3.安装weditor 二.使用指南 1. 连接设备 2. 命令行使用 三.API手册 1. ...

  7. Smarty中文手册,Smarty教程,Smarty模板的入门教材

    Smarty中文手册,Smarty教程,Smarty模板的入门教材 首先,这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的,不代表任何人的意见和观点.对他们的无私奉献精神,我们表示感谢, ...

  8. CSS2.0中文手册(CHM版)

    Div+Css是现在网站架设的一个趋势,应用Css对于网站有诸多的好处.本教程是沈小雨2002年制作的 Css2.0中文手册,对学习CSS和查询CSS属性非常有帮助. Css2.0中文手册针对的是已有 ...

  9. iPhone开发环境搭建全过程 iPhone手机开发内容,中文手册

    http://3g.edu.csdn.net/kecheng/iphone.html  iPhone手机开发内容 http://www.docin.com/p-34874880.html# iPhon ...

最新文章

  1. 当代大学生的变态生活
  2. 鼠标事件响应函数之DOWN:画红色的点
  3. 高精度计时器(编程测试效率用)
  4. 系统设计知识:系统模块结构设计知识笔记
  5. 2013年1月7日学习内容
  6. Linux 同步小命令
  7. 调试技巧之调用堆栈 - Call stack
  8. 数据机房温湿度检测物联网以太网传感器解决方案
  9. 微信小程序开发图片太多怎么办
  10. iredmail mysql 配置_Iredmail各大组件连接Mysql配置说明
  11. 如何设置CentOS 7获取动态ip地址
  12. 计算机网络运动会入场词,运动会入场词
  13. 小程序源码:求职招聘微信小程序源码下载v4.1.78
  14. r语言rank降序_常见排序分析方法及R语言实现
  15. 微信APP支付之IJpay的使用
  16. Please contact your system administrator. Add correct host key in /Users/***/.ssh/known_hosts
  17. PCIE操作基础原理
  18. [全国计算机二级]基础知识汇总(一)
  19. 《我是个怪圈》读书笔记
  20. model.named_parameters()与model.parameters()

热门文章

  1. Spring Boot 初体验(8)配置server信息
  2. 深入理解 Linux 的 RCU 机制
  3. php 进程管理及操作
  4. 基于docker的php调用基于docker的mysql数据库的方法
  5. iOS应用日志:开始编写日志组件与异常日志
  6. Java零基础系列001——第一个程序
  7. setTimeout和setInteval
  8. Windows7查看无线网络密码
  9. ModuleNotFoundError: No module named ‘torchversion‘
  10. LeetCode-21.合并两个有序链表(链表+递归)