分类:
2010-01-20 09:57:20
浅谈ZFS Hybrid Storage Pools
被称作“史上最后一个文件系统”的ZFS,作为Solaris 10和OpenSolaris的新特性引进后,吸引了开源社区里无数人的关注,Linux之父Linus Torvalds公开表示对Solaris软件的ZFS(Zettabyte文件系统)特别感兴趣,苹果公司也宣称Mac OSX采用ZFS文件系统。从OpenSolaris 2008.05发布版开始,SUN在ZFS中引进了对Intel® High-Performance Solid State Drives (SSDs)的支持,提供混合存储池(Hybrid Storage Pools),本文将对此进行介绍。
1. 什么是SSD?
SSD即固态硬盘(solid state disk),SSD由控制单元和存储单元(FLASH芯片)组成,简单的说就是用固态电子存储芯片阵列而制成的硬盘。闪存设备记忆数据不需要电源,而且读写数据的速度非常快,就像 DRAM一样。随着全球电价上涨,以及海量数据存取速度的需求,SSD越来越被看好。
以下是SSD、HDD的存取速度、单位造价和耗电量的对比,IOPS 即Input/Output Operations PerSecond。
SSD:7000 write IOPS, 35000 read IOPS, $2/GB ,15-20w
HDD:180 write IOPS, 320 read IOPS ,$30/GB,2.5w
2. 改进存储系统的动机
计算机系统设计的黄金法则——加快经常性事件(make the common case fast),道理十分明显,使经常性事件的处理速度加快能明显提高整个系统的性能。遵循大师们提出的这一准则,RISC、RAID等大批技术横空出世。前辈们屡试不爽的准则,在ZFS的创新过程中,又一次得到成功验证。
随着多核技术的发展,特别是服务器端多核技术的广泛应用,磁盘存取速度的增长远远跟不上处理器处理速度的增长,整个系统的性能越来越拖累于慢速的磁盘。同时服务器端海里数据存取,产生的大量磁盘操作已经成了经常性事件。磁盘访问已经成为系统的瓶颈,而且数据中心大量磁盘产生的电费也是一笔不菲的成本。
SUN的ZFS+SSD解决方案
解决上述问题有以下一些方案
增加内存缓存一些数据来提高数据存取性能,但是存储容量的增长速度远高于内存容量的增长,并且代价十分高昂。
利用闪存比DRAM便宜且存取速度相当,将闪存设备作为另一层级的存储器引进数据中心。但这会出现转换成本或操作成本,使数据中心产生新的成本开支,面临新的管理纷争。
可见以上方案均不是很合理,那么如何实现高性能、低能耗、对用户和操作者透明的解决方案呢?答案就是SUN ZFS+SSD混合存储池。
使用少量高速SSD作为内存与磁盘的缓存,将经常使用的数据放到快速的缓存,加快了访问速度,同时保留了HDD的大容量存储能力。同时ZFS对SSD进行了无缝整合,可以把SSD作为文件系统的二级缓存(L2 ARC)以及ZIL(ZFS Intent Log),自动优化系统充分利用快速SSD提供系统读写吞吐率。
ZFS+SSD的体系结构
(1).Read/Write Cache Pool:ZFS利用主存和SSD作为自动伸缩缓存(Adaptive Replacement Cache),并能检测访问模式
(2).ZIL(ZFS Intent Log) Pool:ZFS一般使用NVRAM,SSD(Solid State Disk)作为 ZIL存储池。ZFS是事务型文件系统,对于同步写操作,ZFS为系统中每一个ZFS文件系统维护一个ZIL。同步写操作的数据会先写入ZIL,并且会把磁盘的write cache的数据同步到磁盘上,然后应用的写操作返回。当文件提交命令发生时,ZFS会把ZIL里该文件的数据同步到磁盘上。
(3).DISK Pool:ZFS利用disk pool为文件系统自动分配HDD空间
3. 总结
ZFS文件系统是对传统文件系统的一次革命性的创新设计,ZFS解决了文件系统的完整性、安全性和可伸缩性以及管理困难等重要难题。ZFS文件系统是世界上第一个128位的文件系统,其存储容量和文件数量几乎只受硬件的限制,增加了混合存储池后ZFS功能将更强大,心动了吧,赶紧去装个 OpenSolaris体验下吧!