问题现象
最近在使用 macOS 时,打开 htop 或活动监视器会发现几个 CPU 核心都是 100% 满负荷运行。进一步查看,发现 mds_store 这个进程占用了大量 CPU 资源,导致系统卡顿。
mds_store 是什么?
mds_store 是 macOS Spotlight 索引服务的核心组件,负责管理文件的元数据。它的作用是:
- 为系统内容建立和维护索引数据库
- 支持快速的全局搜索功能(Spotlight)
- 让你能够快速搜索文件、邮件、应用等内容
当系统文件发生变化时(比如文件创建、修改、删除等),mds_store 就会进行重新索引,因此可能会占用大量 CPU 资源。
为什么 mds_store 会占用高 CPU?
常见原因
文件频繁变动
- 大量文件的操作(如开发项目编译、下载大文件)
- 同步工具频繁写入(OneDrive、Dropbox 等)
外接硬盘或网络驱动器
- 连接了外部存储设备时,Spotlight 也会尝试索引这些内容
Spotlight 索引损坏
- 索引数据库出现问题,导致系统反复尝试重新索引
系统更新后重新索引
- 每次 macOS 大更新后,Spotlight 需要重新为整个系统创建索引
解决方案
方案一:重建 Spotlight 索引(推荐首选)
有时候 Spotlight 的索引可能会出现问题,最简单的解决办法就是重建索引。
打开 终端,输入以下命令:
sudo mdutil -E /注意:
-E表示删除并重新创建索引/表示对根目录(整个系统)执行此操作- 这个过程可能需要几分钟到几小时,取决于你的文件数量
方案二:排除某些文件或文件夹
如果有一些文件夹不需要被索引,可以将它们从 Spotlight 中排除。
步骤:
- 打开 系统设置 → Siri 与 Spotlight(或 系统偏好设置 → Spotlight)
- 在 搜索结果 标签页下,找到 隐私 部分
点击
+按钮,选择那些不想被索引的文件夹,比如:- 外接硬盘
- 开发项目目录
- 临时文件夹
这样 Spotlight 就不会再索引这些位置的文件。
方案三:关闭特定驱动器的索引
如果你使用外接硬盘或网络驱动器,可以单独关闭它们的索引。
sudo mdutil -i off /Volumes/ExternalDrive说明:
- 替换
ExternalDrive为实际的卷名 - 如果不知道卷名,可以在 访达 中查看侧边栏的设备列表
方案四:检查大型文件或数据库
一些大型文件可能会让 Spotlight 花费大量时间索引,比如:
- 邮件库(Mail)
- 照片库(Photos)
- 数据库文件
如果这些数据不需要通过 Spotlight 搜索,可以将它们排除在外(参考方案二)。
停用 Spotlight 索引
如果你完全不需要 Spotlight 的搜索功能,也可以停用它。
完全停用 Spotlight
sudo mdutil -a -i off说明:
-a表示作用于所有卷-i off表示关闭索引
关闭后,系统不会再为文件、邮件等内容建立索引,搜索功能也会被停用。
重新启用 Spotlight
如果之后想再次启用 Spotlight:
sudo mdutil -a -i on停用特定卷的索引
只关闭某个特定卷的索引,不影响其他卷:
sudo mdutil -i off /Volumes/YourVolumeName停用 mds 进程(不建议)
另一种方法是强制停用 mds 和 mdworker 进程:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist⚠️ 不推荐这种方法,原因是:
- macOS 会定期自动重启这些进程
- 可能影响系统的其他功能
- 使用
mdutil命令更加稳定可靠
总结
Spotlight 是 macOS 中非常强大的搜索工具,但有时也会给系统带来负担。根据实际需求:
- 问题严重:先尝试重建索引(方案一)
- 特定文件夹影响:排除不需要索引的目录(方案二)
- 外接硬盘问题:关闭外接驱动器的索引(方案三)
- 完全不需要搜索:停用 Spotlight 功能(停用部分)
适当调整 Spotlight 的行为,甚至在必要时完全停用它,能够显著改善系统的性能。