为什么连接外置驱动器后你的 Mac 会变慢

插上外置驱动器本不该拖慢你的整个系统,但它常常如此。这里说明幕后正在发生什么,以及如何修复。

你插上一个外置驱动器,Mac 就开始卡顿。访达响应变慢。App 出现停顿。旋转的彩色圆盘登场了。拔出驱动器,一切便恢复正常。

快速答案: 插上外置驱动器会同时触发聚焦索引、访达预览生成、.DS_Store 写入和时间机器检查。单一最大的原因是聚焦——用 sudo mdutil -i off /Volumes/YourDriveName(或“系统设置 > Siri 与聚焦 > 聚焦隐私”)为该驱动器禁用它。正在损坏的驱动器也会导致全系统的 I/O 停滞;如果性能问题很显著,请在磁盘工具中检查 SMART 状态。

它本不该这样运作。外置驱动器只是存储而已。但 macOS 把每一个连接的驱动器都当作要去交互的东西,而那种交互可能拖垮你的整个系统。

聚焦索引是首要的肇事者

你一连接外置驱动器,聚焦就开始为它编制索引。对于一个含有成千上万个文件的驱动器,这个索引过程会消耗大量的 CPU 和磁盘 I/O。

聚焦不只是记录文件的存在。它会读取它们。它从文稿中提取元数据、解析文本文件、生成图像预览,并为电子邮件归档编目。在一个装满文稿、照片或媒体的驱动器上,这可能是一项持续数小时的密集操作。

在聚焦编制索引期间,Mac 的资源在你的工作和索引进程之间被瓜分。CPU 使用率飙升。内存压力增大。而如果外置驱动器很慢(比如一块通过 USB 2.0 连接的机械硬盘),I/O 瓶颈就可能连锁成全系统的卡顿。

修复方法很直接。把驱动器添加到聚焦的隐私列表,以彻底阻止索引:

打开“系统设置 > Siri 与聚焦 > 聚焦隐私”。把你的外置驱动器添加到列表中。聚焦会立即释放该驱动器,并且不再为它编制索引。

或者从 Terminal:

sudo mdutil -i off /Volumes/YourDriveName

你将无法再用聚焦搜索该驱动器的内容,但 Mac 不会再每次插上它就慢如蜗牛。(关于聚焦如何干扰日常的驱动器操作,请参阅我们的文章聚焦阻止磁盘推出。)

访达缩略图与预览生成

当你浏览文件时,访达会为它们生成预览和缩略图。当你打开外置驱动器上的一个文件夹时,访达会开始为它能处理的每一个文件创建视觉预览:图像、PDF、视频、文稿。

在快速的内置 SSD 上,这很快就完成,你几乎察觉不到。在外置驱动器上,尤其是机械硬盘,每个文件夹的预览生成可能要花上几分钟。在它运作期间,访达会变得迟缓。

要减少这种开销,请切换到列表视图(Command-2)或分栏视图(Command-3),而不是图标视图或画廊视图。列表视图和分栏视图不会生成完整的预览,只生成文件类型图标。

你也可以彻底禁用缩略图预览。在访达中,前往“显示 > 查看显示选项”(Command-J),取消勾选“显示图标预览”。在查看外置驱动器上的某个文件夹时这样做,它就会应用于那个位置。

.DS_Store 问题

每当你在访达中打开一个文件夹时,macOS 都会向那个文件夹写入一个 .DS_Store 文件。这个文件存储视图偏好、图标位置和其他元数据。

在内置驱动器上,这是瞬间完成的。在外置驱动器上,写入 .DS_Store 文件会产生 I/O。如果你在一个外置驱动器上浏览许多文件夹,访达就会不断写入这些小文件,每一个都需要一次写入操作,而这在慢速驱动器上可能会阻塞。

对于外置驱动器,你可以用以下命令阻止在网络宗卷上创建 .DS_Store:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

