安装 NFS - Proxmox 容器中“不允许操作”

安装 NFS - Proxmox 容器中“不允许操作”

我正在尝试挂载一个简单的 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 -avexportfs -s

在 nfs 客户端上,一个简单的mount 192.168.1.1:/bkup /bkup应该挂载{更改 ip 地址以匹配您的 nfs 服务器,并相应地更改文件夹名称}。

执行 aservice firewalld stop和 a 分别setenforce 0关闭防火墙和关闭 selinux。我不认为 selinux 通常会阻止 nfs,但一次一步一步让挂载工作......我在这里提到的总是让 nfs 至少工作。希望有帮助。

相关内容