使用 rpc.statd

过去,在某些 Linux 发行版上,我们需要在启动 NFS 服务器时单独启动 rpc.statd。
这主要是由于旧的 Sysvinit 系统。
现在,我们会发现启动 NFS 将自动启动 rpc.statd 和服务器正常运行所需的任何其他组件。

systemctl start nfs

或者(取决于发行版)

systemctl start nfs-server

在启动时启用服务器时也是如此。
基于 Debian 的发行版,例如 Ubuntu 和 Linux Mint 将在我们安装后立即启用 NFS,因此无需执行此操作,但启用服务器看起来像这样:

systemctl enable nfs

或者

systemctl enable nfs-server

同样,确切的命令取决于发行版。
“nfs-server”是一个基于 Debian 的系统。

如果我们需要自定义 rpc.statd 的行为,我们可以使用以下选项进行操作。
通常,我们不会希望单独运行该命令。
相反,我们将复制 Systemd 服务文件,创建原始备份和新副本以自由修改。
然后,我们将使用以下选项更改从该服务文件调用服务的方式。

语法

/sbin/rpc.statd [-F] [-d] [-?] [-n name ] [-o port ] [-p port ] [-V]
Linux 命令 rpc.statd

rpc.statd 服务器实现了 NSM(网络状态监视器)RPC 协议。

这项服务的名称有些错误,因为它实际上并没有像人们怀疑的那样提供主动监控;相反,NSM 实现了重启通知服务。
NFS 文件锁定服务 rpc.lockd 使用它来在 NFS 服务器机器崩溃和重新启动时实现锁定恢复。

选项

-F

默认情况下,rpc.statd 在启动时分叉并置于后台。
-F 参数告诉它保持在前台。
此选项主要用于调试目的。

-d

默认情况下,rpc.statd 通过 syslog (3) 将日志消息发送到系统日志。
-d 参数强制它改为将详细输出记录到 stderr。
此选项主要用于调试目的,只能与 -F 参数结合使用。

-n, --name name

为 rpc.statd 指定一个名称以用作本地主机名。
默认情况下,rpc.statd 会调用 gethostname(2) 来获取本地主机名。
指定本地主机名对于具有多个接口的机器可能很有用。

-o, --outgoing-port 端口

为 rpc.statd 指定一个端口,以从中发送传出状态请求。
默认情况下,rpc.statd 会要求 portmap (8) 为其分配一个端口号。
在撰写本文时,还没有 portmap 总是或者通常分配的标准端口号。
在实施防火墙时指定端口可能很有用。

-p, --port 端口

指定 rpc.statd 监听的端口。
默认情况下,rpc.statd 会要求 portmap (8) 为其分配一个端口号。
在撰写本文时,还没有 portmap 总是或者通常分配的标准端口号。
在实施防火墙时指定端口可能很有用。

-?

导致 rpc.statd 打印出命令行帮助并退出。

-V

使 rpc.statd 打印出版本信息并退出。

TCP_WRAPPERS SUPPORT

此 rpc.statd 版本受 tcp_wrapper 库保护。
如果允许客户端使用 rpc.statd,则必须授予客户端访问权限。
要允许来自 .bar.com 域的客户端的连接,我们可以在 /etc/hosts.allow 中使用以下行:

statd: .bar.com

我们必须使用守护程序名称 statd 作为守护程序名称(即使二进制文件具有不同的名称)。

操作

对于要监视的每个 NFS 客户端或者服务器机器, rpc.statd 在 /var/lib/nfs/statd/sm 中创建一个文件。
启动时,它遍历这些文件并通知这些机器上的 peerrpc.statd。

日期:2020-07-15 11:16:41 来源:oir作者:oir