现在的位置: 首页 > 综合 > 正文

Solaris 10:使用ZFS的十条理由(二)

2013年10月10日 ⁄ 综合 ⁄ 共 3213字 ⁄ 字号 评论关闭
5. 提供优异性能和扩展性

  和传统File System + Volume Manager +
Storage架构不同,ZFS则是直接基于存储设备提供所有的功能,因此有自己独有的创新特性,性能自然非比寻常。

  Dynamic Striping vs. Static Striping

  由于ZFS是基于COW和一个全局动态的ZFS Pool,任何一次写
操作,都是对一块新数据块(Block)的一次写操作。ZFS从ZFS Pool中动态挑选出一个最优的设备,并且以一个transaction(事
务)线性写入,充分有效地利用了现有设备的带宽,我们把这个特性称为Dynamic Striping。而相对应的Static
Striping则是传统文件系统所使用的方式,Static Striping需要管理员预先对这组Stripe进行正确地计算人为
设置,而且如果加入新的设备则需要再次人为的计算和设置,更为严重的是如果人为计算错误,则会直接影响系统的性能。而在使用Dynamic
Striping这种特性之后,我们根本不需要人为介入,ZFS会自动调整,智能的为你 提供最佳的设备,最快的操作方式。

支持多种大小的数据块(Multiple Block Size)

  ZFS支持多种大小的数据块定义,从512字节到1M字节。和传统文件系统往往都是固定大小数据块不同,ZFS则是可以动态的根据不同
大小的文件进行计算,动态的选择最佳的数据块。

  因为不同大小数据
块,直接影响到实际使用硬盘容量和读取速度。如果使用较小的数据块,存储文件所导致的碎片则较少,读写小文件更快一些,但是会导致需要创建更多的
metadata,读写大文件则会更费时。如果使用较大的数据块,使用的metadata较少,更利于读写大文件,但是会导致更多的碎片。ZFS根据实际
调查现有文件使 用的情况,分析出一个选择数据块大小的算法,动态的根据实际文件大小确定最佳的数据块。所以ZFS是
非常智能的,在不需要系统管理员介入,就可以得到一个自我调优的结果。当然ZFS也支持用户对单个文件或者整个文件系统
所使用的数据块大小的自定义设置。

  智能预读取(Intelligent Prefetch)

  多数的操作系统都
有这种将数据预先读取的功能,而ZFS则是建立在文件系统上直接提供的一种更加智能的数据预读取功能。它不仅可以智能地识别出多种读取模式, 进
行提前读取数据,而且可以对每个读取数据流进行这种预读取智能识别,这个对许多流媒体提供者来说是件非常好的事情。

  在扩展性上,和现有文件系统多是基于一个受限的静态模型不同,ZFS是采用ZFS
Pool这个动态概念,它的metadata也是动态,并且读写操作都是可并行的,并且具有优先级概念,所以即使在大数据量,多设备的情况下仍可以保证性
能的线性增长。

  6.自我修复功能

  ZFS Mirror 和 RAID-Z

  传统的硬盘Mirror及RAID 4,RAID 5阵列方式都会遇到前面提到过的问题:Silent Data
Corruption。如果发生了某块硬盘物理问题导致数据错误,现有的Mirror,包括RAID 4,RAID
5阵列会默默地把这个错误数据提交给上层应用。如果这个错误发生在Metadata中,则会直接导致系统的Panic。
而且还有一种更为严重的情况是:在RAID 4和RAID
5阵列中,如果系统正在计算Parity数值,并再次写入新数据和新Parity值的时候发生断电,那么整个阵列的所有存储的数据都毫无意义了。

  在ZFS中则提出了相对应的ZFS
Mirror和RAID-Z方式,它在负责读取数据的时候会自动和256位校验码进行校验,会主动发现这种Silent Data
Corruption,然后通过相应的Mirror硬
盘或者通过RAID-Z阵列中其他硬盘得到正确的数据返回给上层应用,并且同时自动修复原硬盘的Data Corruption 。

  Fault Manager

  在Solaris 10中,包含 一个ZFS诊断引擎和Solaris的 Fault Manager(这也是Solaris 10的
另一个新特性)交互,可以实时地诊断分析并且报告ZFS Pool和存储设备的错误,用户可以通过Fault
Manager及时得到一个非常友善的消息。这个诊断引擎虽然不会采取主动的行为去修复或者解决
问题,但是会在消息中提示系统管理员可采取的动作。类似下面一个ZFS报错消息,其中REC-ACTION就是建议采取的动作:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY:
MajorEVENT-TIME: Fri Mar 10 11:09:06 MST 2006PLATFORM: SUNW,Ultra-60,
CSN: -, HOSTNAME: neoSOURCE: zfs-diagnosis, REV: 1.0EVENT-ID:
b55ee13b-cd74-4dff-8aff-ad575c372ef8DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3
for more information.AUTO-RESPONSE: No automated response will
occur.IMPACT: Fault tolerance of the pool maybe compromised.REC-ACTION:
Run ’zpool status -x’ and replace the bad device.

  7. 安全

  在安全上,ZFS支持类似NT风格NFSv4版的ACL(读取控制列表)。而且前面所提到的256位验证码,用户可选择多种验证方式,包括
SHA-256验证算法,从而在物理存储单元级别上保证数据的安全性。

  8. 超强功能

  ZFS作为“最后一个文件系统”,涵盖了基本的文件系统和Volume管理的功能,同时
一并提供许多企业级别的超强功能:Quota(配额),Reservation(预留), Compression(压 缩),
Snapshot(快照),Clone(克隆)。并且速度非常快。有了这个文件系统,大家再也不需要任何Volume Manager了。

  兼容性

  ZFS是一个完全兼容POSIX规范的文件系统,所以处于上层的应用程序是完全不受影响。ZFS也提供一个Emulated
Volume模块,可以把任何一个ZFS文件系统作为普通的块设备使用。同时ZFS也可以使用基于Volume
Manager构建的Volume作为存储设备单 元。这样在不需要修改应用程序,不修改已有文件系统下,给了大家最大的自由度去获得ZFS提供的各
种特性。

  10. 开源

  ZFS是Sun Microsystems公 司作为OpenSolaris的一个开源项目运作并且完全免费使用,点击这里(http://www.opensolaris.org/os/community/zfs/source/
)
可以直接浏览到ZFS的代码。 这就代表着我们不仅同时可以享受商业公司的高质量,也可以获得开源模式的优点。

  虽然目前只有Solaris支持该文件系统,但是这种开源的模式必定会促进更多基于ZFS的应用。现在已经有国外开发者正在将ZFS移植到
Linux和Mac OS上来。如果想要体验一下ZFS,由于目前它和Solaris 10绑定在一起

抱歉!评论已关闭.