外观
用 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 暴露到公网——它没有为公网环境设计的认证机制。
配置步骤
- 在 NAS 上开启 NFS 服务。
- 为目标共享文件夹添加 NFS 导出规则,指定允许的客户端 IP 或网段(例如
192.168.1.0/24)。 - 选择权限:读写还是只读;是否允许客户端的 root 用户以 root 身份访问(通常保持默认的限制更安全)。
- 在客户端挂载:
sh
sudo mkdir -p /mnt/nas
sudo mount -t nfs 192.168.1.100:/共享路径 /mnt/nas-t nfs 指定协议;冒号前是 NAS 地址,冒号后是导出路径;最后是本地挂载点。
- 需要开机自动挂载时,写入
/etc/fstab。建议加上_netdev选项,让系统等网络就绪后再挂载,否则开机会卡住。
权限不对怎么排查
NFS 最常见的问题是「挂上了但没权限写」。排查顺序:
- 确认导出规则是读写而不是只读。
- 对比客户端当前用户的 UID/GID 与 NAS 上目录所有者的 UID/GID。两边对不上时,文件属主会显示成数字。
- 如果客户端以 root 操作却被拒绝,通常是服务端把 root 映射成了匿名用户,这是默认的安全行为。
- 挂载参数里显式指定版本(例如
-o vers=4)排除版本协商问题。
检查结果
挂载后在挂载点创建一个测试文件,回到 NAS 的文件管理中确认能看到它,并检查属主是否符合预期。取消挂载再重新挂载,确认过程可重复。