要准确测出Mac当前挂载的NAS共享卷在SMB协议下真实读写吞吐量,需绕过Finder缓存、排除APFS延迟分配干扰,用rsync实测写入(如1GB文件耗时换算MB/s),用dd实测裸读速度,并通过禁用SMB签名(修改/etc/nsmb.conf)释放千兆内网带宽。

要准确测出Mac当前挂载的NAS共享卷在SMB协议下真实能达到的最大读取与写入吞吐量,必须绕过Finder缓存、排除APFS延迟分配干扰,并用终端命令直击挂载点文件系统层——不能只看理论带宽,也不能依赖网络测速工具。
用rsync实测NAS挂载点真实写入吞吐
这一步反映你日常拖拽文件进NAS时的真实性能,含SMB签名开销、加密协商、服务器端缓存策略等全部环节。
先创建一个1GB测试文件:mkfile -n 1g /tmp/test_1gb.bin
再将其拷入已挂载的NAS路径(例如/Volumes/NAS-Data):time rsync -av --progress /tmp/test_1gb.bin "/Volumes/NAS-Data/"
命令结束后终端会显示耗时(如real 12.45s),用1024 ÷ 秒数即得实际写入MB/s。注意:若挂载路径含空格或中文,请用引号包裹;若rsync报错“Operation not permitted”,说明启用了SIP或Full Disk Access未授权,需先在系统设置→隐私与安全性→完全磁盘访问中添加终端。
用dd命令测NAS挂载点裸读速度
读取测试不走rsync元数据开销,更贴近大文件连续读场景,比如视频回放或数据库加载。
执行:dd if="/Volumes/NAS-Data/test_1gb.bin" of=/dev/null bs=1024k
【务必确认test_1gb.bin已在上一步成功写入该路径,且未被删除】
输出末尾会显示“bytes transferred”和“time”,用字节数÷1024÷1024÷时间秒数,即得MB/s读速。若首次读取极慢(
用iostat监控NAS写入过程中的实时I/O分布
当rsync正在拷贝大文件时,用iostat能看清数据到底压在哪个设备上——是本地磁盘在缓存,还是流量真正在走网卡。
第一步:保持rsync运行,新开终端窗口
第二步:输入iostat -d -w 2并回车
第三步:观察输出表格中“disk*”行(如disk2)的w_MB/s是否持续跳升;若只有en0的w_KB/s动而disk*不动,说明数据尚未落盘,仍在内存缓冲区
第四步:按Control + C退出;若需记录全程,追加 > /tmp/nas_iostat.log
外置NAS通常不显示为disk设备,而是通过en0或en1的网络I/O体现——此时应配合ifconfig观察RX/TX字节增长,而非紧盯disk行。
强制关闭SMB客户端签名以释放千兆内网真实带宽
macOS默认启用signing_required=yes,此机制在千兆局域网中引入显著延迟,实测吞吐量可从110 MB/s暴跌至28 MB/s。
方法一:临时禁用(重启Finder即失效)
执行:sudo nano /etc/nsmb.conf → 在空白文件中粘贴两行:
[default]
signing_required=no
按Control+O→回车→Control+X退出
方法二:立即生效无需重启
断开所有已挂载的SMB卷(右键程序坞图标→“推出”),再重新用访达连接
【禁用签名后,务必确保NAS与Mac处于可信局域网内,不可用于公网暴露环境】

















