SMB 与 NFS 共享的配置

存储和网络都就绪,剩下的问题是:数据怎么给家里的设备用。答案是两个协议:SMB 服务 Windows、macOS 和 Linux 客户端,NFS 服务 Linux 和部分客户端。这一章讲两者在家用 NAS 上怎么配,配完之后全家人的电脑里就会多出几个盘符或者挂载点。

SMB:家庭网络的事实标准

SMB(Samba)是 Windows 网络共享的协议,也是家用 NAS 的默认选择。所有 NAS 系统(OMV、TrueNAS、unRAID、飞牛、CasaOS)都有图形化的 SMB 配置入口,底层都是同一套 Samba 服务。

在 OMV 上的操作路径是「服务 → SMB/CIFS → 启用服务 → 共享文件夹选项卡里添加共享」。每配一个共享做三件事:选共享目录、选允许的用户、决定是否只读。配好之后 Windows 资源管理器地址栏输入 \\NAS的IP 就能看到。

命令行场景(自装 Debian 加 Samba)配置文件是 smb.conf。一个家用最小配置长这样:共享名、路径、可写、有效用户。所有选项里只有两件事最重要——允许谁进来、允不允许写。写完执行 testparm 检查语法,再 systemctl restart smbd 重启服务。几乎所有奇葩问题(看不到共享、能看不能写、登录失败)都出在三个地方:配置语法、用户名单、文件系统权限。记住一条排障规则——权限永远取最严的那一道:共享层放行了,文件系统层没放行,结果还是不能写。Samba 有自己的用户库(smbpasswd -a 用户名),系统用户和 SMB 用户一一对应,两道门都要过。这也是为什么推荐用系统面板(OMV 的 ACL 页面)管理权限而不是手动敲命令:面板会同时帮你设好共享权限和文件系统权限,少一道就少一个坑。

检查项 命令或入口 说明
服务状态 systemctl status smbd 没运行就看不到共享
配置语法 testparm 报错会精确到行
共享列表 smbclient -L 本机IP 确认共享被发布
用户权限 smbpasswd 登录失败的常见原因
目录权限 chown、chmod 和 SMB 权限取交集

macOS 与 Time Machine

macOS 原生支持 SMB,但有两个细节值得注意。一是连接方式:Finder「前往 → 连接服务器」填 smb://NAS的IP,或者直接用共享名。二是 Time Machine:把一个共享配置为 Time Machine 备份目标(Samba 配置里加 time machine 支持,或者系统面板勾选),Mac 就会自动把整个磁盘备份到 NAS 上。配额要给足,Time Machine 会一直吃满空间再滚动删除。给 Mac 用户的共享单独划一个目录并设置容量上限,不然它早晚会把整个存储池填满——这不是如果,是时间问题。

Windows 侧的常见诉求是把共享映射成盘符:右键「此电脑 → 映射网络驱动器」,勾上登录时重新连接,以后开机就是一个 Z 盘。家里多人用就给每个人配自己的账号,别全家共用 admin,这是下一章权限管理的内容,也是出安全事故时后悔的第一件事。

NFS:Linux 之间的快车道

NFS 在 Windows 上需要额外开组件,在家用场景主要是给 Linux 客户端(另一台 Linux、树莓派、虚拟机)用的。它的开销比 SMB 小、配置更简单,而且「无认证」这件事在内网里反而成了便利。

服务端一条命令装好:Debian 系是 apt install nfs-kernel-server。配置文件是 /etc/exports,每行一个共享:路径、允许的网段、选项。家用常用选项是 rw(读写)、sync(稳妥)、no_subtree_check、no_root_squash。改完执行 exportfs -ra 生效。客户端挂载用 mount -t nfs IP:路径 /本地目录,想开机自动挂载写进 /etc/fstab。

一个重要警告:NFS 默认信任客户端上的用户身份(uid)。理解这一点有个简单的画面:NFS 不看「你是谁」,只看「你的 uid 是几号」。两台机器上同一个 uid 就是同一个人,这种信任模型只适合完全由自己控制的内网。你家 NFS 共享给一台 Linux 笔记本,那台机器上的任何用户 uid 两边一致就能直接读写。所以 NFS 只该用于完全可信的内网设备,永远不要暴露到公网或者访客网络。

SMB与NFS怎么选

配好之后的调优

