ZFS

维基百科,自由的百科全书
跳转到: 导航, 搜索
ZFS
开发者 Sun Microsystems
全称 ZFS
发布 2005年11月 (OpenSolaris)
结构
目录内容 可扩展哈希表
限制
最大文件尺寸 16 exabytes
最大文件数量 248
最大卷容量 16 exabytes
功能
岔流 是 (called Extended Attributes)
属性 POSIX
文件系统权限 POSIX
透明压缩
透明加密 是(当前正处于beta版)
操作系统支持 Sun Solaris, Apple Mac OS X 10.5, FreeBSD, Linux (通过用户空间文件系统

ZFS 源自于Sun MicrosystemsSolaris操作系统开发的文件系统。ZFS是一个具有高存储容量、文件系统与卷管理概念整合、崭新的磁盘逻辑结构的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS是一个使用CDDL协议条款授权的开源项目。

目录

[编辑] 历史

ZFS的设计与开发由Sun公司的Jeff Bonwick所领导的一支团队完成。最早宣布于2004年9月14日[1]2005年10月31日并入了Solaris开发的主干源代码。[2] 并在2005年11月16日作为OpenSolaris build 27的一部分发布。 Sun在OpenSolaris社区开张1年后的2006年六月,将ZFS整合进了Solaris 10 6/06版本更新。[3]

ZFS是"Zettabyte File System"的首字母缩写。[4]

[编辑] 存储池

不同于传统文件系统需要驻留于单独设备或者需要一个卷管理系统去使用一个以上的设备,ZFS建立在虚拟的,被称为“zpools”的存储池之上 (存储池最早在AdvFS實現[5],並且加到後來的Btrfs)。每个存储池由若干虚拟设备(virtual devices, vdevs)组成。这些虚拟设备可以是原始磁盘,也可能是一个RAID1镜像设备,或是非标准RAID等级的多磁盘组。于是zpool上的文件系统可以使用这些虚拟设备的总存储容量。

可以使用磁盘限额以及设置磁盘预留空间来限制存储池中单个文件系统所占用的空间。

[编辑] 容量

ZFS是一个128位的文件系统,这意味着它能存储1800亿亿(18.4 × 1018)倍于当前64位文件系统的数据。ZFS的设计如此超前以至于这个极限就当前现实实际可能永远无法遇到。项目领导Bonwick曾说:“要填满一个128位的文件系统,将耗尽地球上所有存储设备。除非你拥有煮沸整个海洋的能量,不然你不可能将其填满。(Populating 128-bit file systems would exceed the quantum limits of earth-based storage. You couldn't fill a 128-bit storage pool without boiling the oceans.)”[1]

以下是ZFS的一些理论极限:

  • 248 — 任意文件系统的快照数量 (2 × 1014)
  • 248 — 任何单独文件系统的文件数 (2 × 1014)
  • 16 exabytes (264 byte) — 文件系统最大尺寸
  • 16 exabytes (264 byte) — 最大单个文件尺寸
  • 16 exabytes (264 byte) — 最大属性大小
  • 128 Zettabytes (278 byte) — 最大zpool大小
  • 256 — 单个文件的属性数量(受ZFS文件数量的约束,实际为248)
  • 256 — 单个目录的文件数(受ZFS文件数量的约束,实际为248)
  • 264 — 单一zpool的设备数
  • 264 — 系统的zpools数量
  • 264 — 单一zpool的文件系统数量

作为对这些数字的感性认识,假设每秒钟创建1,000个新文件,达到ZFS文件数极限需要大约9,000年。

在辩解填满ZFS与煮沸海洋的关系时,Bonwick写到:

尽管我们都希望摩尔定律永远延续,但是量子力学给定了任何物理设备上计算速率(computation rate)与信息量的理论极限。举例而言,一个质量为1公斤,体积为1的物体,每秒至多在1031信息 上进行1051次运算[6]。一个完全的128位存储池将包含2128 个块 = 2137 字节 = 2140 位;应此,保存这些数据位至少需要(2140 位) / (1031 位/公斤) = 1360亿公斤的物质。

[编辑] 写时拷贝事务模型

ZFS使用一种写时拷贝事务模型技术。所有文件系统中的块指针都包括256位的能在读时被重新校验的关于目标块的校验和。含有活动数据的块从来不被覆盖;而是分配一个新块,并把修改过的数据写在新块上。所有与该块相关的元数据块都被重新读、分配和重写。为了减少该过程的开销,多次读写更新被归纳为一个事件组,并且在必要的时候使用日志来同步写操作。

[编辑] 快照与克隆

写时拷贝更先进的技术是当ZFS写新数据时,包含旧数据的块被保留着,提供了一个可以被保留的文件系统的快照版本。由于ZFS在读写操作中已经存储了所有构建快照的数据,所以快照的建立非常快。而且由于任何文件的修改都是在文件系统和它的快照之间共享的,所以ZFS的快照也是空间优化的。

可写快照("克隆")也可以被创建。结果就是两个独立的文件系统共享一些列的块。当任何一个克隆版本的文件系统被改变时,新的数据块为了反映这些改变而创建,但是不管有多少克隆版本的存在,未改变的块仍然在其他的克隆版本中共享。

[编辑] 动态条带化

ZFS能动态条带化所有设备以最大化吞吐量。当额外的设备被加入到 zpool 中的时候,条带宽度会自动扩展以包含这些设备。这使得存储池中的所有磁盘都被用到,同时负载被平摊到所有的磁盘上。

[编辑] 可变块尺寸

ZFS使用可变大小的块,最大可至128KB。现有的代码允许管理员调整最大块大小,这在大块效果不好的时候有用。未来也许能做到自动调整适合工作量的块大小。[需要引用]

如果数据压缩(LZJB)被启用,可变块大小需要被用到。如果一个数据块可被压缩至一个更小的数据块,则小的数据块将使用更少的存储和提高吞吐量(代价是增加CPU压缩和解压缩的负担)。

[编辑] 轻量化文件系统创建

在ZFS中,存储池中文件系统的操作相比传统文件系统的卷管理更加便捷。创建ZFS文件系统或者改变一个ZFS文件系统的大小接近于传统技术中的管理目录而非管理卷。

[编辑] 储存管理

[编辑] 限制

ZFS的最新beta版已支持透明加密。[7]

[编辑] 参见

[编辑] 參考文獻

  1. ^ 1.0 1.1 ZFS: the last word in file systems. Sun Microsystems. September 14 2004 [2006-04-30]. 
  2. ^ Jeff Bonwick. ZFS: The Last Word in Filesystems. Jeff Bonwick's Blog. October 31, 2005 [2006-04-30]. 
  3. ^ Sun Celebrates Successful One-Year Anniversary of OpenSolaris. Sun Microsystems. June 20 2006. 
  4. ^ Jeff Bonwick. You say zeta, I say zetta. Jeff Bonwick's Blog. 2006-05-04 [2006-09-08]. 
  5. ^ AdvFS內部設計文件 (AdvFS Design Docs). SourceForge.net. 
  6. ^ Seth Lloyd, "Ultimate physical limits to computation(计算的终极物理限制)." Nature 406, 1047-1054 (2000)]
  7. ^ OpenSolaris Project: ZFS on disk encryption support. OpenSolaris Project [2006-12-13]. 

[编辑] 外部連結

个人工具
名字空间
操作
导航
帮助
工具
其他语言