从磁盘到文件:用 macOS 理解 GPT、APFS、容器和卷

2026 年 6 月 21 日

3187 字

16 分钟

技术

从磁盘到文件:用 macOS 理解 GPT、APFS、容器和卷

很多人第一次看 macOS 的磁盘结构时,都会被几个词绕住:磁盘、分区、容器、卷、文件系统、挂载点。它们看起来都像「硬盘的一部分」,但其实处在不同层级。

最容易混的地方在于,传统磁盘结构常常是「一个分区就是一个卷」,而现代 macOS 默认使用 APFS。APFS 在分区和卷之间又加了一层「容器」,一个容器里可以放多个卷,并且这些卷共享同一片空间。

所以这篇文章不从抽象定义开始,而是按 macOS 上最常见的路径往下看:

物理磁盘
  -> GPT 分区表
  -> 分区
  -> APFS 容器
  -> APFS 卷
  -> 文件和目录

如果是普通 exFAT 移动硬盘,结构通常更简单:

物理磁盘
  -> GPT / MBR 分区表
  -> 分区
  -> exFAT 文件系统卷
  -> 文件和目录

理解这两条线以后,磁盘工具里的 Macintosh HDMacintosh HD - DataPrebootRecoveryVM,以及命令行里的 /dev/disk0/dev/disk0s2disk3,就不会再像一堆突然冒出来的设备。

物理磁盘:真正的存储设备

物理磁盘就是实际存在的存储设备,比如内置 SSD、外置硬盘、U 盘、SD 卡、NVMe 硬盘。

在 macOS 里,它可能显示为:

/dev/disk0
/dev/disk4

但要注意,disk0disk4 这类编号不是永久身份。插拔设备、重启系统、挂载磁盘镜像后,编号都可能变化。判断当前磁盘结构时,更可靠的方式是直接看:

diskutil list

从底层看,物理磁盘本质上是一串连续的块。分区表负责说明:哪些块属于哪个分区。

GPT:磁盘上的分区地图

GPT 是现代 macOS 常见的分区表格式。它不管理文件,也不知道你的照片、文档、应用在哪里。它只记录磁盘被怎么切分。

GPT 通常记录这些信息:

  • 分区从哪里开始。
  • 分区到哪里结束。
  • 分区类型是什么。
  • 分区 GUID 是什么。
  • 分区名称是什么。

所以 GPT 更像磁盘级别的地图。它告诉系统「这块地方是 EFI 分区,那块地方是 APFS 分区」,但不会进入分区内部管理文件。

老设备或某些兼容性场景里也会看到 MBR。对于现在的 Mac 系统盘和大多数现代外置盘,GPT 才是更常见的选择。

分区:磁盘上划出来的一段连续空间

分区是物理磁盘上的一段连续空间。

在 macOS 里,常见命名类似:

disk0      整块磁盘
disk0s1    第 1 个分区
disk0s2    第 2 个分区

一个分区里面可以放很多东西,比如:

  • APFS
  • HFS+
  • exFAT
  • FAT32
  • NTFS
  • Linux ext4
  • EFI System Partition

传统理解里经常是:

一个分区 = 一个文件系统 = 一个卷

比如一个普通 exFAT U 盘,大概率就是这样:

GPT 分区
  -> exFAT 文件系统
  -> 卷名 DATA
  -> 文件

这种情况下,分区和卷看起来几乎是同一个东西。但 APFS 不完全按这个直觉来。

文件系统:文件怎么被组织

文件系统负责定义文件如何存储、目录如何组织、权限如何记录、空闲空间如何管理。

常见文件系统包括:

文件系统常见平台特点
APFSmacOS、iOS、iPadOSApple 的现代文件系统,支持空间共享、快照、克隆、加密等
HFS+老版本 macOSAPFS 之前的 Apple 文件系统
NTFSWindowsWindows 系统盘常用
exFAT跨平台适合 U 盘、移动硬盘,兼容 macOS 和 Windows
FAT32老设备兼容性高,但单文件最大 4 GB
ext4LinuxLinux 常用文件系统
BtrfsLinux支持快照、校验等现代特性
XFSLinux常见于大文件和服务器场景

文件系统会影响很多具体行为,比如文件名规则、文件大小上限、权限模型、是否支持快照、是否区分大小写、是否支持日志或写时复制。

