跳转到内容

用 NFS 挂载共享给 Linux 和虚拟机

NFS 是 Unix 世界的文件共享协议。在 Linux 主机、PVE 等虚拟化平台和部分容器场景下,它比 SMB 更自然,开销也更小。

什么时候用 NFS,什么时候用 SMB

场景建议
Windows / macOS 日常访问SMB
Linux 服务器、虚拟化平台挂载存储NFS
给容器提供持久化目录优先用本地目录,跨机时才用 NFS
需要按用户区分权限SMB

最重要的差别在权限模型:SMB 按用户名密码认证;NFS 传统上按客户端 IP 和用户 ID(UID/GID)来判断权限,服务端信任客户端声称的身份。这意味着能挂载 NFS 的机器,基本上就拥有了该导出目录的访问权

NFS 的授权范围要收窄

导出时限定允许访问的客户端 IP 或网段,不要写成允许全部。更不要把 NFS 暴露到公网——它没有为公网环境设计的认证机制。

配置步骤

  1. 在 NAS 上开启 NFS 服务。
  2. 为目标共享文件夹添加 NFS 导出规则,指定允许的客户端 IP 或网段(例如 192.168.1.0/24)。
  3. 选择权限:读写还是只读;是否允许客户端的 root 用户以 root 身份访问(通常保持默认的限制更安全)。
  4. 在客户端挂载:
sh
sudo mkdir -p /mnt/nas
sudo mount -t nfs 192.168.1.100:/共享路径 /mnt/nas

-t nfs 指定协议;冒号前是 NAS 地址,冒号后是导出路径;最后是本地挂载点。

  1. 需要开机自动挂载时,写入 /etc/fstab。建议加上 _netdev 选项,让系统等网络就绪后再挂载,否则开机会卡住。

权限不对怎么排查

NFS 最常见的问题是「挂上了但没权限写」。排查顺序:

  1. 确认导出规则是读写而不是只读。
  2. 对比客户端当前用户的 UID/GID 与 NAS 上目录所有者的 UID/GID。两边对不上时,文件属主会显示成数字。
  3. 如果客户端以 root 操作却被拒绝,通常是服务端把 root 映射成了匿名用户,这是默认的安全行为。
  4. 挂载参数里显式指定版本(例如 -o vers=4)排除版本协商问题。

检查结果

挂载后在挂载点创建一个测试文件,回到 NAS 的文件管理中确认能看到它,并检查属主是否符合预期。取消挂载再重新挂载,确认过程可重复。

延伸阅读

参考资料

fnOS 非官方中文使用指南,与飞牛官方无隶属关系。