Mac 需要整理磁盘碎片吗?新款 Mac 为什么用不着
不需要,用 SSD 和 APFS 的 Mac 不用整理碎片,也不该在上面跑第三方的碎片整理工具。磁盘工具里没有碎片整理按钮,是因为 macOS 自己管着文件布局,而在闪存上,碎片整理要收拾的那些零散块,本来就不会拖慢任何东西。
搜「Mac 怎么整理磁盘碎片」的人,多半真正想问的是 Mac 为什么变慢了,或者磁盘为什么老是满,这两件事都有实打实的原因和解法,没有一个跟重新排列数据块有关。这篇讲清楚碎片整理为什么不再重要,老式机械硬盘在哪一种情况下还能从重新布局里得到好处,以及该做什么来代替它。
碎片整理原本是干什么的
Apple 已经归档的旧支持文档 About disk optimization with Mac OS X 把优化定义为重新排列文件和元数据,「以缩短数据访问时间,并尽量减少硬盘磁头移动的时间」。机械硬盘上一个有碎片的文件被拆成几段存在不同位置,磁头得在它们之间来回跑,每跑一趟都要花时间。
哪怕在机械硬盘时代,这篇文档也说「如果你用的是 Mac OS X,很可能根本不需要做优化」,理由都落在 Mac OS 扩展格式(HFS Plus)上:文件系统会避免重复利用删除文件后留下的小空隙,延迟分配会把许多小的写入合并成一次较大的分配,Mac OS X 10.3 及更高版本还「可以自动整理」那些慢慢变大的文件,Apple 管这个过程叫 Hot File Adaptive Clustering。文档同时提醒,优化过程中断电可能损坏文件,而把 macOS 放在快速启动区里的文件挪走,反而可能让性能变差。
所以 Mac 从来就没有过整理碎片的习惯需要改掉,真正要紧的那部分,它一直在自己做。
SSD 为什么不在乎碎片
机械硬盘上碎片的全部代价,就是磁头在旋转的盘片上移动,SSD 既没有磁头也没有盘片,它用电子方式读取闪存,读一个位置的块和读另一个位置的块花的时间差不多,所以一个拆成十段的文件,读起来和完整的一段几乎一样快。
因此在 SSD 上把每个文件重写成连续的,什么也换不来,还要搭上写入次数,闪存单元会随写入磨损,而一次全盘碎片整理,差不多是你能主动制造的最大一类写入负载。
SSD 真正需要的,是知道哪些块是空闲的,好在下一次写入前提前准备好,这就是 TRIM 的活:macOS 告诉硬盘哪些块已经不再存放文件数据。Apple 自家的内置 SSD 默认就会收到 TRIM 命令,可以在系统信息(在应用程序 › 实用工具里)确认:在硬件下选 NVMExpress 或 SATA,然后看内置硬盘那一项有没有 TRIM 支持:是。也可以在终端里检查一块磁盘是不是 SSD:
diskutil info / | grep "Solid State"
第三方 SSD 的 TRIM 和 trimforce
如果你给老 Mac 换上了第三方 SATA SSD,系统信息里可能显示 TRIM 支持:否,trimforce 命令就是为这种情况准备的。它的手册页(在终端运行 man trimforce)写着它「允许向连接在 AHCI 控制器上的第三方硬盘发送 TRIM 命令」,「默认情况下不会向第三方硬盘发送 TRIM 命令」,还提醒「启用 TRIM 时务必极其谨慎,因为有些硬盘可能无法正确处理这些命令」。运行它需要管理员权限,之后要重启。
sudo trimforce enable
运行前先确认硬盘厂商写明了在 macOS 上支持 TRIM,并且手上有一份最新的备份,之后要是出了问题,运行 sudo trimforce disable 再重启,就能停止发送这些命令。已经显示 TRIM 支持:是的 Mac 不要再跑它,没有任何好处。
APFS 带来的变化:写时复制和快照
从 macOS High Sierra 10.13 起,Mac 用的是 APFS。Apple 的文件系统格式说明写着 APFS「针对新款 Mac 电脑使用的闪存/SSD 存储进行了优化」,并把快照和空间共享列为它的功能。Apple File System Reference 描述了「修改对象时采用的写时复制方法」:改动的数据写进新的块,而不是原地覆盖旧块,这也是 APFS 能扛住崩溃的原因之一。
写时复制正是传统碎片整理工具不合适的原因,一个为了让文件连续而「移动」文件的工具,实际上是在给它的块写一份新副本,如果某个 Time Machine 本地快照还引用着旧块,那些块会一直被占着,直到快照消失,于是整理一遍下来可能反而多占了空间。Apple 说明 Time Machine 大约每小时保存一个本地快照,并且会随着快照变旧或需要空间时删除它们,这是正常现象,不用去对抗。
APFS 还有自己的用户数据碎片整理功能,由 macOS 管理而不是由某个 App 管理。diskutil 的手册页列出了一个 defragment 动词,可以「在 APFS 容器或宗卷层级管理用户文件数据的自动后台碎片整理」,下面这条只读当前状态,不会改动任何东西:
diskutil apfs defragment / status
在一台 Apple 芯片 MacBook 的内置 SSD 上,宗卷和它所在的容器都报告碎片整理处于停用状态,这是闪存存储该有的状态,不是一个漏开的设置。enable 那种写法会改动磁盘的配置,除非你在机械硬盘上有明确的理由,否则别碰它。
搜「碎片整理」的人真正感觉到的是什么
搜索背后的症状,通常是下面两种之一。
Mac 感觉很慢。 在新款 Mac 上,变慢几乎总有一个看得见的原因:某个进程占满了一个 CPU 核心,内存压力一直是黄色或红色,过热降频,或者更新后 Spotlight 在建索引。Mac 为什么这么慢讲了怎么在活动监视器里找出是哪一个,怎么让 Mac 变快讲了那些能带来可量化差别的改动,两份清单里都没有数据块布局。
磁盘快满了。 这才是真正会影响速度的那个。macOS 需要空闲空间来放交换文件、更新、缓存和快照,启动磁盘只剩几 GB 时会变得迟钝并弹出警告,清理出空间比重新排列剩下的东西有用得多。Mac 启动磁盘已满讲了删东西之前怎么先量清楚空间去了哪里。
如果你怀疑的是磁盘本身而不是里面的内容,比如出现了崩溃、存储时报错,或者硬盘装载不上,磁盘工具的急救会检查文件系统结构并修复能修的部分,这是 macOS 要你做的最接近「磁盘维护」的事。具体步骤,包括检查启动磁盘时从 macOS 恢复里运行,写在怎么使用磁盘工具急救里。
老 iMac 和外置机械硬盘
旋转的机械硬盘,不管是在老 iMac、Mac mini 里,还是装在外置 USB 硬盘盒里,是唯一还能感觉到碎片的情况。Apple 归档的那篇文档描述过这种情形:「如果你的磁盘快满了,又经常修改或创建大文件(比如剪辑视频)……磁盘就有可能产生碎片。」
它的第一个建议很简单,「先试试重启」,第二个办法到今天仍然成立:「备份重要文件,抹掉硬盘」,然后把系统和文件放回去。在一块空盘上一次性恢复,所有文件都会按大段连续的方式写下去,做完你还多了一份验证过的备份。
- 用 Time Machine 备份这块硬盘,或者用另一份你已经从中恢复过文件、确认可用的备份。
- 按 Apple 的抹掉并重新格式化说明在磁盘工具里抹掉硬盘,如果是启动磁盘,这一步要在 macOS 恢复里做。
- 如果是启动磁盘就重新安装 macOS,然后从备份里恢复文件。
费这番功夫之前,先确认硬盘做完之后还有空闲空间,一块用到 95% 的机械硬盘很快又会产生碎片,而一块发出咔哒声、或在急救里报错的硬盘需要的是更换,不是重新排列。对一台还从机械硬盘启动的老 Mac 来说,换成 SSD 带来的变化,比任何布局整理都大得多。
为什么要对 Mac 上的「碎片整理」App 存疑
一个说要给 SSD Mac 整理碎片的工具,卖的是一个在这种硬件上根本不存在的成本的解药,进度条和整理前后的对比图看着很有说服力,结果却是闪存上多出来的写入、可能被快照占住的空间,最坏还有 Apple 提到的断电风险。
要提防那些为了「优化」宗卷而索要大范围磁盘访问权限、不说明支持哪种文件系统、或者把碎片整理说成例行维护的工具。如果一个工具自己的文档都没讲它怎么处理 APFS 快照和写时复制,就当它是为别的东西设计的。磁盘工具的急救、一份备份,加上足够的空闲空间,就是一台 Mac 的磁盘真正需要的全部。
Mole 在其中的位置
Mole 不整理磁盘碎片,以后也不会,在 SSD 上没什么可得的,在 APFS 上布局归 macOS 管。Mole 只管问题里看得见的那部分:「清理」在删除任何东西之前,会先让你过目缓存、日志、已卸载 App 的残留、Time Machine 本地快照和废纸篓,「分析」会把磁盘画成一张矩形树图,方便你一层层点进最大的文件夹。
拿不准问题是不是出在磁盘上时,「状态」面板会显示 CPU、内存、磁盘和占用资源最多的进程,每秒刷新一次。Mole 的「系统诊断」也会在启动磁盘使用率超过 90% 时提醒你,因为 macOS 需要空闲空间来放交换文件、快照和更新。Mole 帮助页面列出了每一项检查的含义。
常见问题
用 SSD 的 MacBook 需要整理碎片吗?
不需要。只有当硬盘磁头必须在文件的各段之间移动时,碎片才会耗费时间,而 SSD 没有活动部件,给它整理碎片只会增加写入,读取并不会变快。
Mac 有内置的碎片整理工具吗?
磁盘工具里没有碎片整理按钮。APFS 有一个通过 diskutil apfs defragment 管理的自动后台碎片整理功能,在内置 SSD 上它通常处于停用状态,这就是设计上该有的状态。
Mac 上的外置机械硬盘需要整理碎片吗?
通常不用。如果一块快满、存着经常改动的大文件的机械硬盘变慢了,就备份、抹掉再把文件恢复回去,这样你还顺带得到了一份测试过的备份。
Mole 能给我的 Mac 整理碎片吗?
不能。Mole 不整理磁盘碎片,它用「清理」和「分析」帮你清理出空间,用「状态」看正在运行什么。