man sm-notify(sm-notify命令中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
sm-notify命令是用来发送重启通知信息给NFS对端的,在锁状态恢复过程中起着至关重要的作用。此命令的说明大多数和rpc.statd都相同。
SM-NOTIFY() 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(), nfs(), uname(), hostname() RFC - "NFS: Network File System Protocol Specification"
RFC - "NFS Version 3 Protocol Specification"
OpenGroup Protocols for Interworking: XNFS, Version 3W - Chapter AUTHORS
Olaf Kirch <okir@suse.de>
Chuck Lever <chuck.lever@oracle.com> November SM-NOTIFY()
以下是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 sm-notify(sm-notify命令中文手册)的更多相关文章
- man rsync翻译(rsync命令中文手册)
本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分.由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释.若有 ...
- man exportfs(exportfs命令中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html exportfs() System Manager's Manual exportfs ...
- Linux sort命令中文手册(info sort翻译)
说明: (1).本手册只挑选了有用的信息进行翻译,如要查看完完整整的内容,请自行info sort. (2).译文中,在括号中使用了"注"的,为本人所加,非原文内容,助于理解和说明 ...
- man ssh翻译(ssh命令中文手册)
本文为命令ssh的man文档翻译,翻译了90%的内容,剩余是一些没必要翻译的东西,请见谅. 如此文有所疑惑,希望我的另一篇文章能解惑: SSH(1) BSD Ge ...
- grep命令中文手册(info grep翻译)
body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; color: black; line-height: 1.4em ...
- rsync(六)命令中文手册
rsync(1) rsync(1) 名称 rsync - 一个快速.多功能的远程(和本地)文件拷贝工具 摘要 Local: rsync [OPTION...] SRC... [DEST] Access ...
- man statd(rpc.statd中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.statd程序主要实现NFS锁相关内容,如普通的文件锁(NLM.NSM).文件 ...
- man rpcbind(rpcbind中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html RPCBIND() BSD System Manager's Manual RPCBI ...
- man nfsd(rpc.nfsd中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.nfsd() System Manager's Manual rpc.nfsd ...
随机推荐
- JavaScript基础视频教程总结(121-130章)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 计算机网络四:网卡与MAC地址
网卡与MAC地址 ㈠网卡 1.网卡定义 网卡是工作在OSI的数据链路层的网络组件,是局域网中连接计算机和传输介质(网线或WIFI信号)的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉 ...
- Appium日志乱码终结指北
缘起 最近Android,IOS自动化多开群控都搞好了,但是Appium中的log 显示中文乱码问题像个苍蝇一样,看着感觉特别难受,挥之不去,抚之不平.论坛搜索了一下,很多帖子都反映过这个问题,但是都 ...
- JavaScript基础学习笔记整理
1.关于JS: (1)脚本语言——不需要编译的语言(常见有cmd,t-sql)----解释性语言; (2)动态类型的语言——1.代码只有执行到那个位置才知道那个变量中存储的是什么 2.对象中没有某个属 ...
- CTR常见规则摘录
1.给用户推荐热门的10个商品 . 2.对数据进行预处理,删除未购买过品牌的用户记录(不删除最近一周才出现的新用户),删除未被购买过的品牌记录,删除疯狂点击但是从不购买的刷钻用户记录等,利用一些简单 ...
- Java基础巩固——排序
快速排序 基本思想: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对两部分继续进行排序,直到整个序列有序. 实例: 1.一趟排序的过程: 2.排序的全 ...
- CSS3圆角详解第一辑
有很多人都知道圆角怎么写,加一个border-radius就可以,但是对于用圆角的一些细节却并不是很清楚,那么我们今天就来聊一聊这个圆角.CSS3是样式表(style sheet)语言的最新版本,它的 ...
- 超实用的Docker入门教程|Docker vs VM
概述 如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发 ...
- hbase概念解析
hbase是一种nosql数据库.是一个高可靠,高性能,面向列,可伸缩,实时读取的分布式数据库. hbase一般由行键,时间戳,列族,列,表格单元,行组成. 行一般由一个行键和一个或多个具有关联关系值 ...
- 你不知道的JavaScript --- 作用域相关
本篇是<你不知道的JavaScript>的读书笔记 什么是作用域? 程序离不变量,那么变量存储在哪里?程序需要时如何找到他们? 这些问题说明需要一套设计良好的规则来存储变量, 并且之后可以 ...