macOS 当前最重要的文件系统是 APFS。它不只是「一种格式」,还带来了容器、空间共享、卷组、快照这些管理方式。

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 是卸载整块磁盘上的所有可卸载卷。

Macintosh HD 和 Macintosh HD - Data 为什么分开

从 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 卷组:把相关卷组合起来

APFS Volume Group 是一组有关联的 APFS 卷。

最典型的就是:

Macintosh HD
Macintosh HD - Data

它们组成系统卷组。这个设计让 macOS 可以同时做到两件事:

  • 系统内容独立、只读、可验证。
  • 用户数据保持可写,并继续出现在熟悉的目录位置。

用户平时看到的是一个整体,但系统内部知道哪些路径属于系统卷,哪些内容来自数据卷。

Preboot、Recovery、VM 是什么

APFS 系统容器里通常还会看到一些系统维护卷:

  • Preboot:保存启动 APFS 系统卷所需的信息。
  • Recovery:保存恢复环境,用于重装 macOS、磁盘工具、终端和系统恢复。
  • VM:保存虚拟内存、交换文件、休眠相关数据。
  • Update:部分 macOS 版本中可能出现,用于系统更新流程。

这些卷一般由系统自动维护,不建议手动删除。尤其是系统盘上的 PrebootRecovery,看起来不常用,但真正出问题时可能就是救命入口。

格式化、抹掉、删除卷、删除分区不是一回事

磁盘工具里的几个操作名字很像,但层级不同。

格式化通常指在某个分区或卷上创建新的文件系统。例如:

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、系统更新回滚和系统恢复能够高效工作的基础之一。

不过快照也会占空间。如果你发现磁盘空间明明删了文件却没有马上回来,除了废纸篓、缓存、云同步之外,也可以检查是否有本地快照仍然保留了旧数据。

EFI 分区:别随便删的启动辅助区域

GPT 磁盘上常见一个 EFI System Partition,也叫 ESP。它通常使用 FAT32,用来保存 UEFI 启动相关文件。

macOS 外置盘有时也会创建 EFI 分区,即使它不一定真的用于启动。系统盘上的 EFI 分区不要随意删除。它平时安静得像不存在,但它属于启动链路的一部分。

RAID 和普通卷的关系

RAID 是把多个磁盘组合起来的技术。比如:

  • RAID 0:条带化,提高性能,没有冗余。
  • RAID 1:镜像,提高冗余。
  • RAID 5:带校验的冗余方案。
  • RAID 10:镜像加条带。

RAID 组合后,操作系统通常会看到一个新的逻辑磁盘。然后这个逻辑磁盘上仍然可以继续建立分区表、分区、文件系统和卷。

也就是说 RAID 不替代文件系统,它在更底层把多个物理磁盘组合成一个逻辑设备。

看到 diskutil 输出时怎么判断

在 macOS 中,快速判断可以看这些线索:

看到的内容通常表示
/dev/disk4整块磁盘,可能是物理磁盘,也可能是合成设备
/dev/disk4s2某块磁盘上的第 2 个分区
GUID_partition_scheme这块磁盘使用 GPT 分区表
EFIEFI System Partition
Apple_APFS这个分区被用作 APFS 物理存储
APFS ContainerAPFS 容器
APFS VolumeAPFS 容器内部的卷
Free SpaceGPT 层面的未分配空间

还有一个非常实用的命令:

diskutil apfs list

它会比 diskutil list 更清楚地展示 APFS 容器、卷、卷组、快照等信息。

总结

macOS 上最重要的结论是:

APFS 不是简单的“一个分区一个卷”。
它更像是在一个分区里建立容器,再由容器管理多个共享空间的卷。

理解这一点之后,再看磁盘工具里的 Macintosh HDMacintosh HD - DataPrebootRecoveryVM,就不会觉得它们是凭空多出来的几块硬盘了。

参考资料

从磁盘到文件:用 macOS 理解 GPT、APFS、容器和卷
https://blog.shishishi3.com/blog/macos-file-system/
作者
豕豕豕
发布时间
2026 年 6 月 21 日
许可协议
CC BY-NC-SA 4.0

即将打开 RSS Feed

RSS 是给订阅器读取的 XML Feed,浏览器直接打开通常会看到 XML 文本,这属于正常现象。

为避免误触和误导跳转,这里会在 5 秒确认后再进入当前语言的 Feed 页面。

输入关键词开始搜索