共享能用了,不代表用得爽。两个免费调优值得做。

一是网络侧:千兆网下 SMB 单连接速度约 110MB/s,2.5G 网口约 280MB/s。检查交换机和网卡有没有跑在正确速率上,网线是不是六类。家里装修时埋的线如果只是超五类且距离不长,其实也能跑 2.5G,别急着换线。真正卡速率的往往还是硬盘:单块机械盘的顺序读写也就 150MB/s 上下,四盘位阵列才能喂满 2.5G 网。

二是协议侧:Samba 支持 SMB Multichannel(多通道),客户端有多条网络路径时可以并发传输,速度叠加。另外现代 Samba 默认协商 SMB3 协议,确认服务器和客户端都支持 SMB3 加密关闭(内网场景)能减少 CPU 开销。NAS 系统面板里通常有「最小协议版本」一类的选项,保持 SMB3 的默认即可。另一位隐形杀手是杀毒软件和云同步工具反复扫描共享目录,家里 Windows 上若开了 Onedrive 之类的同步盘盯着 NAS 盘符,小文件性能会被拖到没法看。

共享配置五步

移动设备和手机怎么访问

共享配好之后,电脑端好办,手机和平板也有各自的玩法。安卓上用文件管理器(多数支持 SMB 直连)或者第三方客户端,填 IP、账号、共享名就连。iPhone 上文件夹 App 原生支持连接 SMB 服务器,配好之后像本地目录一样用。

一个更彻底的思路是给家人装上 NAS 系统的官方 App(飞牛、TrueNAS 乃至 OMV 的第三方应用),走系统自己的传输通道而不是裸 SMB。好处是 App 会处理断点续传、后台唤醒这些移动端的麻烦事,家人用起来比「文件夹里翻 NAS」友好得多。手机备份的另一头是相册应用,那是 Docker 应用一章的内容。

网络名字与服务发现

Windows 能在「网络」里直接看到 NAS,靠的是主机发现服务。OMV 上装一个 Avahi 或者 WS-Discovery 插件,Mac 和 Windows 就都能自动发现你的 NAS,不用背 IP。NAS 不多的时候,也在路由器 DNS 里给 NAS 的 IP 配一个好记的主机名(比如 nas.lan),比 IP 地址好记也好用。好的命名是免费的体验升级。

常见问题速查

第一个:Windows 刷不出来共享。依次检查:服务是否在跑、防火墙是否放行(OMV 家用可直接关防火墙)、Windows 网络发现功能是否开启、SMB1 是否双方都需要(现代系统默认关掉,老旧设备才需要)。

第二个:能打开共享但写入失败。八成是目录权限:共享层说允许写、文件系统层说不行,结果就是不行。用 ls -l 看属主属组,用 chown 改属主、chmod 改权限。不确定该给多少权限时,先给读写再观察,不要一上来就 777——全家都能改等于没人能改。

第三个:速度远低于带宽。看是协议问题还是磁盘问题:用 dd 或者 iperf3 分别测磁盘和网络的极限,哪边低就是谁的锅。两个数都测一遍,心里就有谱了,这是家用排障的基本功。测速还有两个细节值得记住:一是 iperf3 要双向各测一次,TCP 单向和反向吞吐可能差出两成;二是 dd 测试务必加上 oflag=direct 或者写到 tmpfs 之外的真实磁盘,否则测出来的其实是内存缓存的速度,看着挺美却说明不了问题。还有一个偏门但常见的坑:交换机或者网卡跑在半双工上,理论速率直接腰斩,用 ethtool 看一眼链路模式即可确认。机械盘阵列的随机小文件本来就快不了,别错怪网络。另外一个容易被忽略的因素是 SMB 的签名与加密:SMB3 默认开启签名,某些客户端还会协商加密,这对小文件吞吐有明显影响,家用局域网里可以按需关掉验证性能变化。

共享是 NAS 对外服务的门面,日常管理远程完成,SSH 基础见 ssh;共享跑在网络上,网段、子网、防火墙这些基础概念不熟的话,jsjwlmst 里有一章专门讲。

延伸阅读

  • 下一章《权限管理:用户、组与共享目录》:共享之后,把谁能看什么管起来
  • ssh:改配置看日志都在远程终端完成
  • jsjwlmst:网段、端口、防火墙这些共享背后的网络基础