写点什么

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:005686
用户头像

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

关注

评论

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

产教融合| 赛意信息·讯方·深信息产教融合交流研讨会暨国产工业软件人才培养战略合作示范基地揭牌仪式圆满举办

科技热闻

等保2.0来临,华为云助力企业更好应对等保合规

神奇视野

Redis布隆过滤器的原理和应用场景,解决缓存穿透

做梦都在改BUG

Java redis 缓存 布隆过滤器

MYSQL 主从复制如何保证数据一致性

做梦都在改BUG

Java MySQL 数据库 主从复制

阿里十亿级并发系统设计+java性能优化实战

做梦都在改BUG

Java 性能调优 并发系统设计

抵御数据风险、保障业务安全,就看华为云数据灾备

YG科技

React Native 9个好用的开发工具盘点

Onegun

React Native 移动开发 跨端框架

AI 圈新晋顶流:AutoGPT,Star量近8万,远超PyTorch

Openlab_cosmoplat

人工智能 开源社区 autogpt

关于软件测试领域的 Happy Path

汪子熙

软件测试 测试 自动化测试 测试自动化 三周年连更

Web平台规模化部署高效编码格式的实践和思考

阿里技术

视频编解码

华为云安全建设安全云生态 保全企业运营安全

神奇视野

华为云数据灾备方案,为数据安全铸造铜墙铁壁

神奇视野

防患于未然,华为云数据灾备解决方案保护企业数据安全

YG科技

阿里P8面试官推荐学习的11大专题:java面试精讲框架文档

做梦都在改BUG

Java java面试 框架

终于学完阿里架构师推荐413页微服务分布式架构基础与实战笔记

做梦都在改BUG

Java 架构 分布式 微服务

全栈开发实战|​名片管理系统的设计与实现(SSM + JSP)

TiAmo

管理系统 数据库开发 全栈开发 SQL Server 三周年连更

开源即时通讯IM框架MobileIMSDK的微信小程序端技术概览

JackJiang

网络编程 IM 即时通信

Shell在日常工作中的应用实践

京东科技开发者

Linux Shell 服务器 shell脚本编程 企业号 4 月 PK 榜

华为云数据灾备方案,助力政企数据无忧

神奇视野

实例分享| anyRTC 部署南京某区城市运行“一网统管”综合调度系统

anyRTC开发者

音视频 指挥调度 融合通信 快对讲 综合调度

selenium源码通读·9 |webdriver/common/desired_capabilities.py-DesiredCapabilities类分析

Python 测试 自动化测试 源码剖析 selenium

企业微信接入系列-扫码绑定/登录

六月的雨在InfoQ

企业微信 三周年连更 企业微信扫码 企业微信接入

等保2.0时代,华为云助力客户做好等保合规

神奇视野

迎政策东风,华为云为企业“等保”建设打开想象空间

神奇视野

手机穿戴设备能力共享,提升丰富交互体验

HarmonyOS SDK

HMS Core

Mybatis 通过接口实现 sql 执行原理解析

做梦都在改BUG

Java mybatis SQL执行

浅论分布式训练中的recompute机制

百度Geek说

机器学习 深度学习 分布式 企业号 4 月 PK 榜

GreptimeDB v0.2 正式发布 | 50%+ PromQL 兼容、写入性能优化、Dashboard with Playground

Greptime 格睿科技

云原生 时序数据库 PromQL 国产时序数据库

Lambda 应用介绍及实现原理剖析

架构精进之路

Java 后端 Lamdba表达式 三周年连更

华为云数据灾备,助力企业业务极速恢复

YG科技

GrowingIO—UEI模型:万物皆可“事件化”

科技热闻

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