超能课堂(77):苹果自我革命的APFS文件系统是什么?

这年头智能手机的硬件水平都已达一定的高度,特别是旗舰级手机,各家的机皇都是有多强上多强,所搭载的SoC、存储性能都在伯仲之间、难分高下,所以便有厂商开始在软件方面着手配合硬件进行优化,比如我们在前几期超能课堂中,提到过华为Mate 9上使用的F2FS文件系统,而从今年二月初iOS 10.3开始,苹果也在iPhone上加入了对APFS文件系统的支持,这其实早在去年WWDC 2016上,苹果便已经公布这个全新的文件系统,那么APFS文件系统究竟有什么革新之处?

APFS是什么?

APFS的英文全称为Apple File System,这也就很简单地直译为“苹果文件系统”,为64位文件系统,单个分区支持9百亿亿文件,为取代苹果延用了30多年之久的HFS+文件系统而生,加入了很多现代文件系统应有的新功能特性。

作为新一代文件系统,苹果在去年的WWDC 2016开发者大会上表示,APFS通用于iOS、macOS、watchOS和tvOS这四个苹果主要的操作系统上,由于目前苹果大部分设备都采用闪存或SSD,所以APFS完全为这类存储作了优化设计(这点与F2FS文件系统的特性一样),并把加密性作为新文件系统最主要的功能改进。

APFS对苹果有多重要?

现有的HFS+实在太落后了

APFS文件系统对苹果有多重要,这就要提到苹果现有的文件系统HFS+。HFS+文件系统由苹果从HFS文件改进而来, 早在1998年就开始在苹果设备上使用(HFS在1984年),推出之时市面上仍以软盘和HDD作为主要存储设备,所以HFS+基本没有为现在流行的闪存和SSD作优化。HFS+在应付现代硬件和软件都已经力不从心,HFS+文件系统存在元数据以大字节序保存、单线程访问、不支持稀疏文件、写时复制等等一大堆缺点。

苹果现有设备的文件系统不统一

尽管苹果几乎所有设备和系统都是基于HFS文件系统,但实际上每个设备由于需要的特性不同(这其实也归咎于HFS的落后),导致采用的 文件系统却有多种,比如macOS上有HFS、HFS+和HFS+J,而iPhone、Apple Watch有用到HFS+和HFS+ Per-File Crypto,存储管理又有Fusion Drive和CoreStorage等等,相当混乱,所以苹果希望功能更先进、更齐全的APFS能改变这个现状,成为苹果设备中统一的文件系统。

苹果现在的文件系统太混乱

APFS功能特性?

APFS在基本的文件系统设计上就远比HFS+先进,HFS+为32位文件ID,而APFS支持64位索引节点,时间戳间距从HFS+的1秒降低至1纳秒,适应回现代处理器和SSD远低于1秒的文件操作时间,具备低延迟的特性,APFS还原生支持SSD的FTL和Trim,所以性能理论上会更强、空间利用率更高,另外与HFS+固定形式的文件系统结构不同,APFS是个具有扩展性的文件系统,可以在未来增加更多新特性、API。

APFS与HFS+对比

APFS文件系统上新增的Clone、Snapshot、Crash Protection等多个功能,这得益于Copy-On-Write(写时复制、简称COW),该技术主要作用为文件在进行修改操作时, 会先复制一份新文件,用户修改的实际是在这份新文件上,原来文件不会作修改,而等修改完成后新文件再替换掉原文件,这能充分发挥存储的读写性能和保持文件的完整性 ,而在修改过程中就算出现意外,也能保证原文件不掉失。

Clone(克隆)

Clone指的是APFS在执行复制文件操作时,实际只是创建了一个类似快捷方式的副本,文件本身并没有增加多一份出来、占多一份空间,而当文件作了修改后,也只会保存修改的部分,这对于苹果系统采取的沙盒运行APP机制相当有用,可以节省APP的占用空间。

Clone演示

Snapshot(快照)

在APFS文件系统中作了分区快照后,无论原分区内的文件作了增加还是删除操作,快照分区内的文件都不会发生变化,这提高了文件备份效率,还可以实现撤销操作,这有利iTunes、Time Machine等备份功能。

