df 默认只显示挂载点,不反映 APFS 卷组结构;需用 diskutil apfs list、listGroups 或 info 命令通过 Volume Group ID 确认卷归属,避免误判多系统共存下的卷关系。

macOS 的 df 命令在多版本系统(如 macOS Ventura、Sonoma、Sequoia 共存)并存时,对 APFS 卷组(Volume Group)的识别逻辑容易让人困惑——它默认不显示卷组结构,只列出挂载点和对应卷,而同一卷组内的多个系统卷(如 “Macintosh HD”、“Macintosh HD - Data”、“Macintosh HD - Recovery”)看似独立,实则共享底层容器。
APFS 卷组与 df 的默认行为
df 本身是文件系统级工具,面向挂载点(mount point),而非卷组(Volume Group)或容器(Container)。在 APFS 中,一个容器可包含多个逻辑卷(如 System、Data、Preboot、Recovery),它们各自挂载在不同路径(/、/System/Volumes/Data、/System/Volumes/Preboot 等),df 会把每个挂载点当作独立条目输出,但不会标注它们是否属于同一卷组。
例如:
-
/→ 挂载的是 System 卷(只读) -
/System/Volumes/Data→ 挂载的是 Data 卷(读写) -
/System/Volumes/Preboot→ Preboot 卷 -
/Volumes/Macintosh HD - Data(旧式挂载)→ 实际与/System/Volumes/Data是同一卷
识别真正归属的卷组
要确认哪些卷属于同一个 APFS 容器/卷组,不能依赖 df,而应使用 Apple 提供的底层工具:
-
diskutil apfs list:显示所有 APFS 容器、其内各卷、卷角色(System/Data/Preboot/Recovery)、以及 Volume Group ID(关键字段) -
diskutil apfs listGroups(macOS 13+):直接列出卷组结构,含主系统卷与关联 Data 卷的绑定关系 -
diskutil info /和diskutil info /System/Volumes/Data:对比两者的 APFS Volume Group 字段,ID 一致即属同一组
避免 df 输出误导的操作建议
多系统共存(如双启动 Ventura + Sonoma)时,每个系统都有自己的 APFS 卷组。若在 Sonoma 中运行 df,它只会显示当前启动系统的卷挂载情况(包括该系统的 Data、Preboot 等),不会显示未挂载的另一系统卷(除非手动挂载)。常见误区:
- 看到多个 “Macintosh HD - Data” 条目,误以为是重复或冗余卷 —— 实际可能是不同系统卷的挂载点别名
- 用
df -h查空间,发现/和/System/Volumes/Data显示容量相近 —— 这是因为它们共享同一容器空间,df分别统计了各自卷的可用空间(非叠加) - 想清理“多余”卷时误删 Recovery 或 Preboot —— 它们虽在
df中可见,但不可随意卸载或格式化
实用检查流程
当怀疑卷归属或需验证多系统结构时,推荐顺序执行:
- 运行
diskutil apfs listGroups,快速获知当前系统卷组构成 - 对每个关键挂载点(如
/、/System/Volumes/Data)运行diskutil info [path],提取 APFS Volume Group 和 Device Identifier - 用
diskutil apfs list | grep -A 10 "Volume Group ID"定位该 ID 对应的所有卷 - 若需查看其他系统卷(如未启动的 Ventura),先用
diskutil list找出对应物理标识(如disk1s5),再diskutil info disk1s5查其卷组信息
理解 df 的局限性,转而依赖 diskutil 的 APFS 专用命令,才能准确定位卷组关系。不复杂但容易忽略。










