将数据从 Synology NAS 迁移至全新的 Ubiquiti UniFi UNAS Pro 8,本应是一项基于 SMB 协议和 10Gbps 内网的常规操作,却演变成了一场针对 Windows 文件复制机制的深度排查。此次迁移揭示了 Robocopy 参数配置中的常见误区,以及 SMB 多通道在旧硬件上的性能潜力。
备用数据流导致的复制失败
初期使用资源管理器复制时,部分文件报错 " 由于文件系统限制,请求的操作无法完成 "。经排查,问题并非文件名特殊字符,而是 NTFS 的备用数据流(Alternate Data Streams, ADS)。例如,一个 4.5MB 的音乐文件附带了约 360KB 的元数据流(如 01APIC_03.jpg:$DATA)。Robocopy 默认尝试复制这些流,但在写入 UNAS 时失败。
解决方案是在 Robocopy 命令中使用 /COPY:DATX 和 /DCOPY:DATX 参数。其中 X 标志指示跳过备用数据流,仅复制文件数据、属性和时间戳。这不会影响文件内部嵌入的元数据,仅忽略文件系统层面的附加流,从而成功解决复制错误。
性能陷阱:/Z 与 /J 参数的负面影响
在解决文件错误后,大规模迁移出现严重的性能波动。起初怀疑是磁盘或网络瓶颈,经二分法排查发现,惯用的 /Z(可恢复模式)是罪魁祸首。微软文档指出,/Z 所需的额外日志记录会显著降低复制速度。在稳定的局域网环境中,移除该参数后,传输速度稳定在约 187 MB/s。
此外,针对数百 GB 的大文件,官方推荐的 /J(非缓冲 I/O)参数反而导致 NAS 间传输速度急剧下降。测试显示,直接从 Synology 读取到本地 Windows 机器速度可达 250 MB/s,证明源端性能充足。移除 /J 后,SMB 到 SMB 的传输恢复正常。这表明在特定的双 SMB 服务器路径中,缓冲 I/O 的表现优于非缓冲模式。
SMB 多通道激活旧硬件潜能
迁移过程中,老旧的 Synology NAS 表现出乎意料地强劲。通过 PowerShell 命令 Get-SmbMultichannelConnection 检查发现,SMB 3 多通道功能同时利用了 Synology 的四个 1GbE 接口。尽管客户端仅为 2.5GbE 适配器,但聚合带宽使得读取速度达到约 250 MB/s,突破了单千兆接口的物理限制。这与传统的链路聚合不同,多通道允许单个客户端会话聚合多条网络路径的带宽。
rsync 方案的局限性
作为对比,尝试使用 rsync 直接连接两台 NAS。虽然配置可行,但传输速度仅为 67 MB/s,且生成的目录结构存在额外的嵌套,需要后期清理。在该特定网络环境下,经由 Windows 中转的 SMB 方案在速度和目录结构保持上均优于 rsync。
最终推荐的 Robocopy 命令
综合测试结果,针对混合文件类型的 NAS 迁移,推荐以下 Robocopy 配置:
robocopy "\servershare" "\UNAS-Pro-8share" /E /MT:4 /R:2 /W:2 /COPY:DATX /DCOPY:DATX /XJ /NP /NFL /NDL /LOG:"%USERPROFILE%Desktopnas-migration.log"
关键参数解析:
/MT:4:启用 4 个多线程复制。测试表明,对于此类工作负载,4 线程比单线程或更高线程数(如 16)效率更佳。
/COPY:DATX:跳过备用数据流,避免兼容性错误。
移除 /Z:在稳定局域网中放弃可恢复性以换取最高吞吐量。
慎用 /J:仅在测试确认非缓冲 I/O 能提升特定大文件传输速度时使用。
迁移完成后,可使用 PowerShell 的 Get-FileHash 对关键大文件进行 SHA-256 校验,确保数据完整性。此次实践表明,理解命令行参数背后的行为逻辑(如缓冲、并发、流处理),而非盲目套用 " 最佳实践 ",是实现高效数据迁移的关键。
【星途科讯 图文丨王宇洲 首发于 ZAKER 科技,转载请注明出处】