man statd(rpc.statd中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
rpc.statd程序主要实现NFS锁相关内容,如普通的文件锁(NLM、NSM)、文件委托、租约等,但注意,它和sm-notify组合起来才能实现整个NFS锁机制,具体见下文翻译文档中的说明。
RPC.STATD() 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.)。 该字符串也会被传递给sm-notify命令,用于作为发送重启通知请求时的源地址。详细内容见
sm-notify()的man文档。 -N 让rpc.statd执行sm-notify命令然后退出。由于sm-notify命令可直接运行,该选项已废弃。 -o, --outgoing-port port
指定当sm-notify命令发送重启通知时使用的源端口号。详细内容见sm-notify()的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() to set the owner of
the state directory. You can also protect your rpc.statd listeners using the tcp_wrapper library or iptables(). 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() and hosts_access() 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(),nfs(),rpc.nfsd(),rpcbind(),tcpd(),hosts_access(),iptables(),netconfig() RFC - "NFS: Network File System Protocol Specification"
RFC - "NFS Version 3 Protocol Specification"
OpenGroup Protocols for Interworking: XNFS, Version 3W - Chapter AUTHORS
Jeff 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> November RPC.STATD()
以下是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中文手册)的更多相关文章
- man nfsd(rpc.nfsd中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.nfsd() System Manager's Manual rpc.nfsd ...
- man mountd(rpc.mountd中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.mountd() System Manager's Manual rpc.mo ...
- man rpcbind(rpcbind中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html RPCBIND() BSD System Manager's Manual RPCBI ...
- man sm-notify(sm-notify命令中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html sm-notify命令是用来发送重启通知信息给NFS对端的,在锁状态恢复过程中起着至关 ...
- man exportfs(exportfs命令中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html exportfs() System Manager's Manual exportfs ...
- Erlang/OTP 中文手册
http://erldoc.com/ Open Telecom Platform application array asn1rt base64 binary calendar code dbg di ...
- NVelocity介绍,NVelocity中文手册文档及实例下载
NVelocity是什么velocity英音:[vi'lɔsiti]美音:[və'lɑsətɪ]近在做一个项目,客户要求有网站模板功能,能够自主编辑网站的风格,因为这个系统是为政府部门做子站系统,举个 ...
- (转)Sqoop中文手册
Sqoop中文手册 1. 概述 本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera SQOOP的官方文档.为了用中文更清楚明白地描述各参数的使用含义,本文档几乎所有参数 ...
- man中文手册配置
1.ubuntu环境man中文手册配置 1) 终端输入sudo apt-get install manpages-zh 2) 安装后修改配置文件sudo gedit /etc/manpath.co ...
随机推荐
- 恢复git撤销commit的代码
使用git reset --hard 是将磁盘文件也删除 时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge.甚至一些很小的操作,例如删除一个分支 ...
- Debian 8下手工安装 Eclipse CDT neon.2
从 http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neon2 下载 eclipse-cpp-neon-2-li ...
- dubbo 源码学习1 服务发布机制
1.源码版本:2.6.1 源码demo中采用的是xml式的发布方式,在dubbo的 DubboNamespaceHandler 中定义了Spring Framework 的扩展标签,即 <dub ...
- SQL Server profile使用技巧
200 ? "200px" : this.width)!important;} --> 介绍 经常会有人问profile工具该怎么使用?有没有方法获取性能差的sql的问题.自 ...
- 凌华Express CVC D2550 Win7 64-bit无法正常关机的解决办法
[问题现象]: 在Windows点击shutdown按钮后,显示器一直停在“正在关闭...”的界面上: 此时硬盘已经停止工作了: CPU没有发送S5信号,因此,主板上的电没有被切断: [解决办法]: ...
- 大叔学ML第五:逻辑回归
目录 基本形式 代价函数 用梯度下降法求\(\vec\theta\) 扩展 基本形式 逻辑回归是最常用的分类模型,在线性回归基础之上扩展而来,是一种广义线性回归.下面举例说明什么是逻辑回归:假设我们有 ...
- docker发布netcore网站-零散记录
安装docker 安装Linux,使用云服务器或者虚拟机 参考:http://www.cnblogs.com/wangjieguang/p/hyper-v-ubuntu.html 系统更新 sudo ...
- Codeforces Round #554 (Div. 2) 1152A - Neko Finds Grapes
学了这么久,来打一次CF看看自己学的怎么样吧 too young too simple 1152A - Neko Finds Grapes 题目链接:"https://codeforces. ...
- 看我是如何利用升级系统一键GetShell
i春秋作家:小猪 原文来自:看我是如何利用升级系统一键GetShell 漏洞名称:看我是如何利用升级系统一键GetShell 程序下载地址:https://pan.baidu.com/s/1VdoPL ...
- HBase体系架构和集群安装
大家好,今天分享的是HBase体系架构和HBase集群安装.承接上两篇文章<HBase简介>和<HBase数据模型>,点击回顾这2篇文章,有助于更好地理解本文. 一.HBase ...