Snapshot演示

Space Sharing(空间共享)

Space Sharing为解决在单个磁盘上分区固定位置、固定大小的限制,允许在不用重新分区的情况下,动态调整分区的大小,APFS格式的磁盘实际为单个容器(container),多个分区共享容器的空余容量。

支持动态调整容量

比如在一个100GB的APFS格式磁盘上,有一个10GB的A分区和一个20GB的B分区,那么A和B分区都可以任意用到剩下的70GB,这样在A分区中,即使存储一个超过10GB的文件也没问题,最大可以去到80GB。

Encryption(加密)

APFS可同时支持无加密、单密钥(Single-key)到多密钥(Multi-key)三种加密方式,单密钥即为普遍采用的全盘加密,而多密钥加密为APFS独有的加密方式,文件数据采用单个文件级别加密,而元数据采用独立密匙,这使得就算用户的硬件加密被破解,也无法在系统中获取用户的文件。

Crash Protection(防崩溃)

由于Copy-on-write的加入,现在APFS不再需要两次写入的日志式文件保护来确保元文件数据不会崩溃。

Sparse Files(稀疏文件)

稀疏文件为一种文件存储方式,在创建文件时就预留连续存储信息,但未实际占用存储空间,而到只有真正写入数据时,才会分配空间,现在APFS文件系统也加入支持。

Fast Directory(快速目录大小统计)

在以往的HFS+文件系统计一个目录的总大小需要花费较长的时间,但在APFS中,目录的大小信息文件为分开保存,并用原子操作(Atomic Operation)来更新这个信息文件,这部分额外占用的文件为小增量增长。

Atomic Safe-Save(原子级安全保存)

在一个集群或目录类文件中进行重命名等原子级文件操作时,如果无法完全完成,原文件数据不会被替换或删除,这也体现了APFS的绝对一致性,要求文件只有一定能够修改成功的情况下,文件才会被保存,否则不会进行操作。

HFS compatibility(向下兼容)

APFS依然向下兼容HFS、HFS+文件系统,包括原来大部分的开发特性。

APFS在什么设备上可以用到?

APFS将统一iOS、watchOS、macOS和tvOS上的文件系统,所以包括有支持iOS 10.3及以后系统的iPhone、iPad、iPod Touch,Apple Watch(系统版本未定),支持macOS Sierra 10.12.4及以后系统的MacBook、MacBook Air、MacBook Pro、Mac mini、iMac、Mac Pro和Apple TV(系统版本未定)等苹果设备都将用到这个新的文件系统。

苹果主流的设备都支持APFS

最新iOS 10.3 beta版上已经换成APFS系统、而macOS Sierra早已在底层支持APFS,但macOS 10.12.4 beta上才换用为主要文件系统。普通用户在即将到来iOS 10.3正式版和macOS Sierra 10.12.4正式版上,就能体验到APFS带来的新变化。

APFS实际表现初体验?

目前APFS文件尚未正式、完整地应用到苹果设备上,所以这里仅为简单的初体验。在macOS Sierra 10.12.3正式版系统中,使用hdiutli命令创建一个1GB的APFS文件系统分区后,与一个1GB的Mac OS扩展(即HFS+J)文件系统分区对比,在占用空间上APFS确实会更小。

左为APFS,右为Mac OS扩展

iOS方面,这里选择把iPhone SE刷至iOS 10.3 beta3,用Passmark和Geekbench简单跑了一下测试,并对比回iOS 10.2正式版,在两个测试结果中,APFS的表现略差于原来的文件系统,但也不排除是这两个测试APP还没有对APFS文件系统作优化支持。

存储性能

GeekBench 4

这样来看,APFS文件系统在当前对于开发者的意义更大,很可能普通消费者还不会从中获得很大的体验改善,至少在所谓的节省空间、提升性能和加强安全性上,APFS还需要点时间来发挥出优势,但APFS是足够先进和优秀的文件系统,对于未来苹果设备有极其重要的意义,未来更成熟的表现值得我们期待。

(0)

相关推荐