APFS采用按需分配与共享容器空间机制,容器是实际占用物理空间的单位,其内各卷动态共享总容量,无固定预留空间;所谓“预留”实为可清除空间,由系统动态管理。

APFS 卷本身不预留固定大小,也不做传统意义上的空间预分配。它采用的是“按需分配 + 共享容器空间”的机制,这和旧式文件系统(如 HFS+)中为每个分区硬性划出固定容量的做法完全不同。
APFS 容器才是空间管理的真正单位
当你在磁盘工具中看到一个“Macintosh HD”卷,它其实只是某个 APFS 容器内部的一个逻辑卷。这个容器才是实际占用物理磁盘空间的实体,而容器内的所有卷——包括系统卷、数据卷、恢复卷、快照存储区等——共享该容器的总容量。
- 容器创建时会占用整块未分配磁盘空间(或你指定的大小),但内部各卷初始只占极小空间
- 各卷随文件写入自动增长,无需手动扩容,也不会因某卷写满而影响其他卷使用剩余空间
- 即使一个卷删光了全部文件,其已分配的元数据和快照残留仍可能保留少量空间,但这不是“预留”,而是运行所需开销
所谓“预留空间”其实是可清除空间(Purgeable Space)
你在“关于本机 > 存储空间”里看到的“可清除”部分,常被误认为是“预留”。它并非提前划走、专供某功能使用的静态空间,而是系统动态标记的一类可安全释放的数据:
- Time Machine 本地快照(默认保留最近24小时)
- 应用文档版本历史(如 Pages 的自动保存版本)
- Spotlight 索引缓存、照片图库缩略图、字体缓存等临时重建型数据
这些数据始终存在,但系统可在空间紧张时自动清理,无需用户干预。执行 diskutil apfs list 可查看当前容器中“Purgeable”字段的具体字节数。
没有预分配,但有写时复制与克隆带来的隐含空间行为
APFS 的写时复制(Copy-on-Write)和文件克隆机制,会影响空间占用的直观判断:
- 复制一个10GB文件,新副本不立即占用额外10GB,而是共享原始数据块;仅当任一副本被修改时,才为改动部分分配新空间
- 快照本身几乎不占空间(只记录变化点),但一旦原始文件被覆盖或删除,快照就会“固化”对应数据块,使其无法被回收
- 这意味着:空间增长是延迟的、路径依赖的,不能单靠文件数量或大小简单估算
如何确认真实可用空间?
别只看访达或“关于本机”的图形界面。终端命令才能反映底层状态:
- df -h /:显示挂载点的总/已用/可用空间(含 purgeable)
- diskutil apfs list:列出容器物理大小、各卷大小、purgeable 字节数
- tmutil listlocalsnapshots /:检查哪些本地快照正在占用空间
真正决定你能写入多少新数据的,是容器级的“可用空间”减去当前 purgeable 中尚未触发释放的部分——而这部分由系统根据内存压力、磁盘余量等实时决策。

















