macOS 文件系统

APFS

现代macOS 从 10.14 版本开始,默认使用 APFS (Apple File System)。这个现代文件系统是从 macOS High Sierra 10.13 (2017年) 阿开始引入,现在已经广泛用于Apple的产品,包括 Macs, iPhone, iPad, Apple Watches 和 Apple TV。

APFS是针对闪存和固态驱动器设计的文件系统,并针对 HFS+ 文件系统做了改进,提供了很多数据一致性和存储空间节约的功能:

  • 使用了 Copy-on-Write(CoW, 写时复制)技术,极大降低了数据损坏的风险

  • APFS使用 容器 (Container) 作为存储数据的关键要素(principal element):

    • 一个单一容器可以保存多个卷(文件系统)并共享存储空间

    • 有关容器的块数量,块大小等信息被保存在Container Superblock,也就是作为每个卷的入口点

    • 通过一个公共的位图(Bitmap)来帮助跟踪整个容器中块的分配

  • 与此同时,卷也有自己的卷超级块(Volume Superblocks)以及存储数据和元数据的独立结构:

    • 所有文件和目录都被一个二进制搜索树结构所管理,也就是文件和目录的 B-Trees (类似 Btrfs ?)

    • 树的节点(nodes)存储键和值(keys and values)

HFS+

HFS+ (Hierarchical File System Plus) 也称为 Mac OS 扩展文件系统,是Mac OS 8.1 发布的默认文件系统。不过从 macOS High Sierra 10.13开始被APFS取代。

HFS+文件系统采用了日志机制来防止结构损坏:

  • 所有文件系统修改都记录在日志区域,这样在发生意外(如断电)时可以立即恢复

  • HFS+的核心结构式卷标头(Volume Header),也就是在HFS+卷开头,包含了一般FS参数以及其他关键元素的位置

    • 大多数服务信息被组织成特殊文件

    • 这些特殊文件可以在卷的不同部分找到,摒弃主要由B树表示

  • HFS+的整个存储空间被分成相等的分配块,每个分配块的状态都记录在类似位图的分配文件中

  • 文件的块会分配到连续的组以降低碎片

参考