ZFS
维基百科,自由的百科全书
| ZFS | |
| 开发者 | Sun Microsystems |
|---|---|
| 全称 | ZFS |
| 发布 | 2005年11月 (OpenSolaris) |
| 结构 | |
| 目录内容 | 可扩展哈希表 |
| 限制 | |
| 最大文件尺寸 | 16 exabytes |
| 最大文件数量 | 248 |
| 最大卷容量 | 16 exabytes |
| 功能 | |
| 岔流 | 是 (called Extended Attributes) |
| 属性 | POSIX |
| 文件系统权限 | POSIX |
| 透明压缩 | 是 |
| 透明加密 | 否 |
| 操作系统支持 | Sun Solaris, Apple Mac OS X 10.5, FreeBSD, Linux (通过用户空间文件系统) |
ZFS 源自于Sun Microsystems为Solaris操作系统开发的文件系统。ZFS是一个具有高存储容量、文件系统与卷管理概念整合、崭新的磁盘逻辑结构的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS是一个使用Common Development and Distribution License (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”的存储池之上。每个存储池由若干虚拟设备(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) — 最大属性大小
- 3 × 1023 petabytes (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次运算[5]。一个完全的128位存储池将包含2128 个块 = 2137 字节 = 2140 位;应此,保存这些数据位至少需要(2140 位) / (1031 位/公斤) = 1360亿公斤的物质。
[编辑] 写时拷贝事务模型
ZFS使用一种写时拷贝事务模型技术。所有文件系统中的块指针都包括256位的能在读时被重新校验的关于目标块的校验和。含有活动数据的块从来不被覆盖;而是分配一个新块,并把修改过的数据写在新块上。所有与该块相关的元数据块都被重新读,分配和重写。为了减少该过程的开销,多次读写更新被归纳为一个事件组,并且在必要的时候使用日志来同步写操作。
[编辑] 快照与克隆
比写时拷贝更先进的技术是当ZFS写新数据时,包含旧数据的快被保留着,提供了一个可以被保留的文件系统的快照版本。由于ZFS在读写操作中已经存储了所有构建快照的数据,所以快照的建立非常快。而且由于任何文件的修改都是在文件系统和它的快照之间共享的,所以ZFS的快照也是空间优化的。
可写快照("克隆")也可以被创建。结果就是两个独立的文件系统共享一些列的块。当任何一个克隆版本的文件系统被改变时,新的数据块为了反映这些改变而创建,但是不管有多少克隆版本的存在,未改变的块仍然在其他的克隆版本中共享。
[编辑] 动态条纹
[编辑] 可变块尺寸
[编辑] 轻量化文件系统创建
在ZFS中,存储池中文件系统的操作相比传统文件系统的卷管理更加便捷。创建ZFS文件系统或者改变一个ZFS文件系统的大小接近于传统技术中的管理目录而非管理卷。
[编辑] 储存管理
[编辑] 限制
ZFS尚不支持透明加密(如NTFS),但有相关的OpenSolaris项目正在从事开发此功能。[6]
ZFS不支持用户/组等级的磁盘限额。作为替代,可以创建用户所有的文件系统并设定其容量限制。
[编辑] 參考文獻
- ^ 1.0 1.1 ZFS: the last word in file systems.Sun Microsystems(September 14 2004).於2006年4月30日查閱.
- ^ Jeff Bonwick(2005年10月31日).ZFS: The Last Word in Filesystems.Jeff Bonwick's Blog.於2006年4月30日查閱.
- ^ Sun Celebrates Successful One-Year Anniversary of OpenSolaris.Sun Microsystems(June 20 2006).
- ^ Jeff Bonwick(2006年5月4日).You say zeta, I say zetta.Jeff Bonwick's Blog.於2006年9月8日查閱.
- ^ Seth Lloyd, "Ultimate physical limits to computation(计算的终极物理限制)." Nature 406, 1047-1054 (2000)]
- ^ OpenSolaris Project: ZFS on disk encryption support.OpenSolaris Project.於2006年12月13日查閱.

