什么是苹果公司的新一代文件系统 Apple File System (APFS)？有什么优劣之处？
今天上午去听了 WWDC 关于 APFS 的讲座，具体信息可以去看 Apple 官网上的视频。讲座并没有涉及具体实现，除了 demo 外我也没有用过 APFS，所以对于具体性能/效果的估计肯定会有出入，但是对于这个回答的内容应该没有什么影响。 - 以下内容为了方便非程序员理解，并没有使用例如 reference / cluster / atomic 这样的术语，也省略了一些细节。 我觉得 APFS 最重要的改进在于三点：1. 为 SSD 而设计。2. 原生支持加密。3. 安全性（断电保护），并且解决了很多遗留问题。 可以说 APFS 很多特性之所以能存在，都是基于一个前提：Apple 平台中的 SSD 已经比较普及了。对于机械硬盘来说，我怀疑用 APFS 在一些情况下还不如用 HFS+。近几年 SSD 的普及可能才促使 Apple 现在推出了 APFS 预览版。 SSD 于 HDD 的最大区别是什么？在于 SSD 不需要旋转，所以不同位置的读取速度都是一样的，文件也不需要被连续存储。为此我们不需要磁盘整理了，但是更重要的是，我们在设计文件系统的时候，可以不用再思考「如何优化才能尽可能连续的保存文件？」抛弃了这个假设，文件系统设计师们就可以放心添加很多新功能（注：读写连续保存的文件在 SSD 下依旧会快一点，详情见评论）。 修改时复制。大意就是说，如果你复制一个文件，只是创建了一个快捷方式，而非复制原文件本身。那么如果修改了文件怎么办？APFS 只会把修改的部分另找区域单独保存。也就是说，两个文件一样的部分还是只存在一份。 磁盘快照。和修改时复制的原理一样，磁盘快照不会占用额外的硬盘空间。对，你同时创建一百个，占用空间的增长也是可以忽略不计的。这个功能可以大幅简化本机上 Time Machine 的实现。 动态修改分区大小。为了读取连续性，再加上实现上比较简单不容易出错，HFS+ 中分区大小是固定的。想要修改分区大小，必须抹除整个分区再重新创建。而 APFS 在分区满了的时候，可以动态扩大分区。讲座中 Apple 并没有提及这个新特性，加上上面的「修改时复制」，可能会造成更多的磁盘碎片，而这些磁盘碎片对 HDD 硬盘性能有怎样的影响也是未知数。不过 SSD 并不太需要担心磁盘碎片。 加密。APFS 是唯一原生支持多种加密级别的文件系统（从无加密，到磁盘加密，再到最高级别的文件分别加密）。APFS 同时也支持不同的加密方式。 文件操作安全。APFS 基本上所有操作都是绝对安全的。绝对安全是指：不会因为断电而损坏文件系统。一个操作要不然成功，要不然失败，不会有中间状态。对于以往文件系统来说，因为设计原因，替换文件夹的时候断电有几率出错。 向后兼容性。对于支持 APFS 的操作系统，APFS 可以让旧版本操作系统忽略新版本 APFS 的功能。 保存文件夹大小。打开一个大文件夹的时候，再不需要等很久才知道这个文件夹有多大了。因为 SSD 的特性，可以在几乎不损耗性能的情况下实现这个功能（需要规避 deadlock）。 更高精度和更大空间。这条没啥可说的，不具备这些，怎么敢号称新时代的文件系统？ 兼容性。API和现有 API 兼容，增加了几个新的 API。 统一。现在 iOS，macOS 和其它 Apple 的 OS 都在用不同版本的 HFS+，更新到 APFS 之后就可以统一为一个了。小到 Apple Watch，大到 Mac Pro。这条也算是一个好消息。