今天往移动硬盘里复制一些文件,发现速度奇慢(~ 10 MB/s,有的时候甚至 4 MB/s 都不到)。
这个盘是我用来 Time Machine 备份的盘,所以我第一反应就是 Time Machine 在运行,况且这种 2.5 寸的 SMR 盘本来也快不到哪里去。于是我果断把 Time Machine 关了,并且确认了这块盘没有进程在读写,然后继续复制,发现还是非常慢,甚至磁盘工具( Disk Utility.app )打开的时候都会卡很久。
我猜想最可能是电脑开机太久出了什么 bug,或者磁盘碎片太多了,或者移动硬盘坏了。还有可能是 USB 转 Type-C 的转接头出了什么问题或者电脑硬件坏了。
我进行了一些测试,感觉整个事情变得越来越蹊跷:
- 重启电脑,没有变化
- 测试读文件的速度,发现读跟写一样慢,下面的实验都是在测读取速度(因为盘上有数据,想测写入必须要挂载)
- 为了避免是文件系统的问题,把文件系统卸载,然后用 dd 命令直接读裸盘,速度稳定在 16 MB/s
- 换用不同的转接头(带供电和不带供电)和不同的雷电口,没有区别
- 把移动硬盘用相同的转接头插在另一台 Linux 机器上,dd 命令读裸盘,速度稳定在 70 多 MB/s,这说明硬盘没问题
- 拿出我的 Type-C 外置 SSD,在 macOS 上用 dd 测试读裸盘速度,45 MB/s,把这块 SSD 插 Linux 机器上面,540 MB/s
- 拿出一个 U 盘,在 macOS 上 dd 读 15 MB/s,在 Linux 机器上 42 MB/s
- 通过 Type-C 扩展坞可以正常使用外接显示器、千兆网(可以满速)
- 在扩展坞上面同时插两个盘(上面说的移动硬盘和 U 盘),两个盘可以同时稳定在上面说的速度
另外补充一句,我的这几个盘之前在 macbook 上都跑到过正常的速度,不是一直这么慢。但是我最近没有进行对读写速度比较敏感的工作,也就有很长一段时间没关注过外置磁盘的速度了,不知道这个问题是什么时候开始有的。
这就有趣了,不管什么盘,只要是 USB 外接,就远远跑不到正常速度,并且速度的峰值还不相同。到这里几乎只剩下了两种可能,一种是我电脑硬件坏了,另一种是 macOS 系统有问题。我又花了一些时间做了如下测试:
- 进 recovery,把安全启动相关选项关掉,把 macbook 通过 U 盘启动进 Ubuntu Live,然后对上述几块盘进行测试,读取速度都可以跑满,跟 Linux 机器的测速结果一致,说明我 macbook 硬件没问题
- 进 recovery,在 recovery 里面用终端的 dd 来测速,跟 macOS 正常进入系统时(缓慢的)结果是一致的,说明不太可能是我安装的第三方软件导致的问题,macOS 本身纯净的系统就有问题
另外我也做了一些测试,确保了 macOS 上的 dd 命令是没问题的。我测试了 Finder 复制文件、rsync 、FileZilla,还有不同版本的 dd,例如 Homebrew 装的 GNU dd,现象都完全一致。
我觉得通过以上测试可以几乎 100% 说明是 macOS 系统(内核)有问题,无法以正常速度读写 USB 外置磁盘。
就在我写上面这些话时,我一个同学帮我测试了他的 macOS 上面的情况(跟我电脑不是同一年的款,都是最新版系统),以及跟其他电脑上读取同一块盘的速度对比,他的电脑和他的硬盘也有完全一样的问题。
附上我环境的参数:
macOS Big Sur 11.3.1 (20E241) MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports) 移动硬盘:WD Elements 2620 (5 TB) 移动 SSD:Samsung Portable SSD T5 (1 TB)
这个问题导致 macbook 几乎无法正常使用任何外接磁盘,不知道有没有其他人也遇到这个问题。大家有外置盘的可以测试一下自己的电脑有没有相同的问题,回复的时候最好附上系统版本和机器型号
