Copyright © 2009, The e. Publishing Dept. of Morpho Studio (Spruce Int. Found.® ) All rights reserved.

首先,为什么我推介ZFS,因为ZFS 是在OS内核(最初是Solaris,现在也用于Linux)中实现的真正的廉价磁盘阵列的软件解决方案。
用ZFS你根本没必要买自己带大容量缓冲内存和后备电池的阵列卡,上几块普通的4/8端口3G/6G速率接口的SAS控制卡就可以了。(ZFS 的动态条带设计不怕意外掉电。)
比如:
四个SAS接口的:LSI SAS 3041E-R (阿里巴巴有商家报570块1/片,IT168 的报价是700)
八个SAS接口的:LSI SAS 3081E-R (阿里巴巴有商家报680块1/片,IT168 的报价是1200)
Adapter 也有类似的产品。

当然,软件实现和硬件比肯定有性能差距,于是ZFS就设计了使用系统内存作为第一级ZFS 缓存(ZFS ARC ),这个参数是可调整的,通常设置最高值为内存容量的1/4.
//ARC: 
adaptive replacement cache 

因为ECC的大容量内存价格很高,所以不是所有公司都舍得给服务器配上几十G内存的,所以SUN 的ZFS项目团队又设计了用SSD作为ZFS二级缓存的功能(ZFS L2 ARC ),SSD相对于内存来说存储成本低廉的多!
就实际的产品:
Intel x25 系列闪存芯片的SSD 80G的现在是2500块左右,HP官网上报的15K 6G接口速率的SAS 打底300美金1块,单块SAS 和SSD的IOPS性能差距是相当可观的。当然,我们也不能完全以IOPS论事,但是应用SSD将极大的缓解磁盘性能这个系统瓶颈!

SUN 的ZFS SSD混合存储方案的核心理念是:
根据系统工作数据集的大小来选择使用的SSD数量,保证有足够的存储空间(比如300到500G或更多)使得工作数据集都可以加载到ZFS的数据缓存即SSD上,以达到工作数据集的高I/O 性能。然后,对于非工作数据集,比如备份,可以使用更为廉价的SATA来代替价格较高的SAS,这样一来总体上相同的高 I/O性能要求下,混合存储的磁盘整列的总体拥有成本反而会低于全部使用SAS或SCSI 硬盘的阵列,设计的磁盘(阵列)性能要求越高,SSD混合存储的成本优势就越明显。
//SAS接口是向下兼容SATA的,主要区别是SAS硬盘上的磁盘数据 接口是原生双通道的,即一块SAS硬盘可以连接到两个不同的SAS磁盘控制器接口来实现数据链路的冗余,而SATA是单通道的

现在SSD的产品多数都是至少3年保的,比如金士顿的SSD-Now M系列和Intel自己品牌的产品。而且ZFS 文件系统本身是基于存储概池的概念建立的,ZFS天生的优点就是往存储池中添加或替换设备的操作非常便捷,如果设备支持热插拔,更换磁盘设备就不需要停机。

ZFS 很快会出RAIDZ3模式,即一组磁盘阵列中存储3份奇偶校验数据,简单的说就是至少有3块磁盘是校验盘,一组由6到7块盘的阵列里,有3块盘同时失效的几率是很低的。同时ZFS存储池也可以很方便的设置在线热备用盘,自动替换存储池中的故障磁盘。

另外ZFS的校验回写机制本身具有自动修复并转储发生交验错误的数据区块的能力,SSD本身设计也是尽量平均各个闪存芯片数据块的擦写次数,避免单个芯片过于频繁写入而提前于整块盘的设计寿命被损坏,SSD的内部设计本身,就是一个闪存芯片组成的存储阵列。就算个别闪存芯片失效, 也不会造成整块盘的失效,如果有足够的完好的校验数据,丢失的数据完全能够恢复,并且数据的恢复基本都是自动的。

个人认为RAIDZ3 的冗余等级就算针对SSD教常规硬盘较容易受损的问题而设计的。随着闪存技术的发展,闪存的可靠性(包括最大写入次数)会不断得提高,最终达到大家都能接受和消费得起的最短寿命。

另外ZFS其实也有raid 10 模式,出于性能考虑建议使用整块盘而不是分区作为存储池的成员设备,所有类似raid10的ZFS存储池配置至少需要4块盘。
//就数据库应用而言,4块盘mirror( 即raid 1) 配置的ZFS 存储池综合性能优于4块盘的raidz(即raid5),
而raid 10的配置似乎是比较理想的折中方案。

正如我刚刚提到的4块盘mirror( 即raid 1) 配置的ZFS 存储池方案,如果对SSD实在不放心可以做多几组镜像。我们知道Windows磁盘管理器中软件raid 1 的磁盘数只有2块,即1份镜像,但是ZFS没有这个限制,你可以将3块/组 乃至更多的磁盘配置为一个raid 1阵列。你也可以将两组或多组raidz(相当于raid5)或raid2(想到于raid6)配置为raid0或raid1模式作为一个单独的存储池。再复杂的陈列配置也只需要一句命令就可以完成,所以说ZFS 存储池的磁盘阵列模式配置相当灵活和简便,即使使用了SSD作为池的成员设备也不例外。

综上所述,我认为ZFS SSD混合存储的可靠性是值得信赖的。

另外SSD也未必只是用于配置为ZFS 的二级缓存或ZFS 的日志设备,ZFS 的L2 ARC Cache也不是只能使用SSD,L2 ARC Cache 可以看做是ZFS 专用的虚拟内存,就像在Windows系统上一样,我们都建议尽可能将虚拟内存文件配置到性能较高的磁盘上。对于UNIX和linux系统的swap 和tmp 也是一样的建议。

当然,对于国内的用户似乎应用Solaris X86 OS 的比较少,大多还是使用的Windows系统,所以我也期待微软能早日发布和SUN ZFS 一样易用的用于MS Windows OS 的 SSD混合存储实现,至少目前最新的Windows 系统对SSD的支持还不够好。

另外希捷和日立的固态混合硬盘个人认为有望取代2.5" 10K 的SAS 希捷500G的才900块,带64M cache 和4GB SLC NAND。SSD缓存功能是在控制芯片内实现的,对操作系统无特定要求!


目前基于ZFS和opensolaris内核的免费版的 NexentaStor 存储服务器系统是一个非常成熟的ZFS存储服务器平台。已经更新到3.04版,并将可管理的数据量限制放宽到18TB,记得1年前的2.x版本只有4TB。提供Web GUI 管理界面,其中CIFS(samba)服务可以加入Server 2003 和2008 R2的AD,进行AD用户共享权限验证和管理。大家可以尝试一下。