Jeff Bonwick,Sun著名工程师兼ZFS的首席设计师。
Jeff Bonwick is a Sun Fellow at Sun Microsystems.Jeff leads the team which developed ZFS for Solaris.
Notable among his other work is the slab allocator, an object-caching kernel memory allocator, and the LZJB compression algorithm.He publishes a blog which details the development of ZFS.
个人博客中文版:http://blogs.sun.com/bonwick/zh/
简介编辑本段回目录
Jeff Bonwick从CalTech (California Institute of Technology)毕业,两三年时间就成为Sun软件工程界的有名英雄。早年他和Roger Faulkner合写了个软件工具,可以极快地安装软件包。
他们说是英雄就要用快刀。这“快刀”叫bfu。他们说是Blindingly Fast Utility,可是每个人都说是Bonwick Faulkner Utility。Jeff带了个团队做新一代的文档系统(ZFS),如果全宇宙每一个原子都是一个文档,这系统都能容纳。当然,当真如此,也没原子给我们人类了!
如果说Jeff是把快刀,Bart Smaalders就是门重炮。他出身机械工程,出道时在国防工业作事,制造战车。他一头乱发,一脸大胡子,雨天时带个宽沿皮帽,形象和软件工程师实在不符。Bart是Solaris的哲学家。他坚持软件开发的程序和精神――把问题定好、数据收齐、提出方案、试用、审议、再收集数据。问题解决了,就行了,不必再 嗦。这哲学, Solaris队伍共同的信念。他的libmicro项目,就是这哲学的具体实现 Cindy McQuire坐Bart隔壁,她收集了些Bart的名言贴在门口,称之“Bart语录”(Bartism)。
Solaris 10经历了四位副总裁, 历时四载,参与的工程师达1500人以上,是Sun有史以来最大的系统项目。2002年,John Loiacono决定重新进入x86,并在北京组建百人驱动程序队伍。我在美国聘到何英,在中国和宫力合作,三个月雇了近40人。之后Bev Crair到任,一年后扩大到90人。2005年Solaris与JDS队合并。Solaris在北京已达180人,成为在美国Menlo Park以外最大的地区。
ZFS或将登陆Linux编辑本段回目录
被视为终极文件系统的ZFS很长一段时间以来一直是Linux使用者梦寐以求的一项技术,但是由于Sun在ZFS上拥有56项专利,只同意以CDDL开源方式移植,所以无法在使用GPL协议的Linux上直接实现。
不过,这种情况也许就要改变,昨天,ZFS的领导开发者Jeff Bonwick和Linus在家中见了面,喝了酒,Jeff Bonwick最后对关注两人会晤的读者们表示“敬请期待”。也许过不了多久Linux的使用者就不用再羡慕FreeBSD和Mac OS X了。
ZFS是Sun公司Jeff Bonwick在领导开发的一种128位文件系统,最早宣布于04年9月,代表"Zettabyte File System", 具有18.4 × 10e18倍于当前64位文件系统的储存能力,Bonwick说要填满一个128位的文件系统,将耗尽地球上所有存储设备。除非拥有煮沸整个海洋的能量,不然不可能将其填满。
除了拥有近乎无限的储存能力,ZFS还不同于传统文件系统需要驻留于单独设备或需要卷管理系统,ZFS建立在虚拟的存储池上。文件系统不再仅限于单个设备,从而可与池中的所有文件系统共享空间。使用者不再需要预先确定文件系统的大小,因为文件系统会在分配给存储池的空间内自动增长。添加新存储器后,也无需执行其他操作,池中的所有文件系统即可立即使用新增的空间。
另外,ZFS是事务性文件系统,使用写复制(copy-on-write)语义,文件系统状态在磁盘上始终一致,任何操作序列会全部被提交或全部被忽略。这意味着文件系统绝对不会因意外断电或系统崩溃而被损坏,同时还避免了日志文件系统写两次的额外开销。
ZFS还具有独特的校验、自我修复和快照等功能。
前景黯淡,太阳甘冒大风险 编辑本段回目录
2008年11月14日
作者:Jon Fortt
也许正是因为一些非传统的办公室使得硅谷极具创意。
比尔·休利特(Bill Hewlett)和戴维·帕卡德(Dave Packard)在一间车库里打造了日后的惠普公司(HP)。苹果公司(Apple)的麦金塔研发团队在班得利三号(Bandley 3)大楼挂起了海盗旗。而今,太阳计算机系统公司(Sun Microsystems)希望一组年轻的团队能够在惨淡的经济当中打造一个全新的十亿美元级产品。据报道,这组人马在旧金山一个凌乱不堪的阁楼里没日没夜地工作。
在软件工程天才麦克·萨皮罗(Mike Shapiro)、布莱恩·堪特尔(Bryan Cantrill)和杰夫瑞·邦维克(Jeff Bonwick)的带领下,这个团队在过去三年中几乎每天都吃披萨饼度日。他们在研发一种新型数据存储盒,这种存储盒使用闪存技术、现成的软件和开源软件来帮助公司更有效地储存并管理信息。您可别打瞌睡。数据存储可能听上去挺无聊,但收益不菲。随着在线视频、社交、网络软件以及电子商务的飞速发展,数据存储几乎是您能够找得到的、最能抵御经济衰退的产业了。
想想吧:每笔股票交易、每个YouTube视频、以及来自Facebook的好友请求都要找个地方储存。这就是为什么市场研究公司IDC仅在第二季度的网络储存价值就高达40亿美元,较去年上涨了22%。像惠普和戴尔(Dell)这样的科技巨头最近增大了存储量以提高竞争力。
太阳公司是硅谷一家声誉良好的数据中心供应商,但从未真正从网络泡沫破灭的打击中恢复过来,因此它怎么能错过这样一个绝佳的赚钱机会呢?投资公司Southeastern Asset Management最近累计获得了太阳公司五分之一的股份,并暗示无论其董事会愿不愿意,都将寻找愿意收购太阳的公司。所以如果能够推出一个拳头产品,太阳公司就能赢取一些时间,甚至让投资者相信太阳能够靠自己生存下去。
萨皮罗和堪特尔是聪明人,当然能想出一些好点子扭转局面。他们两人是大学好友,在太阳公司一路提升成为杰出工程师(Distinguished Engineers)。他们相信通过发掘过去几年由两人研发的软件,他们能够推出新一代的网络存储盒:比主流产品,比如美国EMC和Network Appliance的产品更快、更便宜、且更易操作。他们决定将想法反映给高管。萨皮罗说:“我当时真以为他们会嘲笑我们,并告诉我们该干什么就干什么去。”
一天在咖啡厅里,萨皮罗和堪特尔拦住了太阳公司首席技术官格里高利?帕帕多罗斯(Greg Papadopoulos),并且要求公司给他们一笔为数不小的资金用以研发新产品。他们在帕帕多罗斯的办公室里继续交谈---而出乎他们意料的是:帕帕多罗斯当场就点头答应了。一个代号为琥珀之路(Amber Road)的项目就这样诞生了。帕帕多罗斯回忆说:“当时我们公司的一些顶尖工程师来了,跟我说他们想要做这个项目,因为他们觉得这很重要,时机也很好。我有什么理由说不呢?”
其实,他完全可以给出一些理由说不。像谷歌(Google)或苹果这样的产业巨头有几十亿美元的现金而且没有任何债务。但太阳公司可没有这样的资本为每个工程师的宠物项目烧钱:最近公司报告称仅有26亿美元的现金,负债12亿美元,资产负债表也不景气,已宣布要在一月份裁员350人。(350人听上去不多,但是太阳公司最近几个月已经裁员1,500人了。)最近的一个季度,太阳的销售额下降了7%至30亿美元。公司的股票也反映了残酷的现实:每股价格4美元,与1995年年初的价格持平,较去年下跌了80%。
这还不够,琥珀之路团队还要求有自己的办公室,这与太阳的大公司氛围和产品研发惯例背道而驰。萨皮罗尤其觉得,要设计出一种便于使用的存储系统,团队需要远离太阳的企业文化。帕帕多罗斯也承认说:“我们公司一向为工程师设计软件,但是产品--有很多按钮,号码,仪表--较难使用。”
因此他和系统小组组长约翰?福乐(John Fowler)同意给团队独立的办公室,不过有一些条件。办公室不能像太阳公司正规的办公室那么舒适,没有豪华的装修。团队的十几位工程师亲自粉刷办公室,并在跳蚤市场买家具。帕帕多罗斯说:“他们喜欢这样,办公室就在公车站的街对面。只要往他们门缝下塞披萨饼就行了。”
如果这听上去像是创业,这就对了。太阳公司有这种传统。据说詹姆士?高斯灵(James Gosling)曾离开公司办公室到加州的帕罗奥多的学院大道租了一间房子研发Java编程语言。这间办公室离今天的Facebook总部不远。但问题是创造性思维能否改善太阳公司的财务报表。福乐承认说:“现在还不知道这个产品多久才能成为一个十亿美元级的产品,而它应该达到这一目标。”但他还是很乐观。他还说那些见过这种新型存储盒的消费者都迫不及待地想要探探究竟。
目前为止分析师还是持怀疑态度。太阳必须要证明其太阳存储的7000个设备能够满足大型消费者的需求。这些消费者喜欢使用EMC的存储器,因为其记录时间会更长一些。但是太阳公司将把以闪存技术为基础的固态存储技术融入新产品中,这应当管用。IT经理认为固态存储技术可以改进性能,而当所有主要的数据存储公司都承诺未来会使用这种技术时,太阳公司是领先兑现这一承诺的公司之一。
Burton Group分析师尤金?路斯(Gene Ruth)问道:“太阳公司能否尽快研发出这种产品并抢占市场份额,以便在其他公司行动之前就站稳脚跟?我觉得一年后所有大公司应该都推出了固态存储产品。我一直认为太阳公司的技术很强。到底他们能否实现这一目标还是个问题。我希望他们能够做得到。”
这可能是太阳公司最后一次证明自己能有所作为的机会了。多年来硅谷一直有传言说有人会趁虚而入收购太阳公司。即使是这样,在现在这种情况下,这也不太可能了:有那么多不错的新公司都将自己低价出售,干嘛要收购一个不景气的大公司呢?但如果太阳的股价一直这么低,公司市值仅为30亿美元,那么那些虎视眈眈的投资者可能真要行动了。
ZFS编辑本段回目录
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次运算。[参考 Seth Lloyd, "Ultimate physical limits to computation(计算的终极物理限制)." Nature 406, 1047-1054 (2000)]。一个完全的128位存储池将包含2128 个块 = 2137 字节 = 2140 位;应此,保存这些数据位至少需要(2140 位) / (1031 位/公斤) = 1360亿公斤的物质。
写时拷贝事务模型
ZFS使用一种写时拷贝事务模型技术。所有文件系统中的块指针都包括256位的能在读时被重新校验的关于目标块的校验和。含有活动数据的块从来不被覆盖;而是分配一个新块,并把修改过的数据写在新块上。所有与该块相关的元数据块都被重新读,分配和重写。为了减少该过程的开销,多次读写更新被归纳为一个事件组,并且在必要的时候使用日志来同步写操作。
快照与克隆
比写时拷贝更先进的技术是当ZFS写新数据时,包含旧数据的快被保留着,提供了一个可以被保留的文件系统的快照版本。由于ZFS在读写操作中已经存储了所有构建快照的数据,所以快照的建立非常快。而且由于任何文件的修改都是在文件系统和它的快照之间共享的,所以ZFS的快照也是空间优化的。
可写快照("克隆")也可以被创建。结果就是两个独立的文件系统共享一些列的块。当任何一个克隆版本的文件系统被改变时,新的数据块为了反映这些改变而创建,但是不管有多少克隆版本的存在,未改变的块仍然在其他的克隆版本中共享。
动态条纹
可变块尺寸
轻量化文件系统创建
在ZFS中,存储池中文件系统的操作相比传统文件系统的卷管理更加便捷。创建ZFS文件系统或者改变一个ZFS文件系统的大小接近于传统技术中的管理目录而非管理卷。
储存管理
限制
ZFS尚不支持透明加密(如NTFS),但有相关的OpenSolaris项目正在从事开发此功能。[5]
ZFS不支持用户/组等级的磁盘限额。作为替代,可以创建用户所有的文件系统并设定其容量限制。