我有 Ubuntu 12.04 作为 NFS 服务器。客户端是Linux。我的 /etc/exports
文件有 1 行,
/folderToExport *(rw,async,no_subtree_check)
/etc/init.d/nfs-kernel-server status
显示 NFS 共享正在按预期工作。问题是,每当我尝试从另一台 Linux 主机挂载 NFS 共享时,stdout 都会显示
mount.nfs: rpc.statd is not running but is required for remote locking
mount.nfs: use '-o nolock'...or start statd
ps -ef |grep statd
显示rpc.statd
已经在运行,那么为什么他们说“启动 statd”?
包括他们的-o nolock
建议允许挂载 NFS,但随后挂载的 NFS 将变为只读。该/etc/exports
文件要求rw
.
如何启动 statd? NFS 客户端或服务器是否缺少某些配置?
这对我有用。为 中的每个共享文件夹进行声明/etc/exports
,例如
/folderToExport *(rw,async,no_subtree_check)
statd
可以通过以下方式启动
service statd stop
其次是
service statd start
。然后ps -ef |grep statd
显示
statd 1994 1 0 15:23 ? 00:00:00 rpc.statd -L
验证其正在运行后,接下来从 Linux 客户端statd
运行,mount
mount 192.168.1.3:/folderToExport /mountFolder
应该不会再有消息了rpc.statd is not running ... start statd
最后,确保 NFS 服务器上的权限允许rw
权限。 (/etc/exports
仅修改文件是不够的)
chmod 0777 /folderToExport -R
答案1
我找到了一个对我来说适用于 Raspbian 的答案这里。
启用 rpcbind 和 nfs 服务。
sudo update-rc.d rpcbind enable
sudo update-rc.d nfs-common enable
重启rpcbind服务
sudo service rpcbind restart
答案2
statd
是套餐的一部分nfs-common
。您可能会发现自己可以为locate statd
您带来其他好处/etc/init.d/statd
。
您可以statd
从以下开始:
service statd start
但它通常应该在系统启动时启动,但也许还有其他问题。您应该检查日志文件:grep statd /var/log/*
看看是否有无法启动的原因。
你/etc/exports
看起来不错。我用:
/data0 *(rw,no_root_squash,no_subtree_check)
在我的服务器上并且:
192.168.0.2:/data0 /data0 nfs defaults,noauto,user 0 0
在/etc/fstab
我的客户上。
答案3
如果 rpcbind 和 statd 已启用并正在运行,但您仍然收到此错误消息,则主机可能配置了限制性 tcp 包装器。将记录以下错误:
rpc.statd: Failed to read /var/lib/nfs/state: Success
在这种情况下,您应该将以下内容添加到 /etc/hosts.allow 中:
rpcbind: 127.0.0.1
答案4
启动 rpcbind 和 nfslock 服务。参考
/etc/init.d/rpcbind start
/etc/init.d/nfslock start