ZFS源代码剖析.pdf

  1. 1、本文档共112页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
ZFS源代码剖析 作者 :casualfish 主页 :/causalfish 新浪微博 :@casualfish (转载请保留此部分内容) 1. ZFS简介 1.1 ZFS发展史         ZFS是由SUN公司的Jeff Bonwick和Matthew Ahrens大神于2001年领导设计开发 ,并 在2004年2月14日发布的集合了文件系统处理逻辑和卷管理器功能的文件系统。ZFS的全 70 拼是Zettabyte File System ,Zetta是一个数量单位 ,1ZB 2 字节 ,而1ZB   1024EB  1048576 PB ,而facebook目前最大的单个HDFS集群中存储了100PB的log数据。当然单台服务 器不可能也不会存储这么多数据 ,这从一个侧面说明了zfs的存储容量从实际使用中来说是没有 上限的。zfs不是类似于hdfs的分布式文件系统或者lustre之类的集群文件系统 ,通常可以用来作 HDFS和lustre的后端存储文件系统使用。      SUN公司从2008年开始组织并支持开源open solaris项目,ZFS是其中一个重要的组成部分 , 随着oracle公司收购了sun ,并于2010年停止了open solaris的开发工作 ,原先的ZFS核心开发者 们也逐步的离开了oracle ,他们中的一部份人继续着ZFS的开发 ,参与或者组成了Joyent、 Nexenta、Delphix等以opensolaris或ZFS为蓝本的公司 ,他们的oracle个人blog也随着离开 oracle停止更新或者无法访问 ,而open solaris的社区也将在2013年3月24日关闭 ,届时我们将 失去学习一个学习目前最为先进的商业操作系统的途径 ,这也是促使我完成 《zfs源代码剖析》 系列的原因,作为软件设计中的一项杰作 ,ZFS值得我们深入的学习,包括它斟酌权衡的设计 ,令人赞叹的细节实现和追求完美的态度 ,在接下来的文章中将为各位读者一一说明和展现。 1.2 ZFS特性 ZFS作为一个划时代的文件系统 ,被移植到了多个OS平台上 ,它具有的特性主要如下 : 1. 接近于无限的存储空间 ZFS针对若干磁盘组成的集合抽象出了zpool的概念 ,而文件系统则是 活动的 ,每个文件系统实例可以从zpool中分配空间 ,zpool的大小可以动态变化 ,在空间不足 的时候可以动态添加磁盘 ,在空间充足的时候也可以通过移动数据的办法抽调出磁盘。ZFS的 48 48 一些理论极限如下 :对于任意ZFS文件系统实例 ,支持2 个快照 ,支持2 个文件 ,单个文件系 64 统实例最大16EB ,单个文件最大16EB ,单个zpool最大128ZB ,每个zpool最多支持2 个设备等 等。 2.COW事务模型 COW是Copy On Write的缩写 ,是指在对数据进行修改时并不是直接原地修改 ,而是拷贝一份新的与修改的内容合并。使用COW的一个例子就是Unix的fork函数实现 ,通常 fork的过程中子进程需要拷贝父进程的页表等虚拟内存信息 ,而如果子进程对拷贝的页表修改较 少这样的拷贝工作就会带来额外的负担 ,因此fork的时候子进程不拷贝父进程的页表等信息 ,而 是与其父进程共享 ,在修改的时候拷贝出一份新的进行修改 ,在此处COW的主要功能是减少额 外的copy带来的负担。对于文件系统而言 ,COW是实现快照等功能的基础 ,通过保留每个快照 的时刻的数据而重定向新修改的数据 ,可以保证快照时刻的完整数据。对于通常的文件系统 , 例如ext3/4 ,xfs等 ,写入是modify in place的

文档评论(0)

weiwoduzun + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

认证主体常**

1亿VIP精品文档

相关文档

相关课程推荐