我已在 Ubuntu 21.04 VM 上设置了 NFS 共享,我想将其安装在 Mac OS Big Sur 客户端上。
使用 检查时,共享列表正常showmount,但安装失败:
andi@iMac-Pro Projects % showmount -e 10.116.0.108
Exports list on 10.116.0.108:
/srv/nfsv4/vsc-docker-projects 10.116.0.0/24
/srv/nfsv4 10.116.0.0/24
andi@iMac-Pro Projects % sudo mount -t nfs 10.116.0.108:/srv/nfsv4/vsc-docker-projects /Users/andi/Documents/Projects/vsc-docker-projects
mount_nfs: can't mount with remote locks when server (10.116.0.108) is not running rpc.statd: RPC prog. not avail
mount: /Users/andi/Documents/Projects/vsc-docker-projects failed with 74
andi@iMac-Pro Projects %
Run Code Online (Sandbox Code Playgroud)
我在服务器上有以下配置:
$ cat /etc/exports
/srv/nfsv4 10.116.0.0/24(rw,sync,root_squash,no_subtree_check,fsid=0)
/srv/nfsv4/vsc-docker-projects 10.116.0.0/24(rw,sync,root_squash,no_subtree_check)
$ cat /etc/fstab
/home/andi/vsc-docker-projects /srv/nfsv4/vsc-docker-projects none bind 0 0
Run Code Online (Sandbox Code Playgroud)
我了解问题与rpc.statd系统上安装的 相关:
$ which rpc.statd
/usr/sbin/rpc.statd
Run Code Online (Sandbox Code Playgroud)
...但显然没有运行:
$ ps -ef | grep rpc
root 407 2 0 04:00 ? 00:00:00 [rpciod]
_rpc 648 1 0 04:00 ? 00:00:00 /sbin/rpcbind -f -w
root 2361 1 0 04:21 ? 00:00:00 /usr/sbin/rpc.idmapd
root 2362 1 0 04:21 ? 00:00:00 /usr/sbin/rpc.mountd --manage-gids
andi 2509 1255 0 04:32 pts/0 00:00:00 grep --color=auto rpc
Run Code Online (Sandbox Code Playgroud)
也无法启动:
$ sudo systemctl start rpc.statd
Failed to start rpc.statd.service: Unit rpc.statd.service not found.
$ service start rpc.statd
start: unrecognized service
Run Code Online (Sandbox Code Playgroud)
我只是缺少一个服务文件/etc/systemd/system/?VM确实是新安装的,我刚刚用apt更新了它,安装了Docker。我无法想象我会在这么短的时间内打破它。
知道我接下来可以尝试什么吗?提前致谢。
搜索了一下,我发现了一个指向正确方向的帖子。
激活服务就成功了:
# check status on rpcbind.service
systemctl status rpcbind.service
systemctl reenable rpcbind.service
systemctl restart rpcbind.service
# check status on rpc-statd.service
systemctl status rpc-statd.service
systemctl reenable rpc-statd.service
systemctl restart rpc-statd.service
Run Code Online (Sandbox Code Playgroud)
现在我收到一条与权利相关的消息,这无疑是向前迈出的一步:
andi@iMac-Pro Projects % sudo mount -t nfs 10.116.0.108:/srv/nfsv4/vsc-docker-projects /Users/andi/Documents/Projects/vsc-docker-projects
Password:
mount_nfs: can't mount /srv/nfsv4/vsc-docker-projects from 10.116.0.108 onto /Users/andi/Documents/Projects/vsc-docker-projects: Operation not permitted
mount: /Users/andi/Documents/Projects/vsc-docker-projects failed with 1
andi@iMac-Pro Projects %
Run Code Online (Sandbox Code Playgroud)
服务器的 /etc/exports 中的一些添加就达到了目的:
/srv/nfsv4/vsc-docker-projects 10.116.0.109/24(rw,sync,root_squash,no_subtree_check,anonuid=1000,anongid=1000,insecure)
Run Code Online (Sandbox Code Playgroud)
该共享仅公开给同一主机上的其他虚拟机。因此,不安全感应该没问题。
现在只需在客户端 /etc/fstab 中添加一个条目,我们就可以开始了:
10.116.0.108:/srv/nfsv4/vsc-docker-projects /Users/andi/Documents/Projects/vsc-docker-projects nfs auto 0 0
Run Code Online (Sandbox Code Playgroud)
我刚刚从 MacOS Catalina 升级到 Monterey,在尝试安装时出现以下错误
mount_nfs: can't mount with remote locks when server (<remote_server>) is not running rpc.statd: RPC prog. not avail
Run Code Online (Sandbox Code Playgroud)
我试图使用以下命令
sudo mount -t nfs -o resvport remote_server:/home/myuser/src /Users/myuser/Development/src
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我必须通过更改文件 nfs.conf 来告诉我的 MacO 默认为 NFSv4
sudo vi /etc/nfs.conf
nfs.client.mount.options = vers=4
Run Code Online (Sandbox Code Playgroud)