上周五有人拿着一根 U 盘来问:“我插的是 USB 3.0 口,怎么拷文件才 8MB/s?是不是驱动有问题?”他盯着文件管理器里那个慢得让人心梗的进度条,已经开始怀疑主板、怀疑驱动、怀疑 Windows 更新又抽风了。我让他别猜,把 U 盘接过来,直接看证据。PowerShell 不回显,先把坑踩了再说这台机器是 Windows 环境,我习惯用 PowerShell 跑硬件诊断。第一个坑就来了:这台机器的 PowerShell stdout 不回显——命令跑完了,终端一片空白,你以为没执行,其实结果已经产出了。解决办法很简单:把输出重定向到文件再读。powershell -Command "Get-PnpDevice -FriendlyName '*USB*' | Format-List" > C:\temp\usb_dev.txt然后type C:\temp\usb_dev.txt就能拿到结果。这招在不少公司内网机器上都会遇到,RDP 转发或者组策略把 stdout 吞了,落盘是唯一稳的。链路没问题,读速 80.1MB/s 就是铁证落盘读出来的设备树很清楚:U 盘:Kingston DataTraveler 3.0,容量 28.9GB,VID_0951 / PID_1666挂载路径:Intel USB 3.0 控制器 → USB 3.0 根集线器不是插在 2.0 口上,不是经过某个 2.0 中间集线器降速为了把锅彻底钉死,我拿了一个 5.9GB 的 Win10 ISO 做了顺序读测:fcache /fill /size=5.9G C:\Temp\iso_test.bin实测顺序读速80.1 MB/s。这个数字直接排除了 USB 2.0 协商——USB 2.0 SuperSpeed 跑满也就 35~40MB/s,你不可能在 2.0 链路上测出 80。所以链路是实打实的 USB 3.0(SuperSpeed 5Gbps),协商没有任何问题。写 8MB/s 不是 bug,是这块闪存的物理上限读速正常之后,问题就只剩写入。实测写速:8 MB/s。翻 Kingston DT100G3 的官方规格表:读 100MB/s,写 10MB/s。实测 8 对比标称 10,差距完全在正常波动范围内(TLC 闪存写到 70% 以上后写速会掉)。这块盘是金士顿最入门的型号,用的是白片或低档 TLC 颗粒,写入上限就卡在这个量级。USB 3.0 总线只救了"读"这一侧,"写"的天花板在闪存控制器和颗粒本身,跟你的主板、驱动、系统设置没有任何关系。顺带一提,这根 U 盘还做了老毛桃启动盘,28.9GB 里塞了 WinPE、各种系统镜像,平时拷大文件之前建议先清空,否则碎片化会进一步拖慢写速。想快就换盘,别折腾系统给那位的建议只有三条:如果主要需求是"拷大文件快",换一块标称写速 150MB/s 以上的 U 盘(比如 SanDisk Ultra Flair、金士顿 DTU80),价格也就多几十块,写入直接翻 10 倍以上。如果 U 盘只用来存备份、偶尔拷个 ISO,8MB/s 虽然看着难受,但 5.9GB 的文件也就多等 12 分钟,没必要为这 12 分钟折腾驱动。唯一值得做的"优化"是把 U 盘格式化成 exFAT(NTFS 在闪存上写小文件会额外吃 journal 开销),但效果有限,别抱太大期望。可以带走的排查思路下次再遇到"U 盘慢"的问题,按这个顺序走,五分钟内出结论:先看挂载:设备管理器或Get-PnpDevice确认挂在哪个控制器,是 3.0 还是 2.0 口再测读速:用一个 1~2GB 的大文件做顺序读,读速 > 40MB/s 基本锁定 3.0 协商成功最后对比写入标称:查厂商 spec sheet,实测值和标称值在同一数量级就是闪存本身的极限,不用再查系统90% 的"U 盘慢"最终结论都是最后一条:总线没问题,闪存不行。省下来折腾驱动的时间,去某宝下单就行。做自动化这几年,最耗时间的从来不是写代码,是摸清每个平台的脾气。这篇里提到的坑,都是真金白银踩出来的。如果你手上也有重复度很高的活儿——批量发布、数据搬运、有固定规则的机械操作——可以在评论区说说你的场景,我看看能不能自动化掉。
上周五有人拿着一根 U 盘来问:“我插的是 USB 3.0 口,怎么拷文件才 8MB/s?是不是驱动有问题?”他盯着文件管理器里那个慢得让人心梗的进度条,已经开始怀疑主板、怀疑驱动、怀疑 Windows 更新又抽风了。我让他别猜,把 U 盘接过来,直接看证据。PowerShell 不回显,先把坑踩了再说这台机器是 Windows 环境,我习惯用 PowerShell 跑硬件诊断。第一个坑就来了:这台机器的 PowerShell stdout 不回显——命令跑完了,终端一片空白,你以为没执行,其实结果已经产出了。解决办法很简单:把输出重定向到文件再读。powershell -Command "Get-PnpDevice -FriendlyName '*USB*' | Format-List" > C:\temp\usb_dev.txt然后type C:\temp\usb_dev.txt就能拿到结果。这招在不少公司内网机器上都会遇到,RDP 转发或者组策略把 stdout 吞了,落盘是唯一稳的。链路没问题,读速 80.1MB/s 就是铁证落盘读出来的设备树很清楚:U 盘:Kingston DataTraveler 3.0,容量 28.9GB,VID_0951 / PID_1666挂载路径:Intel USB 3.0 控制器 → USB 3.0 根集线器不是插在 2.0 口上,不是经过某个 2.0 中间集线器降速为了把锅彻底钉死,我拿了一个 5.9GB 的 Win10 ISO 做了顺序读测:fcache /fill /size=5.9G C:\Temp\iso_test.bin实测顺序读速80.1 MB/s。这个数字直接排除了 USB 2.0 协商——USB 2.0 SuperSpeed 跑满也就 35~40MB/s,你不可能在 2.0 链路上测出 80。所以链路是实打实的 USB 3.0(SuperSpeed 5Gbps),协商没有任何问题。写 8MB/s 不是 bug,是这块闪存的物理上限读速正常之后,问题就只剩写入。实测写速:8 MB/s。翻 Kingston DT100G3 的官方规格表:读 100MB/s,写 10MB/s。实测 8 对比标称 10,差距完全在正常波动范围内(TLC 闪存写到 70% 以上后写速会掉)。这块盘是金士顿最入门的型号,用的是白片或低档 TLC 颗粒,写入上限就卡在这个量级。USB 3.0 总线只救了"读"这一侧,"写"的天花板在闪存控制器和颗粒本身,跟你的主板、驱动、系统设置没有任何关系。顺带一提,这根 U 盘还做了老毛桃启动盘,28.9GB 里塞了 WinPE、各种系统镜像,平时拷大文件之前建议先清空,否则碎片化会进一步拖慢写速。想快就换盘,别折腾系统给那位的建议只有三条:如果主要需求是"拷大文件快",换一块标称写速 150MB/s 以上的 U 盘(比如 SanDisk Ultra Flair、金士顿 DTU80),价格也就多几十块,写入直接翻 10 倍以上。如果 U 盘只用来存备份、偶尔拷个 ISO,8MB/s 虽然看着难受,但 5.9GB 的文件也就多等 12 分钟,没必要为这 12 分钟折腾驱动。唯一值得做的"优化"是把 U 盘格式化成 exFAT(NTFS 在闪存上写小文件会额外吃 journal 开销),但效果有限,别抱太大期望。可以带走的排查思路下次再遇到"U 盘慢"的问题,按这个顺序走,五分钟内出结论:先看挂载:设备管理器或Get-PnpDevice确认挂在哪个控制器,是 3.0 还是 2.0 口再测读速:用一个 1~2GB 的大文件做顺序读,读速 > 40MB/s 基本锁定 3.0 协商成功最后对比写入标称:查厂商 spec sheet,实测值和标称值在同一数量级就是闪存本身的极限,不用再查系统90% 的"U 盘慢"最终结论都是最后一条:总线没问题,闪存不行。省下来折腾驱动的时间,去某宝下单就行。做自动化这几年,最耗时间的从来不是写代码,是摸清每个平台的脾气。这篇里提到的坑,都是真金白银踩出来的。如果你手上也有重复度很高的活儿——批量发布、数据搬运、有固定规则的机械操作——可以在评论区说说你的场景,我看看能不能自动化掉。