2016 年 6 月 14 日,苹果在 WWDC 上正式宣布了全新的文件格式——Apple File System(简称 APFS)。
根据 Apple 提供的初版开发者文档介绍,APFS 的具体解释是:针对闪存/SSD存储进行优化,提供了更强大的加密、写入时复制(Copy-on-write)元数据、空间分享、文件和目录克隆、快照、目录大小快速调整、原子级安全存储基元(Atomicsafe-save primitives),以及改进的文件系统底层技术。
现在,当用户升级 iOS 10.3 系统后,会将整个文件系统升级为APFS,得益于这个新系统,你会发现打开应用、切换后台应用时感觉比之前流畅了,而设备内的可用存储空间也比以前变多了。
是的,苹果这是做好了充分准备,将让 APFS 替代此前旧的文件系统 HFS+。那么 APFS文件系统究竟有什么革新之处呢,它将能够为用户们带来怎样的变化呢?
为什么要做更新
在详解 APFS 之前,我们必须先从 HFS+ 开始讲讲文件系统对苹果的重要性。
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统,也就是我们理解的在存储设备上组织文件的方法。
HFS+ 文件系统是苹果第三代文件系统,最早期型号的 Mac 使用了名为 MFS(Macintosh File System)的文件系统,但很快苹果又在1985 年推出了 HFS 文件系统,那时 Mac 512K 还是苹果的旗舰级产品,这套系统存在了十几年,直到 1998 年,苹果在 HFS 的基础上升级出了
HFS+文件系统,随着拥有 4GB 硬盘的 G3 PowerMacs 一起到来。在那之后,家用电脑的存储能力可以说增长了好几千倍,为了对应不同的设备,HFS+也被分成了多个竞争的方向,拥有不同的功能。
HFS+ 不仅作为 Mac 的文件系统标准从 1998 年沿用至今,而且同样也是 iPod 及 iOS 设备的文件系统基础。
HFS+ 推出之时市面上仍以软盘和 HDD 作为主要存储设备,基本没有为现在流行的闪存和 SSD 作优化。算上原始的 HFS基础,这套老旧的系统已经使用了 30 年。30 年时间里,计算机硬件和软件的发展日新月异,HFS+在应付现代硬件和软件都已经力不从心,存在元数据以大字节序保存、单线程访问、不支持稀疏文件、写时复制等等一大堆缺点,不仅速度很慢,而且用久了之后会出现卡、崩溃之类的情况。
是时候该出现一个全新的替代系统了。
APFS 强在哪?
APFS 在基本的文件系统设计上就远比 HFS+ 先进,HFS+ 为 32 位文件 ID,而 APFS 支持 64 位索引节点,时间戳间距从 HFS+ 的
1 秒降低至 1 纳秒,配合着现代处理器和 SSD 远低于1秒的文件操作时间,所以在低延迟性上足以让用户感受到某种使用体验的飞跃。
APFS 还原生支持 SSD 的 FTL 和 Trim,所以性能上当然更强、空间利用率更高,另外与 HFS+ 固定形式的文件系统结构不同,APFS是个具有扩展性的文件系统,可以在未来增加更多新特性、API,为用户提供更多样化的服务。
通俗地说 APFS 几大新特性:
一、解决了空间占用的不合理
这得益于 APFS 的两大功能:文件克隆(Clones)和空间共享(Space Sharing),以及从克隆衍生的磁盘快照。
克隆改变了以往文件系统复制文件时必须额外腾出空间来储存这份复制文档的问题,在 APFS
下,复制文件不会产生同等的空间占用,它只储存有变化的数据,然后快速地提取出来。这意味着文件的复制速度会变得很快,而无论你复制多少份文件,它都不需要额外腾出大量存储空间来“安置”它们了。
在 macOS 和 iOS中,以往我们重复调用应用,或者应用之间进行调用时,就会涉及到复制,复制一遍,就得腾出双倍空间,复制几遍,就要好几倍空间。但升级为 APFS系统后,不管怎样调用,都只需额外占用 1 倍的空间,可以说彻底解决了应用运行中很关键的存储和读取问题。
在克隆的原理基础上,苹果又进一步给 APFS加入了相似的磁盘快照(Snapshot),解决了备份占用时间长、空间大的问题。快照和克隆一样,都是只有文件发生变化的那一部分才会占用更多的空间,所以你大可以更频繁的去备份数据,而不用担心它们把你的磁盘占满,更不用担心备份和恢复备份浪费掉漫长的时间了。
空间共享解决的可能是大家最为心塞的问题:系统盘已满。传统的硬盘分区,会出现一个存储盘被占得满满的,但别的存储盘又很空的尴尬情况。而 APFS
则利用一项名为 Space Sharing 的新技术,将存储分区模拟成整体的“容器”,容器相对独立,但是在需要的时候,又是归于 APFS的统筹之下,某一个出现容量不够时,整个 APFS下的冗余空间可以随意调配,这意味着每个容器的空间可以根据操作系统的指令,自由收放大小,除非整个存储盘已经填满,否则将再不会出现某个盘空间不足的情况。
二、让文件处理速度变快
APFS 能够让人感觉系统和应用的响应速度变快,除了前面的克隆功不可没,还有 I/O QoS。I/O QoS翻译过来叫做“输入输出进程服务质量”,也叫进程服务质量。当处理关键应用和多媒体应用时,多个输入输出路线会对操作网络造成拥堵,QoS就是确保其中重要进程不受延迟或丢弃,同时保证网络高速运行的技术。
APFS 在借助各项新技术整体提升了与 SSD 的适配度的同时,也通过借助 I/OQoS(服务质量)改善文件操作延迟,对数据的不同访问被划分到不同的优先级中,优先处理那些对用户来说是紧要的——感知明显的操作,所以在使用中,用户就会明显地感觉到“快”。
以往 NFS+在设计的时候,考虑到硬件性能的上下兼容,自带元数据全局锁,为照顾低频处理器,所以一个单位时间内只允许一个进程访问文件系统。但到了如今多核处理器的年代,这显然已经造成了文件处理速度的瓶颈,于是APFS 打开了这把“锁”,相当于给高性能多核处理器和 SSD 之间开放了一条更大的“高速公路”,路面更宽,对“交通”的管制也更规范合理了。
三、让数据变得更加安全
数据安全有两个方面,第一是它使用安全,可恢复,不害怕崩溃、不害怕在读取中丢失;第二个就是它的加密安全。
APFS 比 NFS+ 更先进的一个方面就是它对数据的保护上。首先 APFS 有崩溃保护机制(CrashProtection),用户在编辑文件时,原有数据不会立刻被覆盖掉,修改产生的变量会在文件系统用新的位置来保存,只有确定新数据已经编辑完毕,才会最终完成覆盖。即便是软件崩溃或者发生断电等意外,也可以最大程度确保数据等安全。
加密技术(Encryption)将原先的文件加密方式进行了整合,分为无加密、单密钥加密、多密钥加密三个模式。其中多密钥加密允许用户使用不同的密钥分别给设备、文件、单个数据进行加密,这个不仅是系统级的也是硬件级的,意味着即便是别人获得了你的硬件解锁方法,依然无法获取里面的数据。
iOS 10.3 你能感受到的变化
升级 iOS 10.3 的同学们,同时 iOS 的文件系统也升级到了
APFS,这个升级甚至不需要你做任何额外操作,数据也依旧全部保留完整(当然做备份这个习惯还是要的)。
大家议论不已的升级之后可用空间有不同程度的增加,就是因为 APFS 改善了文件存储机制,同名文件在 iOS 系统中只会占用一份空间。一些大容量 App的调用也不像以前那样,必须有 1 倍多的冗余空间才能完成,自然就为设备存储释放了更多的空间。
升级 iOS 10.3 之后,不少用户反馈开机速度变快,打开、切换应用感觉更快,是因为 APFS
在应用运行中通过进程分配调整优先级,分层次分批次地运行,而反馈到 iOS 设备屏幕上,你会看到应用很快被打开,其实 APFS还在分配其他文件一一启动,只不过在那个瞬间对用户来说,就已经是打开应用了。
当然,各位感兴趣的话也可以试一试 SHSH 备份,看看是不是备份速度也有了提升。
此外,iOS 10.3 在数据安全性上也有了增强。这不仅对用户很重要,其实对开发者同样重要,这意味着更可靠的数据保存,更可靠的 API调用,还能对用户数据进行比较方便的备份了。
APFS 还扩大了巨型文件的支持以及时间的准确度,对于需要精准时间支持的数据,APFS 有了实现基础。支持的单一文件大小上限从现在的 8 exabyte大幅增加到 2^63 bytes,App 的体积限制得到开放了。
不过也需要提醒大家,您设备上的 32 位应用可能过一段时间就无法适应 iOS 了,开发者必须更新将 App 更到 64 位。
更快的时代 这只是序幕
APFS 是不是苹果在软件层面的杀手锏?我们说:是的。
尽管它现在刚刚在 iOS 设备上得到应用,我们也能感受到它对文件管理系统的一系列技术革新,从 HFS+ 到 APFS,必定是飞跃式发展。
未来,APFS 将通用于 iOS、macOS、watchOS 和 tvOS这四个苹果主要的操作系统中,结束苹果此前所说的“混乱”局面,让苹果产品实现文件系统的一致,实现代码的一致,从而让四大系统的更新维护、跨系联动、应用开发、新技术同步上,都实现真正的统一。
从笔者今天升级 iOS 10.3 的过程来看,APFS 对 HFS+ 的替代兼容很安全,没有发生数据丢失,也没有发生 App 无法访问的情况。但macOS 上涉及到磁盘分区还有更复杂的问题,我们还要进一步看 APFS 针对更多设备的表现。而 APFS也需要一段磨合时间,才能让大家看到更多的进化成果。
无论如何,这是一个必须更快的时代,APFS既是这个时代呼之欲出的产物,也是推动苹果设备变快甚至未来可能更多设备变快的技术助力。尝试和享受新科技,这就是升级 iOS 10.3 的理由,这只是开始。