Jul
5
Linux原生的ext4文件系统目前已经在一些最新的Linux发布版本中包含了,我也使用了一段时间,和ext3相比,有所改善但是不是那种非常显著的干劲,更详细的情况可以参考这篇文章(ext4文件系统:介绍及性能测试)。
不过我一直向往Solaris上的ZFS,觉得那才是真正的企业级文件系统,COW,CDP等功能让人着迷,虽然目前linux上已经有基于fuse的ZFS实现,但是性能上就大打折扣了,直到btrfs文件系统的出现,让我看到了未来:Btrfs (通常唸成Butter FS)。
承若将赋予这个文件系统许多类似ZFS的企业级特征,甚至在性能和亮点上要超过ZFS。事实上,很多Linux专家认为btrfs应该是Linux未来的一个关键点。不过目前btrfs目前还没有完全发布,不过相信很快大家就能用到了,在正式使用之前,我们不妨对它做一些了解,甚至可以对其进行一些性能上的测试。
Btrfs文件系统介绍
Btrfs,有时又被称作”Butter FS”(黄油文件系统?),最先由在Oracle工作的Chris Mason发起这个项目,Oracle以GPL协议发布。目前这个项目在Linux社区获得大量的追随者并引起大多数人的共鸣,目前btrfs有以下特性:
从以上的特征,你能看出来btrfs是一个非常有“野心”的项目,当然看了这些特征,估计你会爱死它了(不会像Multics一样不堪重负而死掉吧?)
可能你立刻会问到一个问题,“和ZFS相比如何?”,恩,知道你会问这个问题,因为有人已经有非常长的文章来对此作为比较,我们这里摘录其关键点吧,看下面这张对照表格:
特性详解
Btrfs是非常有雄心的一个项目,带来了非常多的新特性,一些非常重要和关键的特性已经在上面的列表中说了,这些特性值得我们深入了解。
动态i节点分配
这个特性听上去不怎么实用,实际上,在创建/扩展文件系统时,它还是很有用的。动态分配意味着当创建文件系统时只有少量的i节点被创建,当i节点不够时,文件系统会非常平滑的创建更多的i节点。想想以前创建一个500G的文件系统时,有多少时间是花在创建i节点上呢?
快照(snapshot)
Btrfs允许你创建文件系统或者文件系统某一个部分的快照,你可以利用这个快照来创建备份,或者在紧急情况下的数据拷贝。你也可以使用它来将文件系统的某一个部分dump出来作为一个归档(归档后,你可以删除快照和原始数据)。
通常,快照是不会被修改的,因为做快照一般都是用来执行一些比较关键的任务,比如备份、修复、归档等。但是在某些情况下,你可以需要对快照做一些写的操作,btrfs允许你这么干,举个例子:假定你对某一个目录做了快照,而后你又在这个目录做了一些工作,只要你能确保这个目录已经更新到快照里,你就可以保持你的拷贝是最新的,这实际上是一个快照的快照,这就是btrfs一个非常灵活的快照功能(没有明白?等你用了btrfs,你就明白了)。
写时复制(Copy on Write)
这个术语已经听得很多了,它指的是允许你的某一些数据在写的时候被拷贝(就是做了两次拷贝)。在btrfs里,这个技术可以有各种用途。比如btrfs可以将它和快照甚至快照的快照技术联合起来使用,这样使得数据很容易更新。btrfs也可以使用它来记录日至,比如对于日志文件系统,可以对日志或者数据来一个写时复制,这就可以保证数据的高可用性。
子卷(Subvolumes)
Btrfs能够把文件系统的某一部分分离出来挂载,就像是一个独立的文件系统一样。当你想限制用户访问一个目录中的某一个部分的时候,这个功能就会变得非常有用。比如,如果在一个主目录里,其中一个子目录希望能被用户访问,而其他部分不允许。那么这个子目录就可以当作子卷(subvolume)挂载,对用户而言,她就像一个实际的文件系统一样。
多设备支持
当前Linux系统,如果你想创建一个RAID-0或者RAID-1或者其他RAID级别,然后在这些设备用上LVM,你可能需要使用硬件RAID卡或者软RAID(md)来做到把多个设备合成一个虚拟的设备。而btrfs则把对多设备(RAID)的支持内嵌到文件系统里了。当前,btrfs可以做RAID-0,RAID-1,RAID-10(以后应该会增加系统RAID级别)。btrfs一旦被创建,它允许你直接增加设备(磁盘)到这个文件系统里(动态i节点分配是关键),当然也允许你拿走设备。(哦,天啦,哦,天啦,天啦,这不就是一个磁盘阵列了么?)
文件系统检查和碎片整理增强
文件系统检查(fsck)对系统管理员而言就是一个毒药,因为做文件系统检查,你就需要将文件系统处于offline的状态(在线fsck,你试试,别到时哭都没有地方哭去),然后做fsck操作来修复,这个过程是需要花费大量的时间的,修复完成后,你总算可以重新挂载了(假定你修复出来的文件系统没有问题)。
Btrfs允许你对一个已经挂载而且在使用的文件系统进行在线的文件系统检查。在检查的过程中,你仍然可以使用这个文件系统。另外,虽然文件系统开发人员尽了最大的努力,但是碎片还是会发生,当然也就会影响性能(想起那个著名的有关windows磁盘碎片整理的笑话来了)。磁盘碎片整理也需要文件系统处于offline的状态,和fsck差不多,而btrfs也允许你在在线的时候使用。
加密
文件系统加密变得越来越流行,特别对一些企业和敏感人士的笔记本而言,一旦笔记本被偷或者遇到不良维修人员(想象陈君冠希老师吧),也许你会死的很惨。因此文件系统加密变得很重要了。btrfs加入了非常强的加密功能,而且还会提供一些’而外的技术(记住:目前这部分还在开发过程中)
压缩
除了加密,btrfs也提供了压缩来节省空间和提升性能的功能,当前,它使用内核自带的zlib压缩算法。
Btrfs,何时到来
一旦有新的功能,我们总是想问,我们嘛时候能使用呀?可是新功能总是要经过无数次的测试,调试,开发这样的一个迭代过程,因此不会来的太快的。
目前,内核2.6.29版本已经进入了btrfs,不过加上了“试验(experimental)”的标签,这当然是Linux一贯的做法,可以获得更广泛的测试以及问题反馈。你可以升级到这个核心,并订阅btrfs的开发邮件列表,为btrfs的早日杀青作出你的贡献吧。
不过我一直向往Solaris上的ZFS,觉得那才是真正的企业级文件系统,COW,CDP等功能让人着迷,虽然目前linux上已经有基于fuse的ZFS实现,但是性能上就大打折扣了,直到btrfs文件系统的出现,让我看到了未来:Btrfs (通常唸成Butter FS)。
承若将赋予这个文件系统许多类似ZFS的企业级特征,甚至在性能和亮点上要超过ZFS。事实上,很多Linux专家认为btrfs应该是Linux未来的一个关键点。不过目前btrfs目前还没有完全发布,不过相信很快大家就能用到了,在正式使用之前,我们不妨对它做一些了解,甚至可以对其进行一些性能上的测试。
Btrfs文件系统介绍
Btrfs,有时又被称作”Butter FS”(黄油文件系统?),最先由在Oracle工作的Chris Mason发起这个项目,Oracle以GPL协议发布。目前这个项目在Linux社区获得大量的追随者并引起大多数人的共鸣,目前btrfs有以下特性:
引用
写时复制(Copy on Write)
扩展(extents)
针对小文件提升空间效率
针对目录索引提升空间效率
动态i节点分配
可写的快照(writable snapshot)
快照的快照(snapshots of snapshots)
子卷(subvolumes,根文件系统内部分割)
对象级镜像和条带化(object level mirroring and striping)
数据和元数据的校验和
压缩
集成多设备支持,包含几种RAID算法
在线文件系统检查和碎片整理
非常快速的离线文件系统检查
高效的增量备份和文件系统镜像
扩展(extents)
针对小文件提升空间效率
针对目录索引提升空间效率
动态i节点分配
可写的快照(writable snapshot)
快照的快照(snapshots of snapshots)
子卷(subvolumes,根文件系统内部分割)
对象级镜像和条带化(object level mirroring and striping)
数据和元数据的校验和
压缩
集成多设备支持,包含几种RAID算法
在线文件系统检查和碎片整理
非常快速的离线文件系统检查
高效的增量备份和文件系统镜像
从以上的特征,你能看出来btrfs是一个非常有“野心”的项目,当然看了这些特征,估计你会爱死它了(不会像Multics一样不堪重负而死掉吧?)
可能你立刻会问到一个问题,“和ZFS相比如何?”,恩,知道你会问这个问题,因为有人已经有非常长的文章来对此作为比较,我们这里摘录其关键点吧,看下面这张对照表格:
特性详解
Btrfs是非常有雄心的一个项目,带来了非常多的新特性,一些非常重要和关键的特性已经在上面的列表中说了,这些特性值得我们深入了解。
动态i节点分配
这个特性听上去不怎么实用,实际上,在创建/扩展文件系统时,它还是很有用的。动态分配意味着当创建文件系统时只有少量的i节点被创建,当i节点不够时,文件系统会非常平滑的创建更多的i节点。想想以前创建一个500G的文件系统时,有多少时间是花在创建i节点上呢?
快照(snapshot)
Btrfs允许你创建文件系统或者文件系统某一个部分的快照,你可以利用这个快照来创建备份,或者在紧急情况下的数据拷贝。你也可以使用它来将文件系统的某一个部分dump出来作为一个归档(归档后,你可以删除快照和原始数据)。
通常,快照是不会被修改的,因为做快照一般都是用来执行一些比较关键的任务,比如备份、修复、归档等。但是在某些情况下,你可以需要对快照做一些写的操作,btrfs允许你这么干,举个例子:假定你对某一个目录做了快照,而后你又在这个目录做了一些工作,只要你能确保这个目录已经更新到快照里,你就可以保持你的拷贝是最新的,这实际上是一个快照的快照,这就是btrfs一个非常灵活的快照功能(没有明白?等你用了btrfs,你就明白了)。
写时复制(Copy on Write)
这个术语已经听得很多了,它指的是允许你的某一些数据在写的时候被拷贝(就是做了两次拷贝)。在btrfs里,这个技术可以有各种用途。比如btrfs可以将它和快照甚至快照的快照技术联合起来使用,这样使得数据很容易更新。btrfs也可以使用它来记录日至,比如对于日志文件系统,可以对日志或者数据来一个写时复制,这就可以保证数据的高可用性。
子卷(Subvolumes)
Btrfs能够把文件系统的某一部分分离出来挂载,就像是一个独立的文件系统一样。当你想限制用户访问一个目录中的某一个部分的时候,这个功能就会变得非常有用。比如,如果在一个主目录里,其中一个子目录希望能被用户访问,而其他部分不允许。那么这个子目录就可以当作子卷(subvolume)挂载,对用户而言,她就像一个实际的文件系统一样。
多设备支持
当前Linux系统,如果你想创建一个RAID-0或者RAID-1或者其他RAID级别,然后在这些设备用上LVM,你可能需要使用硬件RAID卡或者软RAID(md)来做到把多个设备合成一个虚拟的设备。而btrfs则把对多设备(RAID)的支持内嵌到文件系统里了。当前,btrfs可以做RAID-0,RAID-1,RAID-10(以后应该会增加系统RAID级别)。btrfs一旦被创建,它允许你直接增加设备(磁盘)到这个文件系统里(动态i节点分配是关键),当然也允许你拿走设备。(哦,天啦,哦,天啦,天啦,这不就是一个磁盘阵列了么?)
文件系统检查和碎片整理增强
文件系统检查(fsck)对系统管理员而言就是一个毒药,因为做文件系统检查,你就需要将文件系统处于offline的状态(在线fsck,你试试,别到时哭都没有地方哭去),然后做fsck操作来修复,这个过程是需要花费大量的时间的,修复完成后,你总算可以重新挂载了(假定你修复出来的文件系统没有问题)。
Btrfs允许你对一个已经挂载而且在使用的文件系统进行在线的文件系统检查。在检查的过程中,你仍然可以使用这个文件系统。另外,虽然文件系统开发人员尽了最大的努力,但是碎片还是会发生,当然也就会影响性能(想起那个著名的有关windows磁盘碎片整理的笑话来了)。磁盘碎片整理也需要文件系统处于offline的状态,和fsck差不多,而btrfs也允许你在在线的时候使用。
加密
文件系统加密变得越来越流行,特别对一些企业和敏感人士的笔记本而言,一旦笔记本被偷或者遇到不良维修人员(想象陈君冠希老师吧),也许你会死的很惨。因此文件系统加密变得很重要了。btrfs加入了非常强的加密功能,而且还会提供一些’而外的技术(记住:目前这部分还在开发过程中)
压缩
除了加密,btrfs也提供了压缩来节省空间和提升性能的功能,当前,它使用内核自带的zlib压缩算法。
Btrfs,何时到来
一旦有新的功能,我们总是想问,我们嘛时候能使用呀?可是新功能总是要经过无数次的测试,调试,开发这样的一个迭代过程,因此不会来的太快的。
目前,内核2.6.29版本已经进入了btrfs,不过加上了“试验(experimental)”的标签,这当然是Linux一贯的做法,可以获得更广泛的测试以及问题反馈。你可以升级到这个核心,并订阅btrfs的开发邮件列表,为btrfs的早日杀青作出你的贡献吧。
mlsx
2009/07/10 17:43
你不说,我还真找不到,不好意思,呵呵。
linuxing 回复于 2009/07/12 12:05
^_^,这个也是新版才在后台编辑的时候提供的,刚开始我也是没留意,有空看改改模板,把这部分的内容清晰一点吧。
mlsx
2009/07/06 11:21
转载的时候,还是把原始链接信息附上吧,遵循CC版权原则。
linuxing 回复于 2009/07/07 10:04
有写啊,在标题下面,Via部分就是了,在BoBlog输入后,会显示成这样的。
分页: 1/1 1