为什么连接外置驱动器后你的 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