OpenMediaVault SMB 与 NFS 共享实操与验证指南

OpenMediaVault SMB/CIFS 与 NFS 文件共享端的实际部署与验证指南,含服务端文件系统准备、SMB 共享配置与 smbclient 端到端读写实测(put/get)、NFS 服务端 exports 配置与 showmount 验证,以及容器 overlayfs 环境下 NFS 导出限制的如实说明。基于 OMV7.7 真实客户端读写实测。

OpenMediaVaultOpenMediaVault2026/10/06

OpenMediaVault SMB 与 NFS 共享实操与验证指南

目标:在 OMV7 上配置并实测验证 SMB/CIFS 与 NFS 文件共享。SMB 给出服务端 smb.conf + smbclient 客户端端到端 put/get 真实输出;NFS 给出 /etc/exports 配置与 showmount 验证,并如实说明容器 overlayfs 下 NFS 的内核限制(真机/独立分区不受此限)。实测环境:OMV 7.7.24-7 (Debian 12),服务端容器 IP 172.17.0.15。

1. 前置:文件系统与共享文件夹

共享文件夹必须落到某文件系统的挂载点下。测试用 loop 文件充当一块磁盘:

dd if=/dev/zero of=/srv/testfs.img bs=1M count=1200
mkfs.ext4 -F /srv/testfs.img
mkdir -p /srv/testfs && mount -o loop /srv/testfs.img /srv/testfs
mkdir -p /srv/testfs/data
  • 若走 Web 界面,"存储 → 文件系统"登记后 salt 部署 fstab,写入 /etc/fstab: /dev/loop17 /srv/testfs ext4 defaults,noatime 0 0
  • "访问权限管理 → 共享文件夹"创建 TestShare(文件系统=/srv/testfs,相对路径= data)。

2. SMB/CIFS 服务端配置

OMV 通过 samba 提供 SMB。可在 Web "服务 → SMB/CIFS" 配置,或直接维护 /etc/samba/smb.conf(OMV 渲染的等价产物):

[global]
   workgroup = WORKGROUP
   server string = %h OMV test
   security = user
   passdb backend = tdbsam
   map to guest = Never

[TestShare]
   path = /srv/testfs
   valid users = smbtest
   read only = no
   browseable = yes
   create mask = 0664
   directory mask = 0775

建 SMB 用户并把挂载点授权给该用户(实测):

useradd -M -s /usr/sbin/nologin smbtest
(echo smbtest; echo smbtest) | smbpasswd -a -s smbtest   # Added user smbtest.
chown -R smbtest:smbtest /srv/testfs

systemctl start smbd nmbd
systemctl is-active smbd nmbd            # active active

注意 smbpasswd -a 必须显式带用户名参数,否则默认给当前用户(root)加口令,会导致 logon failure。

3. SMB 客户端端到端实测(smbclient)

客户端容器(Debian 12,装 smbclient):

# 列出共享
smbclient -L //172.17.0.15 -U smbtest%smbtest
#     Sharename    Type    Comment
#     ---------    ----    -------
#     TestShare    Disk
#     IPC$         IPC     IPC Service (omv OMV test)

# 上传 + 列目录(真实 put)
echo "hello from smb client" > /tmp/hi.txt
smbclient //172.17.0.15/TestShare -U smbtest%smbtest -c "put /tmp/hi.txt hi.txt; ls"
# putting file /tmp/hi.txt as \hi.txt (16.6 kb/s)
#   hi.txt      A    51    Tue Oct  6 12:08:23 2026

# 下载回本地校验(真实 get)
smbclient //172.17.0.15/TestShare -U smbtest%smbtest -c "get hi.txt /tmp/got.txt"
# getting file \hi.txt of size 51 ...
cat /tmp/got.txt          # hello from smb client ...   (内容一致)

结论:SMB 上传(put)写入 /srv/testfs、下载(get)回读一致,共享链路真实可用。

4. NFS 服务端配置

# 导出声明(Web "服务 → NFS → 共享" 等价产物)
echo "/srv/testfs  172.16.0.0/12(rw,sync,no_subtree_check,no_root_squash)" > /etc/exports
exportfs -ra

systemctl enable --now nfs-kernel-server    # active

# 查看导出表(服务端真实)
showmount -e 127.0.0.1
# Export list for 127.0.0.1:
# /srv/testfs 172.16.0.0/12
exportfs -v
# /srv/testfs     172.16.0.0/12(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

客户端挂载方式(真机/普通主机):

apt-get install -y nfs-common
mkdir -p /mnt/nfs
mount -t nfs -o vers=4 <OMV_IP>:/srv/testfs /mnt/nfs
# 之后读写即落盘,也可编辑 /etc/fstab 开机自动挂载。

5. 容器/overlayfs 下 NFS 的如实限制

  • 本组件在容器(root=overlayfs)环境实测,内核 NFS 导出器拒绝导出 overlayfs 目录,挂载报:
mount.nfs: mounting <ip>:/srv/testfs failed, reason given by server: No such file or directory
# 服务端亦提示:
exportfs: /export/testdir does not support NFS export
  • 这是 overlayfs 而非 OMV 配置问题:NFS 只能用常规块文件系统(ext4/xfs/btrfs 分区)承载导出目录。OMV 真机/虚机上,SMB 与 NFS 都由独立数据分区承载,NFS 可正常导出与挂载。
  • 因此:本文 SMB 为客户端端到端实测;NFS 服务端配置与导出表为实测产物,客户端挂载部分给出标准命令,并在容器场景注明限制。

6. 安全建议

  • SMB:设置强口令、禁用 guest、按需最小共享目录;SMB1 应关闭(OMV 默认 SMB2)。
  • NFS:导出网段最小化、必要时 no_root_squash 仅限受信主机。
  • 定期备份 /etc/openmediavault/config.xml、/etc/samba/smb.conf、/etc/exports。

7. 常见问题

  • smbclient 报 NT_STATUS_LOGON_FAILURE:smbpasswd -a 未指定用户名,或口令不一致。
  • 共享写不进:挂载点属主未放给共享用户(chown)或权限位未开写。
  • NFS No such file or directory / does not support NFS export:overlayfs 容器限制,改用独立分区。