遗憾的是,没有内置的 macOS 设置能专门阻止在可移除 USB 驱动器上创建 .DS_Store。网络存储这项设置并不适用于 USB 或雷雳驱动器。

时间机器检查备份状态

如果你曾把这个外置驱动器用于时间机器,那么每次你连接它,macOS 都会检查驱动器的备份状态。这涉及读取备份目录、将其与当前系统状态比对,并确定有什么需要备份。

对于庞大的备份历史,这项检查可能很耗资源。而如果时间机器判定该备份了,它就会立即开始备份,同时消耗 CPU 和 I/O。这种与 backupd 相关的拖慢,正是让时间机器驱动器格外难以推出的元凶——我们在时间机器不让你推出驱动器中专门讲解了那一面。

如果你已让某个驱动器从时间机器的职责中退役,请在“系统设置 > 通用 > 时间机器”中把它从时间机器的驱动器列表里移除。否则,macOS 会一直试图用它来备份。

正在损坏的驱动器会导致 I/O 停滞

一块有硬件问题的驱动器可能导致全系统的拖慢,其严重程度看似与驱动器正在做的事不成比例。

当某个扇区无法读取时,驱动器会在报告失败之前多次重试读取操作。每一次重试都需要时间。如果 macOS 正试图从坏扇区读取(比如为了聚焦索引),I/O 队列就会堵塞。其他 I/O 操作,包括针对你内置驱动器的那些,都会卡住等待。

在磁盘工具中检查驱动器的健康状况。查看 SMART 状态字段。如果它显示的不是“已验证”,那么该驱动器可能正在损坏,并造成超出你预期的性能问题。

USB 带宽共享

如果你的外置驱动器与其他设备共享一条 USB 总线,它们就在争夺带宽。同一条总线上的两个 USB 设备会瓜分可用的吞吐量。

这在雷雳扩展坞上不太成问题(它们有更多带宽),但在 USB 扩展坞上可能很显著。同一个 USB 扩展坞上的一块硬盘和一个网络摄像头,会比各自单独使用时表现更差。

查看“系统信息 > USB”,看看每个设备连接在哪条总线上。如果你的外置驱动器与其他设备共享一条总线,试着把它移到一个专用端口。

杀毒与安全软件

如果你安装了第三方杀毒软件,它很可能会扫描每一个新连接驱动器上的每一个文件。这种扫描叠加在聚焦索引和访达预览生成之上,让 I/O 负载增至三倍。

大多数安全软件允许你把特定宗卷排除在实时扫描之外。把你信任的外置驱动器添加到排除列表。

让外置驱动器不再恼人

外置驱动器的性能影响是累积的。当你连接一个驱动器时,聚焦、访达预览、.DS_Store 写入、时间机器检查,以及可能的杀毒扫描,全都堆叠上来。

单是禁用聚焦索引,就能消除最大的性能冲击。除此之外,在访达中使用列表视图、从时间机器中移除已退役的驱动器,以及检查驱动器健康状况,能覆盖大多数情形。

至于推出这一面,慢速的驱动器也是更难推出的驱动器。当系统进程因等待缓慢的 I/O 而堵塞时,它们持有文件句柄的时间会比平常更长。一块拖垮 Mac 性能的驱动器,往往也会抗拒推出——完整的图景请参阅我们的 macOS 磁盘正在使用排查指南

Ejecta 在推出这一端提供帮助:它明确辨认出究竟还有哪些进程在访问该驱动器。如果聚焦是问题所在,你会立即看到它,并可以决定是否退出它。无需猜测,无需在 Terminal 输出里艰难跋涉,只需一个清晰的答案,告诉你是什么在使用这块驱动器、以及你的 Mac 为何在苦苦挣扎。

如果你不想每次都动用终端,Ejecta 会准确告诉你是哪个进程在占用硬盘——只需在菜单栏中点击一下即可退出它。

立即购买 — $9.99