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

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)

当我尝试挂载共享时,客户端使用nfsnfs4类型显示“不允许操作”。

$ 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=0insecure导出选项,但它不起作用。

来自客户端的 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。

知道发生了什么事吗?

mar*_*ree 6

我发现了这个问题。

基本上,我在 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 的容器。