红联Linux门户
Linux帮助

开源文件系统渐成潮流 浅析ZFS十大最佳功能

发布时间:2009-11-26 12:40:41来源:红联作者:xiesheng
  来源:ZDNet存储频道

  Sun的开源ZFS文件系统拥有几个非常好的功能。它最初是针对Solaris设计的,于2005年问世,但是你也会在OpenSolaris和相关发行版本中发现它的踪影。未来,它也有可能成为运行在Linux和BSD上一个受人们欢迎的文件系统。

  以下是ZFS支持者认为ZFS具备的十大最佳功能特性:

  1、元数据校验和确保数据完整性

  数据完整性在ZFS中具有非常高的重要性,也是很多ZFS功能的前决条件。

  ZFS文件系统采用了256位校验和,当向磁盘写入数据的时候,校验和就会被作为元数据与它相关的数据分开保存。与普通的磁盘块校验和不同的是,这种校验和可以检测出错位写、误读取和误写入、DMA奇偶错误、驱动器bug、意外过量写入以及常见的物理存储的衰减(bit rot)。

  2、写时才拷贝

  ZFS文件系统是使用多项技术来确保数据在磁盘上的连续性,其中就包括写时才拷贝(Copy on Write),也就是当数据发生变更的时候它并不会过量写入----它总是在指针指向变更数据之前被写入到一个新块和校验和中。旧的数据可能被保存下来,在发生变更的过程中创建文件系统的快照。利用ZFS的文件写入是交易型的操作----要么将所有数据写入到磁盘,要么什么都不写入。

  3、利用Time Slider的数据快照

  OpenSolaris的最新版本展示了ZFS利用TimeSlider小型图形应用所实现的强大快照功能。可以通过配置设定对ZFS文件系统进行常规的快照操作----每15分钟,或者每小时等等。这种快照占用容量很小,而且很高效,因为它只保存与之前快照的变量。

  TimeSlider提供了对文件系统(或者一个家庭文件夹)的查看功能,而且有一个可以沿着时间线返回到更早快照时间的滑块。当这些完成之后就会呈现特定快照时间的文件系统或者文件夹内容。如果想要恢复一份被错误过量写入的文件,或者在升级失败之后还原系统的话,你只需要将滑块滚回合适的快照时间就可以了。

  4、数据存储池

  ZFS利用可用的存储驱动器将他们聚合成为一个被称为zpool的资源池。这个资源池可以使用脚本、镜像或者某种RAID针对容量、I/O性能或者冗余性进行优化。如果需要更多存储的话,只需要向zpool中添加更多存储就行了----ZFS检测到新添加的容量并开始自动使用、均衡I/O和最大限度提高吞吐量。

  5、RAIDZ和RAIDZ2

  众所周知,RAID 5有一个重大缺陷----RAID5 Write Hole。RAID 5在写数据的时候,是分为两步的,首先将数据写到磁盘阵列上,然后将该stripe上数据的校验码记录到阵列上,如果在刚写完数据的时候,系统断电,那么该数据对应的校验码就没有机会再恢复了。如果接下来磁盘发生故障,RAID重建流程就会出现错误数据。唯一的解决方案就是,如果整个stripe发生过量写入,那么就会生成一个正确的奇偶块。

  RAIDZ通过使用一个不同宽度的条带来解决这个问题,这样每次写入实际上是一个完全的条带写入。再加上ZFS的写入时才拷贝特性,这些就完全消除了RAID 5的Write Hole缺陷。RAIDZ2也是同理,但是可以使用双奇偶允许阵列中丢失两个磁盘。

  安装一个RAIDZ(或者RAIDZ2)阵列非常简单,只需要发布一条命令。

  6、固态盘混合存储池

  存储池中可以通过添加高性能固态盘变成一个混合存储池。当这些固态盘被作为高性能缓存磁盘的时候,ZFS就会用其保留频繁访问数据以提高性能。另外ZFS还采用了L2 ARC技术来写入那些不需要立即保存的数据,在时间和资源允许的情况下,这些数据会被慢慢迁移到传统的更永久性的硬盘驱动器中。

  7、容量

  ZFS是128位的文件系统,也就是说理论上它可以保存256千万亿ZB(1ZB=10亿TB)。实际中,它的容量远远超过所需范围,至少就可预见的未来来说。

  8、数据清理

  ZFS可以清理一个存储池中的所有数据,根据相应的校验和检查每个数据来验证其完整性,检测任何潜在的数据损毁,修复可能存在的任何错误。

  当数据被冗余保存起来的时候----保存在镜像或者RAID型阵列中----它可以修复检测出任何潜在的损坏数据,而且无需管理员的干预。因为数据损坏是被记录下来的,所以ZFS可以通过导致数据不恰当保存在硬盘中的内存模块(或者其他硬件)检测出来。

  数据清理的I/O优先级是很低的,因为这个流程对系统性能的影响非常小。

  9、简单且有效的管理

  使用ZFS命令,就相当于你使用了一种简短而有效的命令来管理系统。例如,一个5磁盘RAIDZ阵列可以设置采用单命令:

  zpool create poolname raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0

  10、更多期待

  ZFS仍在不断更新完善,不时增加新的功能。ZFS的2009年路线图中包括用于提高安全性的加密功能以及提高存储效率的重复数据删除功能。

  如果你对尝试使用ZFS感兴趣的话,最简单的方法就是下载OpenSolaris或者相关发行版本。
文章评论

共有 1 条评论

  1. oplesd 于 2009-11-26 15:23:52发表:

    了解下