Mount NFS inside LXC containers - Proxmox

在 Proxmox 的 LXC 容器中挂载 NFS 远程共享

如果你在 Proxmox 的 LXC 容器中尝试挂载 NFS 远程共享, 即便在root用户权限下也会遇到错误:

nfs-client:~# mount x.x.x.x:/mnt/test /mnt/nfs
mount: permission denied
nfs-client:~# whoami
root

在 Proxmox Shell 中操作让 LXC 支持 NFS:

1. 创建新的 profile 配置文件

cp -i /etc/apparmor.d/lxc/lxc-default-cgns /etc/apparmor.d/lxc/lxc-default-with-nfs

2. 更改 /etc/apparmor.d/lxc/lxc-default-with-nfs

  1. 将文件中的 profile lxc-container-default-cgns 替换为 profile lxc-container-default-with-nfs
  2. NFS 配置 附加到结束大括号 } 前,具体如下:

NFS 配置

mount fstype=nfs*,
mount fstype=rpc_pipefs,

或者(更精确)

mount fstype=nfs,
mount fstype=nfs4,
mount fstype=nfsd,
mount fstype=rpc_pipefs,

3. 重启 apparmor

systemctl reload apparmor

4. 更新容器配置文件

编辑 /etc/pve/lxc/${container_id}.conf 并在每个区块内修改以下内容(若没有对应则追加到区块末尾):

unprivileged: 0 # 无特权容器:否
lxc.apparmor.profile: lxc-container-default-with-nfs

5. 停止并重启 LXC 容器

pct stop ${container_id} && pct start ${container_id}

在 LXC Shell 中挂载 NFS 远程共享:

1. 安装 NFS 客户端

apt update
apt install nfs-common

2. 为 NFS 远程共享创建挂载点

mkdir -p /mnt/client_sharedfolder

3. 临时挂载 NFS 远程共享

# mount -t nfs4 [nfs_ip]:[nfs_export] [local_mountpoint]
mount -t nfs4 192.168.3.202:/mnt/md0/server_sharedfolder /mnt/client_sharedfolder

挂载 NFS 远程共享后,可以使用以下命令进行确认:

df –h
du -sh /mnt/client_sharedfolder

卸载临时 NFS 远程共享

# umount [local_mountpoint]
umount /mnt/client_sharedfolder

4. 在引导时自动挂载远程 NFS 目录

在 `/etc/fstab` 文件后附加:

# [nfs_ip]:[nfs_export] [local_mountpoint] nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

192.168.3.202:/mnt/md0/server_sharedfolder /mnt/client_sharedfolder nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

修改 /etc/fstab 后不重启即生效

mount -a

Proxmox 7.x 可视化配置挂载远程 NFS

最近新发现,在Proxmox 7.x 中无需进行以上操作,在管理平台直接可以设置,具体如下:

上一篇
下一篇