![安装 NFS - Proxmox 容器中“不允许操作”](https://linux22.com/image/209974/%E5%AE%89%E8%A3%85%20NFS%20-%20Proxmox%20%E5%AE%B9%E5%99%A8%E4%B8%AD%E2%80%9C%E4%B8%8D%E5%85%81%E8%AE%B8%E6%93%8D%E4%BD%9C%E2%80%9D.png)
我正在尝试挂载一个简单的 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)
该共享似乎对两个客户都很活跃。
# 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)
客户端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
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 ..
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
我已经设置了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
使用另一个客户端,192.168.7.11,我能够毫无问题地安装该共享。
我看不到任何问题或配置错误,也无法在任何地方找到修复程序。没有防火墙阻碍,服务器和客户端都使用 Debian 11。
知道发生了什么事吗?
答案1
我发现了这个问题。
基本上,我在 Proxmox 中创建了一个 Debian 非特权容器。这意味着 NFS 不可用。到目前为止,我在使用 Proxmox 容器时还没有意识到这一限制。
为了能够访问该容器内的 NFS 共享,我遵循了以下建议普罗克斯莫克斯论坛。
首先,我在 Proxmox 主机中安装了 NFS 共享(那里没有问题)。然后,在 Proxmox 中,我创建了一个“绑定挂载" 将该 NFS 分区绑定到我的容器。
# pct set 903 -mp0 /mnt/host_dir,mp=/mnt/guest_dir
我不确定这是最好的方法,但现在我可以从容器内访问该 NFS 共享。
另一种可能性是重新创建容器特权并启用 NFS。
答案2
我使用 RHEL 7.9,无论如何,我对进入 21 世纪 22 年的 NFS 感到失望......
我的经验是,如果您进行编辑/etc/nfs.conf
,则/etc/sysconfig/nfs
挂载通常会延迟版本 3。对我来说,在 RHEL 7.9 中,我不能代表其他发行版,要使 NFS v4.1 正常工作,我不能更改这两个文件中的任何一个文件中的任何内容,然后最多只有 v4.1 可以工作;尽管 NFS v4.2 已在 中列出,但我始终无法使其工作/etc/nfs.conf
。
因此,请确保您的 nfs 服务器和客户端之间的所有详细信息/etc/nfs.conf
都/etc/sysconfig/nfs
匹配,例如 mountd 和 statd 端口号……默认情况下,它应该全部发生在 NFS4 的端口 2049 下。如果 nfs 服务器和客户端之间存在端口号差异,则会阻止挂载发生。
作为参考,以下是所需的最低限度:
在 nfs 服务器上,然后/etc/exports
进行 /bkup *(rw,no_root_squash)
验证。exportfs -av
exportfs -s
在 nfs 客户端上,一个简单的mount 192.168.1.1:/bkup /bkup
应该挂载{更改 ip 地址以匹配您的 nfs 服务器,并相应地更改文件夹名称}。
还执行 aservice firewalld stop
和 a 分别setenforce 0
关闭防火墙和关闭 selinux。我不认为 selinux 通常会阻止 nfs,但一次一步一步让挂载工作......我在这里提到的总是让 nfs 至少工作。希望有帮助。