苹果发布新的文件系统APFS,致力于提高旗下系统的存储效率

本文主要是介绍苹果发布新的文件系统APFS,致力于提高旗下系统的存储效率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本周,苹果公司发布了macOS Sierra,这是OS X EI Capitan的继任者,新的Mac操作系统。也引入了下一代文件系统Apple File System(APFA)和针对SSD的一系列优化。

在旧金山举办的16年WWDC大会上,苹果宣布新的APFS将作为公司旗下所有操作系统的文件系统,包括iOS、macOS、tvOS和watchOS。

新的文件系统支持对文件和文件夹的数据克隆和数据快照(在文件系统的卷中的一个只读对象)。

快照技术在数据中心中作为一个数据回滚策略已经使用了十几年了,因为它可以让备份变得更高效,可以随时让系统针对某一个点进行快照存储。

苹果公司称,新的OS和文件系统专门为NAND闪存优化(SSD),支持“强加密(strong envryption)”,可以通过自动上传不常用的、时间长的数据到云端来节省本地空间。苹果列出了支持的自动上传的旧文件类型,包括:很少打开的ePub电子书、屏幕截图、全画幅照片、视频、广播、电子表格程序、Mac App Store的程序、PPT、和文本/word文件。

Enderle Group的首席分析师Rob Enderle说,他不认为用户希望他们的设备会在后台静默地迁移他们的文件和照片。对于BOYD用户来说,自动上传功能甚至侵犯了他们的合作安全条款,Rnderle说。“软件在后台自动将旧文件上传到云端,就像让用户抓狂的iTunes一样。”Objective Analysis市场研究部的Jim Handy说。“对计算机来说这真是一件好事吗?”

Handy说,从技术上讲,任何可以节省SSD或机械硬盘空间的方式都是好的,这样可以让系统有更多可写空间,运行更快速。“这是iPhone用户可能会遇到的一个问题,自动更新的软件正在一点点蚕食iPhone的存储空间,直到可用空间很少,可使用的功能很有限——即使你删掉了所有的个人照片,音乐,视频和下载的App。”

“APFS的快照和自我复制功能对数据中心来说(SANs)是两个很好的特性。但是他也说,这也仅仅就好到和使用另一个存储设备做设备一样。“如果对一个笔记本的操作系统来说,这两种方案都不可行,除非它将所有的快照和备份都上传到云端,但是一旦计算机不能联网,所有的努力都会白费。”Handy说。

他还对苹果文件系统的加密系统感到奇怪,因为今天的很多SSD本身都已经支持加密了。“现在大约一半的SSD都支持加密功能,而且不损失任何性能。”Apple对此没有回应。

从AFPS的文档中看,系统支持用户对每个卷选择几种不同的加密方式,包括:不加密、单密钥加密、多密钥加密。APFS加密根据硬件的不同选择AES-XTS或AES-CBC。

桌面系统从OS X 10.7 Lion开始就支持全硬盘加密了。在iOS方面,从iOS 4开始,支持针对每个文件通过自己的密钥进行加密(来源iOS安全手册)。“APFS现在结合两者,对元数据采用统一的加密方式。”Apple的手册中提到。

针对SSD的优化方面,APFS——像HFS+一样,它本身也是基于HFS+的——支持TRIM操作,可以通过删除不再使用的数据块来释放空间。

苹果称:”APFS的TRIM操作是异步的,在文件被删除或者申请的空间被收回时候执行。这样可以确保这些操作只进行一次,可以保证存储的稳定性。“

苹果还在APFS引入了“空间共享”,可以让不同的文件系统在同一个物理卷下共享空间。苹果称,“不像死板的分区一样,APFS可以在不重新分区的情况下,调整每个卷的大小。而不是事先分好固定大小的区。”

APFS的每一个卷都报告相同的可用空间,即硬盘的总可用空间。这项特性和企业的“自动精简配置(thin provisioning)”差不多。自动精简配置可以让卷在必要的时候调整大小,而不是需要管理员实现分好固定大小的区。苹果举例说,比如现在有一个100G的设备,A区使用了10G,B区使用了30G,那么A区和B区的可用空间都是70G。

据APFS的开发者文档称,APFS基础的存储单元是一个容器,和GUID分区表(GPT)1:1映射,有自己的空间分配体系和保护体系。

原文:With APFS, Apple focuses on storage efficiency in its OSes
作者: Lucas Mearian
翻译:赖信涛
责编:钱曙光

这篇关于苹果发布新的文件系统APFS,致力于提高旗下系统的存储效率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/269990

相关文章

基于C++的UDP网络通信系统设计与实现详解

《基于C++的UDP网络通信系统设计与实现详解》在网络编程领域,UDP作为一种无连接的传输层协议,以其高效、低延迟的特性在实时性要求高的应用场景中占据重要地位,下面我们就来看看如何从零开始构建一个完整... 目录前言一、UDP服务器UdpServer.hpp1.1 基本框架设计1.2 初始化函数Init详解

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

Java多种文件复制方式以及效率对比分析

《Java多种文件复制方式以及效率对比分析》本文总结了Java复制文件的多种方式,包括传统的字节流、字符流、NIO系列、第三方包中的FileUtils等,并提供了不同方式的效率比较,同时,还介绍了遍历... 目录1 背景2 概述3 遍历3.1listFiles()3.2list()3.3org.codeha

MySQL 批量插入的原理和实战方法(快速提升大数据导入效率)

《MySQL批量插入的原理和实战方法(快速提升大数据导入效率)》在日常开发中,我们经常需要将大量数据批量插入到MySQL数据库中,本文将介绍批量插入的原理、实现方法,并结合Python和PyMySQ... 目录一、批量插入的优势二、mysql 表的创建示例三、python 实现批量插入1. 安装 PyMyS

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

MySQL中存储过程(procedure)的使用及说明

《MySQL中存储过程(procedure)的使用及说明》存储过程是预先定义的SQL语句集合,可在数据库中重复调用,它们提供事务性、高效性和安全性,MySQL和Java中均可创建和调用存储过程,示例展... 目录概念示例1示例2总结概念存储过程:在数据库中预先定义好一组SQL语句,可以被程序反复调用。

MySQL存储过程实践(in、out、inout)

《MySQL存储过程实践(in、out、inout)》文章介绍了数据库中的存储过程,包括其定义、优缺点、性能调校与撰写,以及创建和调用方法,还详细说明了存储过程的参数类型,包括IN、OUT和INOUT... 目录简述存储过程存储过程的优缺点优点缺点存储过程的创建和调用mysql 存储过程中的关键语法案例存储

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1