mar*_*ree 3 nfs container shared-folders proxmox nfsv4
我正在尝试挂载一个简单的 NFS 共享,但它一直显示“不允许操作”。
NFS 服务器具有以下共享。
/mnt/share_dir 192.168.7.101(ro,fsid=0,all_squash,async,no_subtree_check) 192.168.7.11(ro,fsid=0,all_squash,async,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)
该共享似乎对两个客户都很活跃。
# exportfs -s
/mnt/share_dir 192.168.7.101(ro,async,wdelay,root_squash,all_squash,no_subtree_check,fsid=0,sec=sys,ro,secure,root_squash,all_squash)
/mnt/share_dir 192.168.7.11(ro,async,wdelay,root_squash,all_squash,no_subtree_check,fsid=0,sec=sys,ro,secure,root_squash,all_squash)
Run Code Online (Sandbox Code Playgroud)
客户端192.168.7.101可以看到共享。
$ sudo showmount -e 192.168.7.10
Export list for 192.168.7.10:
/mnt/share_dir 192.168.7.101
Run Code Online (Sandbox Code Playgroud)
192.168.7.101 的挂载目标:
# ls -lah /mnt/share_dir/
total 8.0K
drwxr-xr-x 2 me me 4.0K Aug 28 19:21 .
drwxr-xr-x 3 root root 4.0K Aug 28 19:21 ..
Run Code Online (Sandbox Code Playgroud)
当我尝试挂载共享时,客户端使用nfs或nfs4类型显示“不允许操作”。
$ sudo mount -vvv -t nfs 192.168.7.10:/mnt/share_dir /mnt/share_dir
mount.nfs: timeout set for Sun Aug 28 21:56:03 2022
mount.nfs: trying text-based options 'vers=4.2,addr=192.168.7.10,clientaddr=192.168.7.101'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=192.168.7.10'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.7.10 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.7.10 prog 100005 vers 3 prot UDP port 46169
mount.nfs: mount(2): Operation not permitted
mount.nfs: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我已经设置fsid=0了insecure导出选项,但它不起作用。
来自客户端的 RPCInfo:
# rpcinfo -p 192.168.7.10
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 59675 mountd
100005 1 tcp 37269 mountd
100005 2 udp 41354 mountd
100005 2 tcp 38377 mountd
100005 3 udp 46169 mountd
100005 3 tcp 39211 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049
100003 3 udp 2049 nfs
100227 3 udp 2049
100021 1 udp 46745 nlockmgr
100021 3 udp 46745 nlockmgr
100021 4 udp 46745 nlockmgr
100021 1 tcp 42571 nlockmgr
100021 3 tcp 42571 nlockmgr
100021 4 tcp 42571 nlockmgr
Run Code Online (Sandbox Code Playgroud)
使用另一个客户端192.168.7.11,我能够毫无问题地安装该共享。
我看不到任何问题或配置错误,也无法在任何地方找到修复程序。没有防火墙阻碍,服务器和客户端都使用 Debian 11。
知道发生了什么事吗?
我发现了这个问题。
基本上,我在 Proxmox 中创建了一个 Debian 非特权容器。这意味着 NFS 不可用。到目前为止,我在使用 Proxmox 容器时还没有意识到这一限制。
为了能够访问该容器内的 NFS 共享,我遵循了Proxmox 论坛的一些建议。
首先,我在 Proxmox 主机中安装了 NFS 共享(那里没有问题)。然后,在 Proxmox 中,我创建了一个“绑定挂载”来将该 NFS 分区绑定到我的容器。
# pct set 903 -mp0 /mnt/host_dir,mp=/mnt/guest_dir
Run Code Online (Sandbox Code Playgroud)
我不确定这是最好的方法,但现在我可以从容器内访问该 NFS 共享。
另一种可能性是重新创建具有特权并启用 NFS 的容器。