在 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
- 将文件中的
profile lxc-container-default-cgns
替换为profile lxc-container-default-with-nfs
- 将
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 中无需进行以上操作,在管理平台直接可以设置,具体如下: