在 macOS 终端中查看 APFS 空间分配需结合 diskutil apfs list 和 diskutil info:前者展示容器与卷的层级关系及逻辑/物理占用,后者提供精确空间属性;再辅以 df -h 交叉验证,并通过 tmutil 识别快照、本地缓存等隐形占用。

在 macOS 终端中查看 APFS 空间分配的详细映射报表,核心是理解 APFS 的“容器(Container)→ 卷(Volume)”两级结构。系统不提供一键生成图形化报表的命令,但可通过组合 `diskutil apfs list` 和 `diskutil info` 获取完整、准确的空间映射关系——包括物理容量归属、各卷实际占用、共享空间余量及底层存储块分配逻辑。
用 diskutil apfs list 查看容器与卷的层级关系
这是最直接反映 APFS 空间分配结构的命令:
- 运行 diskutil apfs list,输出会按容器分组,列出每个容器的总容量、已用/可用空间,以及其下所有 APFS 卷(如 Macintosh HD、Macintosh HD - Data、Preboot、Recovery 等)的名称、类型、大小和挂载点
- 注意“Size”列显示的是该卷当前“逻辑占用”,而“Used”列才是它实际消耗的物理空间(含重复数据去重后的净用量)
- 同一容器内所有卷的“Used”之和 ≤ 容器“Used”,差值即为共享空间中的未分配冗余(如快照保留块、元数据开销、预留空间等)
用 diskutil info 检查单个卷或容器的精确空间属性
当需要确认某个卷是否真正“吃掉”了空间,或验证容器是否有可扩容余量时:
- 对卷操作:例如 diskutil info "Macintosh HD - Data",返回中重点关注 Total Size(逻辑大小)、Used Space(实际占用)、Free Space(该卷声称可用,但受容器限制)
- 对容器操作:先用 diskutil apfs list 找到容器标识符(如 disk1),再执行 diskutil info disk1,查看 APFS Container Free Space 和 Physical Store Free Space —— 后者才是真正可用于扩容容器的物理空闲空间
- 若 Physical Store Free Space > 0,说明磁盘上还有未被任何容器占用的裸空间,可执行 diskutil apfs resizeContainer disk1 0 让容器自动填满
结合 df -h 与挂载路径交叉验证实际可用性
df 命令反映的是用户视角的可用空间,需与 APFS 结构比对才能避免误判:
- 运行 df -h / 和 df -h /System/Volumes/Data,对比两者的 “Avail” 数值 —— 正常情况下它们应非常接近,因为都属于同一 APFS 容器
- 如果 / 的可用空间远大于 /System/Volumes/Data,可能意味着系统卷(Macintosh HD)占用了大量未释放的缓存或快照块,此时应配合 sudo tmutil thinlocalsnapshots / 9999999999 1 评估可回收量
- 若某挂载点显示空间异常紧张(如 Use% > 95%),但 diskutil apfs list 显示容器整体仍有大量 Free Space,则问题大概率出在该卷内部文件碎片、不可见缓存或权限锁定导致的空间无法释放
补充:识别空间“隐形占用”的关键线索
APFS 的空间映射报表里,真正影响可用性的不只是可见文件:
- 本地快照:用 sudo tmutil listlocalsnapshots / 查看,快照不单独计费,但会阻止底层数据块被回收;sudo tmutil thinlocalsnapshots / 9999999999 1 返回的“Thinned”字节数就是它当前锁住的物理空间
- Time Machine 本地缓存:位于 /.MobileBackups,虽挂载在根目录下,但由系统管理,df 不计入常规使用量,却真实占用容器空间;可通过 sudo tmutil disablelocal 关闭(慎用)
- FileVault 加密元数据:启用全盘加密后,diskutil info 中会显示额外的 “Encryption Keybag Size” 和 “Metadata Size”,这部分空间固定预留,不参与动态共享


















