写点什么

Apple 为 iOS 和 macOS 提供全新文件系统 APFS

  • 2016-06-29
  • 本文字数:1199 字

    阅读完需:约 4 分钟

Apple 在 WWDC 2016 大会上还发布了一个名为 APFS 的全新文件系统,一经发布就引起了大量开发者的关注。根据 Apple 提供的初版开发者文档介绍,APFS:

针对闪存 /SSD 存储进行优化,提供了更强大的加密、写入时复制(Copy-on-write)元数据、空间分享、文件和目录克隆、快照、目录大小快速调整、原子级安全存储基元(Atomic safe-save primitives),以及改进的文件系统底层技术。

与 HFS+ 的简单对比

根据 Apple 的介绍,APFS 支持 HFS+ 的全部功能,并在下列几方面有所改进:

  • 与使用 32 位文件 ID 的 HFS+ 不同,APFS 可支持 64 位索引节点(Inode)编号,借此一个卷最多可存储超过 900 亿亿个文件。
  • HFS+ 只能同时对整个存储设备的文件系统进行初始化,APFS 提供了一种可扩展存储块分配程序(Extensible block allocator),借此可对数据结构进行延迟初始化(Lazy initialization),进而大幅改善大容量卷的性能。
  • APFS 支持三种模式的加密:不加密、单密钥加密,以及多密钥加密,并可管理每个文件所用的密钥和元数据密钥。

在 HFS+ 的基础上 APFS 还提供了其他改善和新功能,包括稀疏文件(Sparse file)、改进的 TRIM 操作,内建对扩展属性的支持等。

APFS 的新功能

APFS 还包含多个与 ZFS 以及 HAMMER 等现代化文件系统相似的高级功能,多年前 Apple 曾尝试将其移植到 OS X:

  • 为确保发生崩溃等故障后文件不受损,APFS 提供了一种全新的写入时复制(Copy-on-write)机制。
  • 空间分享(Space sharing)技术使得共享物理卷上的多个文件系统可以灵活扩展,而无需进行硬性分区操作。
  • 克隆功能使得用户能够为文件和目录创建副本,在对这些副本进行更改前,副本完全不占用额外的存储空间,并且修改后也只需要在磁盘上存储改动过的文件块。通过强制使用 copyItemAtURL:toURL:error: copyItemAtPath:toPath:error: NSFileManager 方法,这一过程对用户来说是完全透明的。
  • 快照是指为整个文件系统创建的只读实例,可用于实现差异备份。但目前开发者还无法使用 API 管理快照。
  • 原子化存储(Atomic save)可通过一笔事务将一批文件或目录以整体方式统一更名。这种全新行为是通过强制实施 moveItemAtURL:toURL:error: moveItemAtPath:toPath:error: NSFileManager 方法以透明的方式实现的。

使用 APFS

APFS 目前以开发者预览版的方式通过 macOS 10.12 发布,该版本还提供了一个操作这一全新文件系统的新版 hdutil 命令。用户可以使用下列命令创建 APFS 分区:

$ hdiutil create -fs APFS -size 1GB foo.sparseimage由于是开发者预览版,Apple 也提醒了开发者在使用 APFS 时可能遇到故障和数据丢失等情况。此外 APFS 还存在一些局限,例如:

  • 无法用于启动磁盘。
  • 文件和目录名称大小写敏感。
  • 无法用于 Time Machine、FileVault 或 Fusion 驱动器。

按照计划 APFS 将于 2017 年正式发布,最终将取代 Apple 已沿用超过 30 年的 HFS+ 文件系统。

查看英文原文: A Look at APFS, Apple’s New File System for iOS and macOS

2016-06-29 19:005840
用户头像

发布了 283 篇内容, 共 117.7 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

mybatis分页插件如何实现?

田维常

mybatis

警惕”被讲故事“ | 读《叙事改变人生》

邓瑞恒Ryan

读书笔记 哲学 创业心态 社会学 世界观

实战排查|为什么遮挡推流摄像头,会导致播放绿屏?

阿里云CloudImagine

音视频 WebRTC RTC bug RTMP

智慧社区服务平台开发,平安小区建设

t13823115967

智慧城市 平安小区

原来只想简单看一下String源码,没想到整理了这么多知识点

小Q

Java 学习 编程 面试 string

年终盘点 | 七年零故障支撑 双11 的消息中间件 RocketMQ,怎么做到的?

阿里巴巴云原生

阿里云 开源 云原生 中间件 消息队列

“懂行”为舟,助互联网驶向“新蓝海”

tron波场智能合约系统软件开发|tron波场智能合约APP开发

系统开发

智能警务平台搭建,公安一体化警务实战解决方案

t13823115967

智慧公安 智慧警务系统开发

iOS面试基础知识 (二)

iOSer

ios 面试

深入浅出 Go - sync/atomic 源码分析

helbing

Go 语言

刚刚,阿里云知行动手实验室正式开放公测了

阿里巴巴云原生

阿里云 开发者 云原生 k8s dubbo

六个步骤,从零开始教你搭建基于WordPress的个人博客

华为云开发者联盟

网站 WordPress 搭建

为了SpringBoot提交Tomcat执行,我总结了这么多

996小迁

Java tomcat 架构 springboot

JVM的艺术—JAVA内存模型

Java jdk JVM

我是如何拿到蚂蚁金服offer?看完2020年Java研发岗复盘经验总结,是时候让面试官懵逼了

比伯

Java 编程 架构 面试 程序人生

十一周作业

走走,停停……

实践大于一切!Alibaba最新MySQL性能优化+高可用架构全彩版PDF

Java架构追梦

Java MySQL 学习 架构 面试

3. 搞定收工,PropertyEditor就到这

YourBatman

Spring Framework 类型转换 PropertyEditor

微信昵称可以加雪花了,个性又好看

程序员生活志

工具 微信名 雪花

线程池的7种创建方式,强烈推荐你用它...

王磊

Java

记一次网络请求连接超时的事故

AI乔治

Java 架构 HTTP

智能合约DAPP软件系统开发

系统开发

IT民工闲话·点一盏灯

IT民工大叔

成长 IT 传承

英特尔正式发布全新一代内存和存储产品

E科讯

让你的产品更懂世界:如何提升场景文本识别中的语言模型

华为云开发者联盟

神经网络 文字 语义

《Tensorflow:实战Google深度学习框架》.pdf

田维常

未雨绸缪,数据保护之NBU介质备份

华为云开发者联盟

安全 数据 保护

“懂行人”携手互联网,创造未来无限可能

Android uni-app 封装原生插件

anyRTC开发者

uni-app android 音视频 跨平台 聊天室

Apple为iOS和macOS提供全新文件系统APFS_移动_Sergio De Simone_InfoQ精选文章