很多人第一次看 macOS 的磁盘结构时,都会被几个词绕住:磁盘、分区、容器、卷、文件系统、挂载点。它们看起来都像「硬盘的一部分」,但其实处在不同层级。
最容易混的地方在于,传统磁盘结构常常是「一个分区就是一个卷」,而现代 macOS 默认使用 APFS。APFS 在分区和卷之间又加了一层「容器」,一个容器里可以放多个卷,并且这些卷共享同一片空间。
所以这篇文章不从抽象定义开始,而是按 macOS 上最常见的路径往下看:
物理磁盘
-> GPT 分区表
-> 分区
-> APFS 容器
-> APFS 卷
-> 文件和目录
如果是普通 exFAT 移动硬盘,结构通常更简单:
物理磁盘
-> GPT / MBR 分区表
-> 分区
-> exFAT 文件系统卷
-> 文件和目录
理解这两条线以后,磁盘工具里的 Macintosh HD、Macintosh HD - Data、Preboot、Recovery、VM,以及命令行里的 /dev/disk0、/dev/disk0s2、disk3,就不会再像一堆突然冒出来的设备。
物理磁盘就是实际存在的存储设备,比如内置 SSD、外置硬盘、U 盘、SD 卡、NVMe 硬盘。
在 macOS 里,它可能显示为:
/dev/disk0
/dev/disk4
但要注意,disk0、disk4 这类编号不是永久身份。插拔设备、重启系统、挂载磁盘镜像后,编号都可能变化。判断当前磁盘结构时,更可靠的方式是直接看:
diskutil list
从底层看,物理磁盘本质上是一串连续的块。分区表负责说明:哪些块属于哪个分区。
GPT 是现代 macOS 常见的分区表格式。它不管理文件,也不知道你的照片、文档、应用在哪里。它只记录磁盘被怎么切分。
GPT 通常记录这些信息:
所以 GPT 更像磁盘级别的地图。它告诉系统「这块地方是 EFI 分区,那块地方是 APFS 分区」,但不会进入分区内部管理文件。
老设备或某些兼容性场景里也会看到 MBR。对于现在的 Mac 系统盘和大多数现代外置盘,GPT 才是更常见的选择。
分区是物理磁盘上的一段连续空间。
在 macOS 里,常见命名类似:
disk0 整块磁盘
disk0s1 第 1 个分区
disk0s2 第 2 个分区
一个分区里面可以放很多东西,比如:
传统理解里经常是:
一个分区 = 一个文件系统 = 一个卷
比如一个普通 exFAT U 盘,大概率就是这样:
GPT 分区
-> exFAT 文件系统
-> 卷名 DATA
-> 文件
这种情况下,分区和卷看起来几乎是同一个东西。但 APFS 不完全按这个直觉来。
文件系统负责定义文件如何存储、目录如何组织、权限如何记录、空闲空间如何管理。
常见文件系统包括:
| 文件系统 | 常见平台 | 特点 |
|---|---|---|
| APFS | macOS、iOS、iPadOS | Apple 的现代文件系统,支持空间共享、快照、克隆、加密等 |
| HFS+ | 老版本 macOS | APFS 之前的 Apple 文件系统 |
| NTFS | Windows | Windows 系统盘常用 |
| exFAT | 跨平台 | 适合 U 盘、移动硬盘,兼容 macOS 和 Windows |
| FAT32 | 老设备 | 兼容性高,但单文件最大 4 GB |
| ext4 | Linux | Linux 常用文件系统 |
| Btrfs | Linux | 支持快照、校验等现代特性 |
| XFS | Linux | 常见于大文件和服务器场景 |
文件系统会影响很多具体行为,比如文件名规则、文件大小上限、权限模型、是否支持快照、是否区分大小写、是否支持日志或写时复制。
macOS 当前最重要的文件系统是 APFS。它不只是「一种格式」,还带来了容器、空间共享、卷组、快照这些管理方式。
APFS 的核心变化是「容器」。
一个 GPT 分区可以被用作 APFS 的物理存储空间,然后在里面创建一个 APFS 容器。这个容器再包含多个 APFS 卷。
典型结构像这样:
物理磁盘 disk0
-> GPT 分区 disk0s2
-> APFS Container disk3
-> Macintosh HD
-> Macintosh HD - Data
-> Preboot
-> Recovery
-> VM
这里的 disk3 虽然也叫 disk,但它不是另一块物理硬盘,而是 macOS 合成出来的 APFS 容器设备。
APFS 容器最大的特点是:里面的卷可以共享空间。比如一个 1 TB 的 APFS 容器里有两个卷,卷 A 当前用了 200 GB,卷 B 当前用了 100 GB,那么剩下的空间不是预先固定给某个卷,而是仍然属于容器,可以按需分配给任意卷。
这和传统分区很不一样。传统分区如果提前切成两个 500 GB 分区,那么 A 分区用不完的空间,B 分区不能自动拿来用。APFS 容器则更灵活:多个卷共享容器里的空闲空间。
当然,APFS 卷也不是完全没有边界。需要手动控制时,可以给卷设置 reserve size 和 quota size:前者表示保底空间,后者表示最多能用多少空间。
卷是操作系统可以挂载、命名、显示,并让用户读写文件的逻辑单位。
在 Finder 里你看到的这些名字,通常都是卷:
Macintosh HD
Macintosh HD - Data
Backup
MyDisk
在命令行里,外置卷通常挂载到:
/Volumes/Backup
Windows 里的 C:、D: 也可以理解为卷。Linux 里常见的 /mnt/data、/media/xxx 则是卷被挂载后的访问位置。
所以「卷」强调的是操作系统层面的可用单位;「分区」强调的是磁盘上的连续空间;「APFS 容器」强调的是多个 APFS 卷共享的空间池。
挂载就是把一个卷接入操作系统的目录树。一个外置硬盘卷名叫 Backup,在 macOS 中通常会挂载到:
/Volumes/Backup
没有挂载时,卷可能存在,文件系统也可能完好,但 Finder 里看不到,也无法通过正常路径访问里面的文件。
常见命令包括:
diskutil mount /dev/disk4s2
diskutil unmount /dev/disk4s2
diskutil unmountDisk /dev/disk4
其中 unmount 是卸载某个卷或分区,unmountDisk 是卸载整块磁盘上的所有可卸载卷。
从 macOS Catalina 开始,Apple 把系统文件和用户数据拆开。大致可以理解为:
Macintosh HD 系统卷
Macintosh HD - Data 数据卷
系统卷存放 macOS 系统内容。现代 macOS 中,它是只读的;从 macOS Big Sur 开始,系统卷进一步成为 Signed System Volume,也就是签名系统卷。系统会验证系统内容是否被篡改,如果校验失败,启动过程会被阻止或要求重新安装系统。
数据卷则存放用户文件、应用数据、可写配置等内容。macOS 通过 APFS Volume Group 和 firmlink 等机制,把系统卷和数据卷在用户视角下组合成一个系统。
所以你在 Finder 里看起来像是在访问一个统一的磁盘,底下其实是两个职责不同的卷协同工作:
这也是为什么不要简单地把 Macintosh HD - Data 当成「多出来的重复磁盘」。它是现代 macOS 文件管理体系的一部分。
APFS Volume Group 是一组有关联的 APFS 卷。
最典型的就是:
Macintosh HD
Macintosh HD - Data
它们组成系统卷组。这个设计让 macOS 可以同时做到两件事:
用户平时看到的是一个整体,但系统内部知道哪些路径属于系统卷,哪些内容来自数据卷。
APFS 系统容器里通常还会看到一些系统维护卷:
Preboot:保存启动 APFS 系统卷所需的信息。Recovery:保存恢复环境,用于重装 macOS、磁盘工具、终端和系统恢复。VM:保存虚拟内存、交换文件、休眠相关数据。Update:部分 macOS 版本中可能出现,用于系统更新流程。这些卷一般由系统自动维护,不建议手动删除。尤其是系统盘上的 Preboot 和 Recovery,看起来不常用,但真正出问题时可能就是救命入口。
磁盘工具里的几个操作名字很像,但层级不同。
格式化通常指在某个分区或卷上创建新的文件系统。例如:
diskutil eraseVolume ExFAT DATA /dev/disk4s2
这表示在 /dev/disk4s2 上创建 exFAT 文件系统,并把卷名设为 DATA。
抹掉磁盘则可能更彻底。如果你选中整块物理磁盘抹掉,macOS 可能会重建分区表、创建新分区、创建文件系统和卷:
diskutil eraseDisk ExFAT DATA GPT /dev/disk4
这会影响整块磁盘,原有分区都会消失。
删除 APFS 卷和删除 APFS 分区也不同。
删除 APFS 卷后,空间回到 APFS 容器内部:
APFS Container
-> Volume B
-> Free space inside container
删除 APFS 分区后,空间才回到 GPT 层面的未分配空间:
GPT
-> EFI
-> Free Space
-> Other Partition
这就是很多人疑惑的地方:为什么我删了一个 APFS 卷,磁盘工具里没有出现真正的「未分配空间」?因为你只是删掉了容器内部的卷,而不是删掉 GPT 层面的分区。
APFS 支持快照。快照记录的是某一时刻的文件系统状态,不是一开始就完整复制所有数据。
APFS 使用 Copy-on-Write。刚创建快照时,它占用的额外空间很少;之后文件发生变化,旧数据块被保留下来,快照才能继续看到旧状态。
这也是 Time Machine、系统更新回滚和系统恢复能够高效工作的基础之一。
不过快照也会占空间。如果你发现磁盘空间明明删了文件却没有马上回来,除了废纸篓、缓存、云同步之外,也可以检查是否有本地快照仍然保留了旧数据。
GPT 磁盘上常见一个 EFI System Partition,也叫 ESP。它通常使用 FAT32,用来保存 UEFI 启动相关文件。
macOS 外置盘有时也会创建 EFI 分区,即使它不一定真的用于启动。系统盘上的 EFI 分区不要随意删除。它平时安静得像不存在,但它属于启动链路的一部分。
RAID 是把多个磁盘组合起来的技术。比如:
RAID 组合后,操作系统通常会看到一个新的逻辑磁盘。然后这个逻辑磁盘上仍然可以继续建立分区表、分区、文件系统和卷。
也就是说 RAID 不替代文件系统,它在更底层把多个物理磁盘组合成一个逻辑设备。
在 macOS 中,快速判断可以看这些线索:
| 看到的内容 | 通常表示 |
|---|---|
/dev/disk4 | 整块磁盘,可能是物理磁盘,也可能是合成设备 |
/dev/disk4s2 | 某块磁盘上的第 2 个分区 |
GUID_partition_scheme | 这块磁盘使用 GPT 分区表 |
EFI | EFI System Partition |
Apple_APFS | 这个分区被用作 APFS 物理存储 |
APFS Container | APFS 容器 |
APFS Volume | APFS 容器内部的卷 |
Free Space | GPT 层面的未分配空间 |
还有一个非常实用的命令:
diskutil apfs list
它会比 diskutil list 更清楚地展示 APFS 容器、卷、卷组、快照等信息。
macOS 上最重要的结论是:
APFS 不是简单的“一个分区一个卷”。
它更像是在一个分区里建立容器,再由容器管理多个共享空间的卷。
理解这一点之后,再看磁盘工具里的 Macintosh HD、Macintosh HD - Data、Preboot、Recovery、VM,就不会觉得它们是凭空多出来的几块硬盘了。