苹果自我革命的APFS文件系统

 

苹果的iOS 10.3支持了全新的文件系统——Apple File System(APFS)。这一全新文件系统专门针对闪存/SSD进行优化,提供了更强大的加密、写入时复制元数据、空间分享、文件和目录克隆、快照、目录大小快速调整、原子级安全存储基元,以及改进的文件系统底层技术。

为什么不继续使用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+ 在应付现代硬件和软件都已经力不从心,存在元数据以大字节序保存、单线程访问、不支持稀疏文件、写时复制等等一大堆缺点,不仅速度很慢,而且用久了之后会出现卡、崩溃之类的情况。Apple生态圈急需一种能够取代HFS+的全新文件系统。

APFS的优势有哪些?

全新开发的APFS除了支持HFS+的全部功能外,还在以下方面有了突出的改进:

• 与使用32位文件ID的HFS+不同,APFS可支持64位索引节点(Inode)编号,借此一个卷最多可存储超过900亿亿个文件。

• HFS+只能同时对整个存储设备的文件系统进行初始化,APFS提供了一种可扩展存储块分配程序(Extensible block allocator),可对数据结构进行延迟初始化(Lazy initialization),进而大幅改善大容量卷的性能。

• APFS支持三种模式的加密:不加密;适用于元数据和用户数据的单密钥加密;以及适用于元数据、文件,甚至文件中特定部分的多密钥加密。

此外APFS还包含其他改善和新功能,例如稀疏文件、改进的TRIM操作,内建对扩展属性的支持等。

脱胎换骨的APFS已经具备与BSD HAMMER、Linux btrfs,或OpenZFS等现代化文件系统不相上下的功能和特性,通俗地说 APFS 几大新特性:

一、存储空间使用更加有效

得益于 APFS 的两大功能:文件克隆(Clones)和空间共享(Space Sharing),以及从克隆衍生的磁盘快照。

克隆改变了以往文件系统复制文件时必须额外腾出空间来储存这份复制文档的问题,在 APFS 下,复制文件不会产生同等的空间占用,它只储存有变化的数据,然后快速地提取出来。这意味着文件的复制速度会变得很快,而无论你复制多少份文件,它都不需要额外腾出大量存储空间来“安置”它们了。

在克隆的原理基础上,苹果又进一步给 APFS 加入了相似的磁盘快照(Snapshot),解决了备份占用时间长、空间大的问题。快照和克隆一样,都是只有文件发生变化的那一部分才会占用更多的空间,所以你大可以更频繁的去备份数据,而不用担心它们把你的磁盘占满,更不用担心备份和恢复备份浪费掉漫长的时间了。

空间共享解决的可能是大家最为心塞的问题:系统盘已满。传统的硬盘分区,会出现一个存储盘被占得满满的,但别的存储盘又很空的尴尬情况。而 APFS 则利用一项名为 Space Sharing 的新技术,将存储分区模拟成整体的“容器”,容器相对独立,但是在需要的时候,又是归于 APFS 的统筹之下,某一个出现容量不够时,整个 APFS 下的冗余空间可以随意调配,这意味着每个容器的空间可以根据操作系统的指令,自由收放大小,除非整个存储盘已经填满,否则将再不会出现某个盘空间不足的情况。

二、更快的文件处理性能

APFS专门针对闪存进行了优化。SSD虽然可以模拟传统机械硬盘的“块”,但底层技术与机械硬盘截然不同。SSD底层的管理工作是由一种名为闪存转换层(FTL,Flash Translation Layer)的软件负责处理的。FTL与文件系统极为类似,可以在块地址和介质内部的位置之间创建虚拟映射(转换)。整个堆栈,包括SSD、FTL,以及文件系统都由Apple控制,可以更有针对性地对不同组件进行优化。

此外APFS还提供了对TRIM的支持。TRIM是ATA协议中的一个命令,可以让文件系统告诉SSD(其实是指示SSD中的FTL)某些空间是空闲的。可用空间越多,SSD的性能表现会越好,甚至大部分SSD所拥有的存储容量会超过标称值。

APFS 通过I/O QoS(服务质量)对不同的访问请求划分优先级来改善文件操作延迟,对数据的不同访问被划分到不同的优先级中,优先处理那些对用户来说是紧要的——感知明显的操作,所以在使用中,用户就会明显地感觉到“快”。

三、数据更加安全

安全与隐私是APFS的设计基础。Apple的很多设备和操作系统早已具备加密功能,OS X 10.7 Lion开始提供全磁盘加密功能;iOS 4开始可通过专用数据保护技术将每个文件使用一个专用密钥进行加密。APFS对这两种功能进行整合,为文件系统元数据提供了一种统一的加密模式。

加密是APFS原生支持的特性,用户可以针对每个卷选择下列任何一种加密方法:不加密,统一用一个密钥加密,或多密钥加密(针对每个文件使用专用密钥加密,同时针对敏感的元数据使用一个单独的密钥)。多密钥加密可确保哪怕设备物理安全受到威胁,依然可以保障用户数据的完整性。取决于具体硬件,APFS加密可使用AES-XTS或AES-CBC算法。

这种加密机制还实现了一个额外的功能:更为快速的数据擦除。通常情况下当用户从设备中删除文件后,可以通过市面上提供的很多(免费或收费的)反删除软件找回删掉的内容。为避免这种情况,以往如果需要删除包含机密信息的文件,或需要将存储过私密数据的设备退役给他人使用,必须首先使用抹掉功能擦除存储设备,并可能要将这一过程执行多遍。取决于存储设备容量,整个过程将耗费极多时间。

未来,APFS 将通用于 iOS、macOS、watchOS 和 tvOS 这四个苹果主要的操作系统中,结束苹果此前所说的“混乱”局面,让苹果产品实现文件系统的一致,实现代码的一致,从而让四大系统的更新维护、跨系联动、应用开发、新技术同步上,都实现真正的统一。

Categories: 科技